Вопрос по 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.
SaLacoste
04 октября 2015, 12:50
modx.pro
1
2 687
0

Комментарии: 14

Илья Уткин
04 октября 2015, 20:24
0
Можно было бы отправить вас знакомиться с лексиконами, но попробуйте так:
@INLINE Текущая страница: [[+page]], всего страниц: [[+pageCount]]
    SaLacoste
    04 октября 2015, 20:53
    0
    %pdopage_page — определены в лексиконе?

    Посмотрев стандартный вывод, я понял что такой вариант выдаст мне «Текущая страница: стр 1, всего страниц: 2.

    Я не могу решить вопрос использование кастомного tv параметра *meta_title в pdoTitle.
      Максим Кузнецов
      04 октября 2015, 20:55
      1
      0
      &titleField=`[[*meta_title]]`
        SaLacoste
        04 октября 2015, 21:05
        0
        Это предположение или Вы использовали tv в вызове pdoTitle?
        Потому что у меня при вызове
        [[!pdoTitle?limit=`1`&registerJs=`1`&titleField=`meta_title`]] < — в скобка и без пробовал.
        Выдает тайтл «Array».
        посмотрел в сниппет, скорей нужно писать именно без скобок, так как относительно использования по умолчанию там фигурирует такой код
        if (empty($titleField)) {$titleField = 'longtitle';}
          Максим Кузнецов
          04 октября 2015, 21:08
          0
          Предположение.

          longtitle — дефолтное поле любого ресурса, поэтому оно «получается» в коде вкупе с получением запроса о самом ресурсе.

          Тв-полей же может быть бесконечное множество и, так как они хранятся в отдельной таблице, по умолчанию они не подцепляются к ресурсу (чтобы не плодить лишних запросов). Не говоря уже о том, что в вашем варианте сниппет не может знать, откуда ему взять это значение — из тв или из встроенных полей ресурса (к примеру, вы можете создать тв-поле pagetitle).
            Іван Клімчук
            04 октября 2015, 22:56
            0
            Все TV-поля всегда подтягиваются к ресурсу в момент загрузки именно этого ресурса. Именно поэтому нет разницы между *pagetitle и *tv_name_value. В случае выборки коллекции ресурсов, там да, tv не подтягиваются автоматом.
              Максим Кузнецов
              04 октября 2015, 23:00
              0
              Речь, само собой, шла о вызове параметров желаемого ресурса внутри сниппета методами api.
            Максим Кузнецов
            04 октября 2015, 21:11
            +1
            К слову, если вариант с [[*meta_title]] все же не подойдет, то в вашем примере нужно будет как минимум подключить тв поле через параметр &includeTVs и уже тогда попробовать вариант с &titleField=`meta_title` или с &titleField=`tv.meta_title`.
      Іван Клімчук
      04 октября 2015, 22:59
      0
      В вашем случае логика будет такой:
      [[*meta_title:default=`[[!pdoTitle?limit=`1`&registerJs=`1`&titleField=`pagetitle`]]`]]
      meta_title — это TV. Если значение для страницы задано, используется оно. Если нет, вступает в игру генератор pdoTitle, который уже генерирует по вашему шаблону нужную строку. Как поменять [[%something]] вам уже ответили, это лексиконы.
        SaLacoste
        04 октября 2015, 23:02
        0
        Не совсем то, что я хочу сделать.
        нужно чтобы pdoTitle использовал в работе tv.meta_title в поле titleField, чтобы он строил для пагинации заголовки вида
        *meta_title — страница 1… страница n
          Іван Клімчук
          04 октября 2015, 23:12
          0
          Боюсь, в таком случае нужно править сниппет pdoTitle в той строке, что вы выше писали. Так как в коде он получает только поле ресурса методом get(), а чтобы получить TV, нужно добавить метод getTVValue().
            SaLacoste
            04 октября 2015, 23:23
            0
            А, вот какой метод нужен, спасибо, буду пробовать.

            и касательно холи варов в топике про pdotitle основном, про rel=«next; prev», вполне компетентный сеошник сказал, что на всех страницах пагинации нужно делать meta name=«robots» content=«noindex, follow», чтобы товары на страницах пагинации индексировались, а сами страницы в индекс не попадали.
              Максим
              05 октября 2015, 10:00
              +1
              Так не пойдет:
              <title>
              [[*meta_title]] | [[pdoTitle? &tplPages=`@INLINE [[+page]] [[%pdopage_from]] [[+pageCount]]`]] 
              </title>
            Сергей
            30 октября 2017, 15:49
            0
            Добрый день!
            Столкнулся с такой же надобностью, вы решили эту задачку, буду очень признателен если поделитесь решением.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          14