Настройка RealUrl для страниц новостей tt_news pagebrowser
Для того чтобы ссылки сайта выглядели красиво, то есть содержали вместо параметров id, tt_news более близкие человеку название категорий, страниц или разделов используется модуль RealURL speaking paths for TYPO3 (realurl). Это один из вариантов сделать ЧПУ в TYPO3, можно сказать, самый популярный. Настройка realurl, в принципе, производится по стандартным правилам и в сети даже есть готовые варианты конфигураций, которые можно позаимствовать. Тем не менее, иногда возникают ситуации, нюансы и неточности с которыми приходится разбираться. Сегодня рассмотрим одну из них.
На сайте про Готику 4 есть отдельный раздел под названием «Игровой блог», где публикуются разные новости компьютерных игр. Реализовано все с помощью плагина tt_news, на одной странице выводится список всех записей, на другой пост отображается полностью.
Ссылки на новости имеют вид:
http://gothic4.com.ua/blog/post/45.html http://gothic4.com.ua/blog/post/42.html |
Внизу страницы расположен браузер страниц tt_news, для которого в RealURL установлено правила отображения ссылок в таком виде:
http://gothic4.com.ua/gameblog/browse/1.html http://gothic4.com.ua/gameblog/browse/2.html |
Проблема, которая возникала — при переходе на следующие страницы игрового блога вместе с параметром ID для новости в RealURL «подхватывался» и номер страницы, в итоге получалось:
http://gothic4.com.ua/blog/browse/2/post/32.html http://gothic4.com.ua/blog/browse/2/post/31.html |
Это, во-первых, немного некрасиво и не логично, во-вторых, нехорошо для поисковых систем и индексации страниц. Как только новость попадала на следующую страницу ее URL сразу же менялся, что не есть гуд.
Пришлось потратить на изучение вопроса некоторое время, причем возникали странные непонятные нюансы и не состыковки. Перепробовал достаточно много различных типовых настроек RealURL в том числе с официального сайта, устанавливал разные версии экстеншена, но ничего не помогало, но в итоге все вышло.
Решение задачи
В базовой настройке RealURL для отображения записей tt_news прописывались исключительно через postVarSets
'postVarSets' => array( '_DEFAULT' => array( 'archive' => array( array( 'GETvar' => 'tx_ttnews[year]' , ), array( 'GETvar' => 'tx_ttnews[month]' , 'valueMap' => array( 'january' => '01', 'february' => '02', 'march' => '03', 'april' => '04', 'may' => '05', 'june' => '06', 'july' => '07', 'august' => '08', 'september' => '09', 'october' => '10', 'november' => '11', 'december' => '12', ) ), ), 'browse' => array( array( 'GETvar' => 'tx_ttnews[pointer]', ), ), 'select_category' => array ( array( 'GETvar' => 'tx_ttnews[cat]', ), ), 'post' => array( array( 'GETvar' => 'tx_ttnews[tt_news]', 'lookUpTable' => array( 'table' => 'tt_news', 'id_field' => 'uid', 'alias_field' => 'uid', 'addWhereClause' => ' AND NOT deleted', 'useUniqueCache' => 1, 'useUniqueCache_conf' => array( 'strtolower' => 1, 'spaceCharacter' => '-', ), ), ), array( 'GETvar' => 'tx_ttnews[backPid]', 'valueMap' => array( 'no_cache' => 0, ), 'noMatch' => 'bypass', ), array( 'GETvar' => 'tx_ttnews[swords]', ), ), ), ), |
После этих строк я добавил также директиву fixedPostVars.
'fixedPostVars' => array( '65' => array ( array( 'GETvar' => 'tx_ttnews[tt_news]', 'lookUpTable' => array( 'table' => 'tt_news', 'id_field' => 'uid', 'alias_field' => 'uid', 'addWhereClause' => ' AND NOT deleted', 'useUniqueCache' => 1, 'useUniqueCache_conf' => array( 'strtolower' => 1, 'spaceCharacter' => '-', ), ), ), array( 'GETvar' => 'tx_ttnews[pointer]', 'noMatch' => 'bypass', ), ), ), |
Здесь 65 — ID страницы где новости отображаются полностью, для параметра tx_ttnews[pointer], что отвечает за страницы указывается мол его нужно пропустить. Сохраняем после этого настройки RealURL, очищаем кэш.
Также нужно посмотреть параметры Alias и Speaking URL path segment в настройках страницы — все ли вам подходит как нужно. И, возможно, придется удалить старые значения ЧПУ через меню Web — Info. Выбираете корневую либо страницу новостей, в окне справа открываете Real URL Management, чуть ниже пункт Show ID-to-path mapping.
Лично у меня после изменений настроек страницы и очистки кэша новые значения URL страниц не всегда срабатывали, поэтому пришлось очищать предварительно старые в этом разделе меню. Потом также советую еще пару раз проверить работоспособность сайта и ссылок в разных браузерах дабы на 100% удостовериться в правильной настройки Real URL.