Jump to content

Используем теги товара на полную мощность


Recommended Posts

В Prestashop имеется, но практически не используется такой мощный инструмент, как теги. Даже если забить во все товары все подходящие теги, эффект от этого будет равен нулю, потому что эти теги никак не будут фигурировать ни в перелинковке для продвижения сайта, ни в навигации по магазину.

 

Конечно можно настроить поиск так, чтобы их учитывать, но это как на мерседесе по деревне... поэтому сегодня мы этот косяк пофиксим.

 

Способ разработан и опробован на версии 1.2.5, но я не думаю, что более новые версии (по крайней мере до 1.4) сильно отличаются,так что скорее он заработает и у вас. Для владельцев 1.5 этот способ не подойдет точно, но для вас наверняка существует сторонний плагин в виде модуля.

  • Маленький дисклаймер: я только начинаю осваивать php/html5/css3, поэтому вполне возможно, что где-то можно было применить более простое или более красивое решение. Буду благодарен за поправки и особенно — за комментарии почему именно так будет лучше. Опытный программист увидит в коде "расово верные" куски — это мне помогал мой друг :)

1. Для начала выведем на странице товара теги, назначенные именно этому товару.

Для этого в файле {theme_dir}/product.tpl вставьте код:

<!-- теги -->
{if $product->tags}
<div class="tags">
{foreach from=$product->tags[3] item=tags}
<a class="tag" href="{$base_dir}tags.php?tag={$tags|urlencode}">{$tags}</a>
{/foreach}
</div>
{/if}

  • В tags[3] вместо тройки вставьте id языка своего магазина. Почему-то из хука он не подтягивается, буду благодарен за указание причины.

Вставьте этот код в любом логичном для навигации месте и оформите ".tag" в global.css в соответствии с вашим дизайном. У меня получилось так:

 

ygjv.jpeg

Edited by gluck (see edit history)
Link to comment
Share on other sites

В текущей ситуации при нажатии на ссылку с тегом сервер вернет вам ошибку — нашу ссылку некому обрабатывать. Поэтому если вы не хотите продолжать дальше, измените код

href="{$base_dir}tags.php?tag={$tags|urlencode}"

на код

href="{$base_dir}search.php?tag={$tags|urlencode}"

В этом случае будет работать встроенный в движок, извращенный способ поиска по тегам. Какие-то товары он найдет, но вовсе не те, которые хочет найти клиент. Поэтому мы перейдем ко второй части.

 

2. Напишем новый способ поиска товаров с указанным тегом.

Из приложенного архива скопируйте файлы:

  1. tags.php — в корневую директорию вашего магазина. Установите на него права 755.
  2. tags.tpl — в директорию вашей темы. Установите на него права 744.

 

Откройте tags.tpl и измените порядок вывода в соответствии с вашим дизайном. В принципе все, что вам нужно, содержится в

<h2>«{$query}»: {$nbProducts} {l s='Products'}</h2>

и больше там нет ничего интересного. Вы можете изменить последовательность и логику вывода так, как считаете нужным.

 

Далее зайдите в "Инструменты / Перевод / Фронт-офис" и отредактируйте поля

  1. Product tags
  2. Products
  3. No products with this tags

так, как вы считаете нужным.

 

 

У меня получилось вот так:

ygsb.jpeg

tags.zip

Edited by gluck (see edit history)
  • Like 1
Link to comment
Share on other sites

Для 1.5 то что связано с поиском по тегам не нужно, стандартный поиск точно по тегам ищет, если требуешь от него поиск по тегам.

Link to comment
Share on other sites

Поиск-то ищет, но в 1.5.3 точно реализован функционал, который ты привёл выше под номером 2... примерно по такому формату: /search?tag=тэг и он ищет только по тегу.

Link to comment
Share on other sites

  • 6 months later...

Сделал как написано - все получилось, НО:

Есть косяк который меня реально расстроил:
 
 
если  нажать на серию у бра - то он выведет не только ее серию но и все
похожие на 2 начинающиеся
то есть не четкое соответствие получается
то есть не везде работает идея с серией
где нет цифр а серия в виде названия -все прекрасно - где есть цифры то есть серия отличается только цифрой на конце начинается полная ерунда! Как можно поправить и сделать точное соответствие без вариантов поиска похожих?
Link to comment
Share on other sites

