Помогите со смарти создать условие
Всем привет.
Помогите гуманитарию :). Хочу убрать каноникал со страницы фильтров. Конструкция в шаблоне есть просто для проставки каноникал
{if !empty($canonical)}
<link rel="canonical" href="{$canonical} "/>
Выражения условий тоже есть
{if $wa->currentUrl()|strstr:"sort"}....{/if}
{if $wa->currentUrl()|strstr:"price_min"}....{/if}
{if $wa->currentUrl()|strstr:"price_max"}....{/if}
Как это все соединить, что бы на страницах сортировок каноникал пропал, а на всех остальных остался.
2 ответа
Сейчас на странице сортировки и фильтрации в категории каноникал такой же как URL категории или там образуется нечто иное?
Там сейчас урл категории, ничего иного не образуется.
Хочу вообще убрать со страниц фильтрации этот атрибут. Собственно, чего и создал тему, бо сам не осилю смарти прописать правильное условие.
Фильтры у вас на ajax? Или с перезагрузкой страницы?
с перезагрузкой
решение в лоб, использовать этот плагин
фигня это, а не плагин. стоит - ничего на работает, галки как не ставь - результат "как и было". Саппорт тоже феерический http://joxi.ru/eAOzYPQTxa78J2
при том, что фукнционал пагинации заявлен в описании плагина
еще бы условие для страниц пагинации ?page= с каноникал саму на себя было бы вообще круто )
В index.html
{if $action =='category' && !empty({$wa->get("page")})}
{$canonical = $wa->domainUrl()|cat:$wa->currentUrl()}{/if}
{if !empty($canonical)}<link rel="canonical" href="{$canonical}" />{/if}
Только, если на странице пагинации в категории есть правильные link prev и next, то таким "левым" каноникалом лучше наверное не баловаться.
Если по теме основного вопроса, то все ключи сортировки - это суть get параметры и при положительной проверке на {if !empty({$wa->get("ключ сортировки")})} обнуляйте каноникал. Получится конечно куча-мала в index.html, если ключей много, но работать будет.
С точки зрения СЕО вы хотите странных вещей, но хозяин - барин, если контент страниц пагинации + мета отличаются друг от друга, то пусть будут каноникалами сами в себе. Если нет, то Яндекс дубликаты все равно выбросит. Чтобы не выбросил надо хотя бы вот такие вещи делать {$wa->title("`$titleplus` Страница `$wa->get("page")`.")} ну и с дескрипшеном подобное тоже провернуть или вообще пагинацию отдавать по отдельным URL с собственными мета, описанием, h1 и каноникалами.
Да, у меня разные тайтлы, дескрипшены, Н1 на всех страницах пагинации. Собственно чего и весь сыр-бор с каноникал затеял.
Хочу уточнить по основному вопросу. Конструкция должна быть такая? И чем заканчиваться :)
{if !empty({$wa->get("sort")})}
{if !empty({$wa->get("price_min")})}
{if !empty({$wa->get("price_max")})}
Например вот так. Надо же "обнулить" каноникал, вот и убиваем его значение, если условие на включенный фильтр выполняется.
{if !empty({$wa->get("sort")}) || !empty({$wa->get("price_min")}) || !empty({$wa->get("price_max")})}
{$canonical = ''}
{/if}
{if !empty($canonical)}<link rel="canonical" href="{$canonical}" />{/if}
Комбинаций можно много придумать. Товарные страницы обрабатывать как $smarty.server.REQUEST_URI == "`$wa->shop->productUrl($product)`", пагинацию превращать в каноникал и т.п. Просто будет цепочка условий и все.