Как вы решаете проблему SEO пагинации на modx evo?

Приветствую!

1. Кто как решает проблему c rel next, prev, canonical в пагинации? Не нашел ни одного плагина в полной мере решающих эти проблемы.
2. Как можно определить будет ли отображена пагинация на странице(используется Ditto)? Т.е., например, в категориях где статей/товаров меньше 15 она не отображается.

21 комментарий

avatar
1 а зачем там плагин? решается снипетом if и плейсхолдерами Ditto а лучше DocLister

2 в Последних версиях автоматом так и работает если всего 1 страничка то не показывается пагинация
avatar
Когда 1 страница, то не показывает, это правильно. Но когда их несколько, то желательно ставить canonical на вывод всего содержимого (?display=all). Но вот как понять (не меняя код ditto) будет в шаблоне пагинация или нет?
А в идеале нужно в head добавлять rel next и rel prev.
avatar
Ниже подсказали как делать правильно на DocLister )
а на Дитто тоже можно через снипет иф и проверку плейсхолдеров :) но лучше Доклистер )
avatar
Ну так можно дойти до того, что с evo на revo придется переезжать…
Смысл переписывать пагинацию, фильтрацию и еще кучу кода которые нормально работают, если это можно реализовать на ditto.
За наводку на плейсхолдеры спасибо, завтра попробую.
avatar
Правильно давайте использовать дитто который морально устарел и для которого есть замена уже как 3-4 года.

Замечу что с версии 1.4.0 дитто не. По умолчанию в системе

А переписать с дитто на доклистер это 10-15 минут работы;)

Но да зачем же тратить 10-15 минут если можно за час решить тоже самое на дитто ;)
avatar
Вы просто не видели как написана пагинация и фильтрация с помощью этого модуля, там порядка 2000 строк php в перемешку c js завязанного на дито… там далеко не 15 минут)
avatar
Правильно тогда пишите сверху еще костылей для мета, в итоге с каждой итерацией будет все сложнее сделать по уму ;)
avatar
2. Как можно определить будет ли отображена пагинация на странице(используется Ditto)? Т.е., например, в категориях где статей/товаров меньше 15 она не отображается.

Обычный параметр display решает задачу.

1. Кто как решает проблему c rel next, prev, canonical в пагинации? Не нашел ни одного плагина в полной мере решающих эти проблемы.

Решать задачу самостоятельно, там дел то на час =)
avatar
display решает задачу
Может глупый вопрос но как? Как можно в шаблоне head через display узнать есть на странице пагинация или нет? Например, на странице, 3 ссылки на статьи и пагинация не отображается. Переменная display появляется только при смене кол-ва результатов на страницу, т.е. из url определить нельзя.
avatar
В DocLister параметр &paginationMeta=`1`
avatar
не нашел никакой информации по такому параметру. Добавил его в вызов DocLister — никаких изменений в коде не вижу. Он правда существует? И что он делает?
avatar
Он добавляет метатеги между
<head>...</head>
— нажмите Ctrl+U и увидите.
Комментарий отредактирован 2018-02-15 06:59:18 пользователем paic
avatar
В документации этого параметра нет. Если на странице есть пагинация, то этот параметр в head будет добавлять rel next prev
Комментарий отредактирован 2018-02-15 07:01:03 пользователем milkamil93
avatar
так в том то и дело, что не добавляет. Это с какой версии появилось?
Evolution 1.4.0.RC2
DocLister 2.3.11

Хотя Extras показывает версию DocLister ниже prntscr.com/if0n0j
avatar
снипет Canonical
<?php
$id = $modx->documentIdentifier;
if (isset($_GET['page'])){
$info=$modx->getPageInfo($id,'3226','alias');
echo '<link rel="canonical" href="http://site.ru/[~[*id*]~]" />';}
?>

3226- это id каталога (меняйте на свой)
вызов в шапке [[Canonical]]
используется для Doclister
avatar
Тогда уже

<?php
$id = $modx->documentIdentifier;
if (isset($_GET['page'])){
$url=$modx->makeUrl($id,'','','full');
return '<link rel="canonical" href="' . $url . '" />';}
avatar
Спасибо, но эти подходы не совсем верные. Google:
Пользователи часто предпочитают просматривать всю статью или категорию на одной странице. Вы также можете добавить атрибут rel=«canonical» на страницы, чтобы сообщить Google, что в результатах поиска следует отображать страницу — «Показать все».
Используя параметры url, когда пользователь находится на 1ой странице, нельзя определить есть ли еще страницы или она единственная в категории и тогда не следует делать canonical на показать все. Т.е.
site.com/category
site.com/category?page=2
<link rel="canonical" href="site.com/category?page=all" />
Здесь все ок, а в случае если страница в категории только одна site.com/category
<link rel="canonical" href="site.com/category?page=all" />
то так делать плохо.
avatar
Для меня совсем не проблема реализовать и такое, для DocLister, конечно. Но я что-то сомневаюсь, что пользователи предпочитают скроллить до упаду страницу с сотней-другой статей.
avatar
Тут все зависит от типа контента и его кол-ва. Понятно, что если страница будет грузиться секунд 10 и результатом будет простыня текста или сотни изображений от которых начнет лагать, то конечно так делать не стоит и лучше использовать rel next, prev. Но если это не так, то желательно делать ссылку на вывод всего содержимого.

Что я и пытаюсь сделать, но по get правильно сделать не получится, а как получить эти данные из ditto я не нашел.
avatar
Не понял, чем не устраивает код выше? В вашем случае это будет выглядеть так:
<?php
$id = $modx->documentIdentifier;
if (isset($_GET['page'])){
$info=$modx->getPageInfo($id,'3226','alias');
echo '<link rel="canonical" href="site.com/category?page=all" />';}
?>

Если нет второй страницы, то
<link rel="canonical" href="site.com/category?page=all" />
выводится не будет. Он будет отображаться на 2, 3, 4 и т.д страницах.
avatar
Спасибо. Все правильно, на страницах 2,3,4 будет
<link rel="canonical" href="site.com/category?page=all" />
а на первой странице нет, но в данном случае canonical должен быть на первой.
<link rel="canonical" href="site.com/category?page=all" />
не выводится на первой странице только в том случае, если всего одна страница в категории. С помощью переменных из адресной строки решить не получится.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.