Вопрос по pdoTitle
Очередно аудит сеошников ругался на дублирование контента или излишне суровые правила robots.txt по индексации, если вырезаем все страницы пагинации, поэтому решил реализовать человеческий title для пагинации.
В голове была мысль, что есть pdoTools, там все уже есть, но не тут то было.
На удивление документация по pdoTitle немного скудная и немного неактуальная:
RegisterJS по умолчанию уже 0, хотя в документации еще стоит 1.
Чанк для тайтла страниц пагинации выглядит как @INLINE [[%pdopage_page]] [[+page]] [[%pdopage_from]] [[+pageCount]]
Выдает *pagetitle / стр 2 из 2 + выборку crumbs, если не выключить через limit.
Так вот вопрос, где можно кастомизировать %pdopage_page и %pdopage_from?
Так же где можно изменить pagetitle на мой собственный TV, например *meta_title?
Пробовал ?titleField=`meta_title`, показывает все равно pagetitle.
В голове была мысль, что есть pdoTools, там все уже есть, но не тут то было.
На удивление документация по pdoTitle немного скудная и немного неактуальная:
RegisterJS по умолчанию уже 0, хотя в документации еще стоит 1.
Чанк для тайтла страниц пагинации выглядит как @INLINE [[%pdopage_page]] [[+page]] [[%pdopage_from]] [[+pageCount]]
Выдает *pagetitle / стр 2 из 2 + выборку crumbs, если не выключить через limit.
Так вот вопрос, где можно кастомизировать %pdopage_page и %pdopage_from?
Так же где можно изменить pagetitle на мой собственный TV, например *meta_title?
Пробовал ?titleField=`meta_title`, показывает все равно pagetitle.
Комментарии: 14
Можно было бы отправить вас знакомиться с лексиконами, но попробуйте так:
@INLINE Текущая страница: [[+page]], всего страниц: [[+pageCount]]
%pdopage_page — определены в лексиконе?
Посмотрев стандартный вывод, я понял что такой вариант выдаст мне «Текущая страница: стр 1, всего страниц: 2.
Я не могу решить вопрос использование кастомного tv параметра *meta_title в pdoTitle.
Посмотрев стандартный вывод, я понял что такой вариант выдаст мне «Текущая страница: стр 1, всего страниц: 2.
Я не могу решить вопрос использование кастомного tv параметра *meta_title в pdoTitle.
&titleField=`[[*meta_title]]`
Это предположение или Вы использовали tv в вызове pdoTitle?
Потому что у меня при вызове
[[!pdoTitle?limit=`1`®isterJs=`1`&titleField=`meta_title`]] < — в скобка и без пробовал.
Выдает тайтл «Array».
посмотрел в сниппет, скорей нужно писать именно без скобок, так как относительно использования по умолчанию там фигурирует такой код
Потому что у меня при вызове
[[!pdoTitle?limit=`1`®isterJs=`1`&titleField=`meta_title`]] < — в скобка и без пробовал.
Выдает тайтл «Array».
посмотрел в сниппет, скорей нужно писать именно без скобок, так как относительно использования по умолчанию там фигурирует такой код
if (empty($titleField)) {$titleField = 'longtitle';}
Предположение.
longtitle — дефолтное поле любого ресурса, поэтому оно «получается» в коде вкупе с получением запроса о самом ресурсе.
Тв-полей же может быть бесконечное множество и, так как они хранятся в отдельной таблице, по умолчанию они не подцепляются к ресурсу (чтобы не плодить лишних запросов). Не говоря уже о том, что в вашем варианте сниппет не может знать, откуда ему взять это значение — из тв или из встроенных полей ресурса (к примеру, вы можете создать тв-поле pagetitle).
longtitle — дефолтное поле любого ресурса, поэтому оно «получается» в коде вкупе с получением запроса о самом ресурсе.
Тв-полей же может быть бесконечное множество и, так как они хранятся в отдельной таблице, по умолчанию они не подцепляются к ресурсу (чтобы не плодить лишних запросов). Не говоря уже о том, что в вашем варианте сниппет не может знать, откуда ему взять это значение — из тв или из встроенных полей ресурса (к примеру, вы можете создать тв-поле pagetitle).
Все TV-поля всегда подтягиваются к ресурсу в момент загрузки именно этого ресурса. Именно поэтому нет разницы между *pagetitle и *tv_name_value. В случае выборки коллекции ресурсов, там да, tv не подтягиваются автоматом.
Речь, само собой, шла о вызове параметров желаемого ресурса внутри сниппета методами api.
К слову, если вариант с [[*meta_title]] все же не подойдет, то в вашем примере нужно будет как минимум подключить тв поле через параметр &includeTVs и уже тогда попробовать вариант с &titleField=`meta_title` или с &titleField=`tv.meta_title`.
В вашем случае логика будет такой:
[[*meta_title:default=`[[!pdoTitle?limit=`1`®isterJs=`1`&titleField=`pagetitle`]]`]]
meta_title — это TV. Если значение для страницы задано, используется оно. Если нет, вступает в игру генератор pdoTitle, который уже генерирует по вашему шаблону нужную строку. Как поменять [[%something]] вам уже ответили, это лексиконы.
Не совсем то, что я хочу сделать.
нужно чтобы pdoTitle использовал в работе tv.meta_title в поле titleField, чтобы он строил для пагинации заголовки вида
*meta_title — страница 1… страница n
нужно чтобы pdoTitle использовал в работе tv.meta_title в поле titleField, чтобы он строил для пагинации заголовки вида
*meta_title — страница 1… страница n
Боюсь, в таком случае нужно править сниппет pdoTitle в той строке, что вы выше писали. Так как в коде он получает только поле ресурса методом get(), а чтобы получить TV, нужно добавить метод getTVValue().
А, вот какой метод нужен, спасибо, буду пробовать.
и касательно холи варов в топике про pdotitle основном, про rel=«next; prev», вполне компетентный сеошник сказал, что на всех страницах пагинации нужно делать meta name=«robots» content=«noindex, follow», чтобы товары на страницах пагинации индексировались, а сами страницы в индекс не попадали.
и касательно холи варов в топике про pdotitle основном, про rel=«next; prev», вполне компетентный сеошник сказал, что на всех страницах пагинации нужно делать meta name=«robots» content=«noindex, follow», чтобы товары на страницах пагинации индексировались, а сами страницы в индекс не попадали.
Так не пойдет:
<title>
[[*meta_title]] | [[pdoTitle? &tplPages=`@INLINE [[+page]] [[%pdopage_from]] [[+pageCount]]`]]
</title>
Добрый день!
Столкнулся с такой же надобностью, вы решили эту задачку, буду очень признателен если поделитесь решением.
Столкнулся с такой же надобностью, вы решили эту задачку, буду очень признателен если поделитесь решением.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.