В первом приближении кажется, что косяк происходит, когда вы используете несколько тегов в одном запросе (тег1+тег2 итд).

Я настраивался только на один тег, но теоретически можно сделать так, чтобы поиск понимал и ваш запрос с несколькими. Только я этого сделать не смогу — бо "сварщик ненастоящий" :)

Link to comment
Share on other sites

да нет - у меня только один тег у каждого светильника к сожалению - видимо так построен поиск - он ищет примерные варианты а не строгое соответствие - хотя может быть как то и можно всетаки строго заставить искать но я к сожалению в этом совершенно не разбираюсь

Link to comment
Share on other sites

Нет не остановился - мне нужно чтобы выдавался товар из этой серии на странице так же - но пока не могу найти того кто поможет это сделать ну и опять же если с тегами работать - нужно исправить и этот косяк который я описал

но пока не знаю как

Link to comment
Share on other sites

Ну вот я у вас вижу:

search.php?tag=Maytoni+Elegant+2

Это говорит о том что:

а) вы остановились на первом этапе: поиском занимается встроенный механизм, который ищет все что угодно, кроме того, что хотел клиент

б) вы заставляете магазин искать по ТРЕМ тегам сразу

Edited by gluck (see edit history)
Link to comment
Share on other sites

Мну кажется, вы не сделали вторую часть — не задействовали tags.php.

Потому что не обратили внимание на текст

=========

Поэтому если вы не хотите продолжать дальше, измените код

=========

И вместо tags.php у вас работает search.php.

Link to comment
Share on other sites

Не работал вариант 2

  весия prestashop 1.4.11.0

при выводе результата поиска пропадала правая колонка и footer

пока не изменил файл tags.tpl

добавил двойные кавычки

 

{capture name=path}{l s='Product tags'}{/capture}
{include file="$tpl_dir./breadcrumb.tpl"}

<h2>«{$query}»: {$nbProducts} {l s='Products'}</h2>

{if $products}
    {include file="$tpl_dir./product-sort.tpl"}
    {include file="$tpl_dir./product-list.tpl" products=$products}
    {include file="$tpl_dir./pagination.tpl"}
{else}
    <p class="warning">{l s='No products with this tags'}</p>
{/if}

Link to comment
Share on other sites

  • 2 weeks later...

Нет к сожалению так и не решено так как тупик наблюдается в дальнейших действиях

поиск так устроен что он ищет совпадения и находит их поэтому и выводится все то что похоже:

Вот пример (нажмите на серию и посмотрите что выдаст):

http://www.lustravik.ru/Bra/451-ARM215-02-G-Maytoni-Elegant-1-bra.html

Link to comment
Share on other sites

Так и должно быть. Родной поисковик Престы, которым вы решили пользоваться, ищет LIKE '%слово%', что и дает вам этот эффект с лишними цифрами. Вам нужно ковырять его.

Но я бы не стал этого делать, потому что тогда перестанет работать обычный поиск по ключевому слову юзера.

Link to comment
Share on other sites

В том то и дело что ковырять обычный поиск не стоит чтобы он нормально работал! А как решить вопрос вывода товара по тегам не используя поиск я не знаю

Link to comment
Share on other sites

В общем, из личного опыта:

способ 1 подходит полностью и работает (через встроенный поиск);

способ 2 у меня не заработал, магазин выдает ошибку 404. Так понимаю, что файл tags.php надо еще где-то добавить в настройках магазина (возможно и скорее всего, не через админку, а непосредственно вставкой в БД). Допускаю так же, что причина в ЧПУ, что сводится, опять же, к описанному ранее.

Но и через стандартный поиск пока вполне работает.

Link to comment
Share on other sites

привет всем. вопрос по тегам, даже два!

 

1. как сделать так, чтобы к каждому тегу можно было написать текст? (так же, как к категории например) и можно было менять title/h1 и мета теги? существует ли готовое решение?

 

2. как включить чпу в тегах? чтобы было не /search?tag=myTag, а /tag-myTag

 

спасибо!

Link to comment
Share on other sites

×
×
  • Create New...