суббота, 21 сентября 2013 г.
RealURL. Установка и настройка.
Практически ни один TYPO3 проект не обходится без использования плагина - RealURL, который предназначен для генерации ЧПУ ("ЧеловекоПонятных Урлов"). Т.е. благодаря ему мы имеем на сайте "красивые" ссылки в виде http://www.domain.com/downloads/page/1/, а не в уродливом формате - http://www.domain.com?index.php=123&page=1.
Несмотря на то, что RealURL довольно прост в установке и конфигурации, тем не менее, многие мои друзья и знакомые испытывают определенные трудности при его использовании и стараются заменить его другим аналогичным плагином, например - CoolUri, или же обращаются ко мне за помощью.
Вот поэтому я и решил написать эту статью, целью которой является снять максимальное количество вопросов при использования этого замечательного плагина.
Итак, по пунктам:
1. Установка плагина RealURL
Для установки RealURL, как и для установки любого другого плагина TYPO3, нужно проделать следующие шаги, о которых лучше расскажут картинки:2. TypoScript
В главном TYPO3 шаблоне или в разделе Setup корневой страницы размещаем несколько дополнительных строк typoscript:
config {
simulateStaticDocuments = 0
tx_realurl_enable = 1
typolinkCheckRootline = 1
uniqueLinkVars = 1
baseURL = http://www.domain.com/
# или через переменную - domain, которая определена в разделе констант страницы
# baseURL = http://{$domain}/
}
3. .htaccess
RealURL работает не сам по себе. Его работа основана на апачевском модуле "mod_rewrite". Его наличие - обязательное условие и без него никак! Поэтому обязательно проверьте установлен ли он на вашем сервере. Для этого можно использовать функцию phpinfo(). Если же mod_rewrite присутствует в системе, то следующим шагом будет переименование файла в корневой директории сайта - "_.htaccess" в ".htaccess". Нужно заглянуть в этот файл и проверить не закоментированны ли такие строки:# Enable URL rewriting
RewriteEngine On
# Change this path, if your TYPO3 installation is located in a subdirectory of the website root.
RewriteBase /
Маленький нюанс. Помню, что когда-то работал с сайтом, который был расположен в подпапке "new", а не в корневой директории. Это заставило меня немного напрячься при настройке RealURL. А дело было в малом, нужно было изменить параметр RewriteBase:
# Прошу прощения если я не так поставил слэш. Уже не помню как правильно :).
# Попробуйте разные варианты и напишите!
RewriteBase /new
4. Базовая настрока RealURL
После того как плагин установлен, о чем говорит зеленая пиктограммка, нужно его сконфигурировать.В принципе, RealURL начинает работать сразу же после его установки в режиме автоконфигурации. Но я этот режим никогда не использую, ибо люблю, чтобы все настройки зависили только от меня. Автоконфигурацию я оставляю только в случае очень простого сайта - с одним языком, без плагинов и других наворотов. Во всех остальных случаях я использую только ручную настройку RealURL. Думаю, что именно этот этап и отпугивает всех желающих установить этот плагин на своем сайте. И напрасно, не так страшен чёрт как его малюют.
Итак, для ручной настройки RealURL направляемся в папку typo3conf. Удаляем или переименовываем файл автоматической конфигурации - realurl_autoconf.php. Создаем новый файл конфигурации - realurl_conf.php. Скопируем в этот файл базовые настройки:
<?phpЗдесь я жирным выделил наиболее важные параметры которые нужно менять каждый раз, в зависимости от потребностей проекта. Выделенное красным цветом рассматривается ниже. Все что касается мультиязычных параметров, то они подробно описаны тут, а об особенностях настройки 404-й страницы можно почитать в этой статье.
$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'] = array(
'init' => array(
'enableCHashCache' => 1,
'appendMissingSlash' => 'ifNotFile',
'enableUrlDecodeCache' => 1,
'enableUrlEncodeCache' => 1,
'respectSimulateStaticURLs' => 0,
'postVarSet_failureMode'=>'', // необходимо для работы error 404 ),
'redirects_regex' => array (
),
'preVars' => array(
array(
'GETvar' => 'no_cache',
'valueMap' => array(
'no_cache' => 0,
),
'noMatch' => 'bypass',
),
array(
'GETvar' => 'L',
'valueMap' => array(// необходимо для мультиязычных сайтов
'ua' => '0', 'ru' => '1', /*'en' => '2', 'de' => '3',*/ ),
'noMatch' => 'bypass',
),
),
'pagePath' => array(
'type' => 'user',
'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
'spaceCharacter' => '-',
'languageGetVar' => 'L', // необходимо для мультиязычных сайтов 'expireDays' => 7,
//'segTitleFieldList' => 'name,username,tx_realurl_pathsegment,alias,nav_title,title',
'rootpage_id' => 1, // необходимо установить значение uid рутовой страницы сайта! ),
'postVarSets' => array(
'_DEFAULT' => array(
// tt_news archive parameters
'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',
)
),
), // tt_news categories
'category_name' => array (
array(
'GETvar' => 'tx_ttnews[cat]',
'lookUpTable' => array(
'table' => 'tt_news_cat',
'id_field' => 'uid',
'alias_field' => 'title',
'addWhereClause' => ' AND NOT deleted',
'useUniqueCache' => 1,
'useUniqueCache_conf' => array(
'strtolower' => 1,
'spaceCharacter' => '-',
),
), ), ),
// tt_news articles and searchwords
'article' => array(
array(
'GETvar' => 'tx_ttnews[tt_news]',
'lookUpTable' => array(
'table' => 'tt_news',
'id_field' => 'uid',
'alias_field' => 'title',
'addWhereClause' => ' AND NOT deleted',
'useUniqueCache' => 1,
'useUniqueCache_conf' => array(
'strtolower' => 1,
'spaceCharacter' => '-',
),
),
),
array(
'GETvar' => 'tx_ttnews[swords]',
),
),
),
),
'fileName' => array(
'defaultToHTMLsuffixOnPrev'=>0, // сделайте 1, чтобы все страницы заканчивались суффиксом .html 'index' => array(
'rss.xml' => array(
'keyValues' => array(
'type' => 100,
),
),
'rss091.xml' => array(
'keyValues' => array(
'type' => 101,
),
),
'rdf.xml' => array(
'keyValues' => array(
'type' => 102,
),
),
'atom.xml' => array(
'keyValues' => array(
'type' => 103,
),
),
),
),
);
?>
Хочу обратить внимание на параметр 'rootpage_id'. Не всегда корневая страница сайта имеет id равный 1! Поэтому обязательно проверяйте этот момент и устанавливайте верное значение. Для тех, кто еще не знает как узнать id страницы TYPO3 скажу, что есть несколько способов. Один из них - просто навести курсор мышки на иконку страницы или её название. Другой - заглянуть в свойства страницы:
5. Дополнительные настройки RealURL
Остановлюсь более подробно на 3-х моментах, требующих более "тонкой" настройки RealURL- Настройки для нескольких доменов
TYPO3 позволяет содержать несколько сайтов, а соответственно и несколько доменов, в рамках одной админки. Например, организация имеет свои филиалы, которые находятся в разных странах, каждый из которых имеет свой отдельный сайт. Скажем, украинский филиал имеет сайт - www.domain.ua, а немецкий - www.domain.de.
В таком случае realurl_conf.php будет иметь 2 ветки настроек.
Для начала, обратите внимание, что первая строка конфигурационного файла сейчас выглядит так:
$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'] = array(...
Но мы можем заменить её на эквивалентную строку:
$TYPO3_CONF_VARS['EXTCONF']['realurl']['domain.ua'] = array(...
Аналогично, для другого домена просто создаем дополнительный блок настроек, который будет начинаться со строки:
$TYPO3_CONF_VARS['EXTCONF']['realurl']['domain.de'] = array(...
Таким образом, результирующий файл будет выглядеть примерно так:
$TYPO3_CONF_VARS['EXTCONF']['realurl']['domain.ua'] = array(... параметры ...);
$TYPO3_CONF_VARS['EXTCONF']['realurl']['domain.de'] = array(... параметры ...);
или так:
$TYPO3_CONF_VARS['EXTCONF']['realurl'] = array (
'domain.ua' => array (
........
)
'domain.de' => array (
........
)
); - Настройки для sitemap.xml
Для sitemap.xml в TYPO3, как правило, создают отдельный тип страниц, например type=200. Т.е. содержимое sitemap.xml можно увидеть по адресу - http://www.domain.com?type=200. Для того, чтобы карту сайта можно было получить по традиционному урлу - http://www.domain.com/sitemap.xml необходимо внести небольшие изменения в секцию 'fileName' файла realurl_conf.php (после секции "atom.xml", например):
'sitemap.xml' => array(
'keyValues' => array(
'type' => 200,
),
),
- Настройки под конкретный плагин
Теперь самое интересное. Все видели какие урлы генерируют плагины. Ну, например:
http://www.domain.com/downloads?tx_myplugin_pi1[feusersUsername]=2
Сегмент урла - tx_myplugin_pi1[feusersUsername]=2 выглядит ужасно. Допустим, что его задача указать плагину на какого-то зарегистрированного на сайте пользователя, имеющего в таблице fe_users uid=2. Приведем url к "нормальному" формату:
http://www.domain.com/downloads/username/stepan/
Для этого в realurl_conf.php в секции 'postVarSets', внутри '_DEFAULT', добавим следующие строки:
'username' => array (
array (
'GETvar' => 'tx_myplugin_pi1[feusersUsername]' ,
'lookUpTable' => array (
'table' => 'fe_users',
'id_field' => 'uid',
'alias_field' => 'name',
'addWhereClause' => ' AND NOT deleted AND NOT hidden',
'useUniqueCache' => 1,
'useUniqueCache_conf' => array (
'strtolower' => 1,
'spaceCharacter' => '-',
),
),
),
),
Если вдумчиво поглядеть в эти "магические" строки, то можно понять как RealURL выполняет замену и подстановку параметров. Правильно! Он делает запрос к таблице fe_users, ищет строку с uid=2, и берет значение поля name. После выборки имени пользователя его имя переводится в нижний регистр, а все пробелы заменяются знаком '-'. Вот и всё!
Если вы посмотрите на мои базовые настройки RealURL, то увидите аналогичный блок, который я выделил курсивом - 'article' => array(... Эти директивы делают абсолютно тоже самое, что и вышеприведенный пример. Только запрос делается к таблице базы данных - tt_news, а для алиаса используется значение поля - title.
Один из вариантов готового конфигурационного файла можно скачать с моего сайта - realurl_conf.
P.S. Для более детального знакомства с RealURL читайте мануал и также статью Дмитрия Дулепова.
Подписаться на:
Комментарии к сообщению (Atom)
О себе

- Вадим Гиркало
- Фрилансер, веб-разработчик сайтов на базе бесплатной, мощнейшей и очень гибкой CMS системы - TYPO3.
Мой сайт
Позвонить мне в Skype
TOP - 3
-
Как я уже писал в одной своей заметке ( SEO и общие рекомендации ), для сайта очень важно, чтобы при обращении к заведомо несуществующей ст...
-
Дорабатывая очередной свой сайт столкнулся с такой проблемкой. В шапке сайта есть две флэш вставки - банер, который вставлен через конструкц...
-
Несмотря на то, что материала по данной тематике вроде бы и достаточно, но весь он носит кусочно-латочно-разрозненный характер, что мешает б...
1 коммент.:
Добрый день! После установки и внесении необходимых изменений в Setup и .htaccess в ссылках остались только цифры от ID типа http://mydomain.ru/19 . Подскажите в чем проблема?
Отправить комментарий