Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
|
|
Опции темы | Опции просмотра |
28.12.2010, 13:27 | #1 |
Senior Member
|
Использование общей GET переменной (аналог L) только на отдельных ветках сайта
Широко известно использование GET-переменной L для многоязычных сайтов. При соответствующей настроке TYPO3 и передаче ее через GET она автоматически добавляется ко всем ссылкам на внутренние страницы.
В одном из проектов хочется сделать региональные версии сайта аналогичным способом. Через TS и RealURL (префиксная переменная) настроена переменная R, которая задает регион. Т.е. при входе на сайт по адресу example.com все ссылки будут example.com/... При входе через example.com/region1/ все ссылки будут example.com/region1/... Соответственно в зависимости от этой переменной на страницах выводится регионально ориентированный контент. Но есть одна проблема. Хочется что бы некоторые страницы не имели региональной привязки. Например, страница "контакты" (example.com/contacts/) не должна быть регионально зависимой, так как ее содержание не будет меняться в зависимости от региона. А дублирование этой страницы под разными адресами плохо для SEO. Нужно что бы ссылки и со страниц example.com/... и со страниц example.com/region1/... одинаково ссылались на example.com/contacts/ (а не на example.com/contacts/ и на example.com/region1/contacts/). Таких общих страниц и подразделов на сайте несколько. Как этого добиться? |
28.12.2010, 15:18 | #2 | |
Senior Member
|
Пока из вариантов нашел такую возможность в RealURL
Цитата:
|
|
29.12.2010, 10:16 | #3 |
Senior Member
|
а может быть сделать специфичное меню на сайте и определенное дерево страниц:
То есть, сделать такое дерево страниц: домашняя region1 region2 ... regionN contacts другие спец. страницы и дополнить основное меню специальным (special.list), в котором указать страницы - contacts (id) и т.п. либо использовать special.directory, где указать id текущей и id домашней страниц... Как-то так, додумывать нужно в процессе... При этом придется покопаться с меню, а пути будут формироваться нормально без каких-либо специальных настроек. Как-то так... Последний раз редактировалось Андрей Аксенов; 29.12.2010 в 12:38 |
29.12.2010, 12:57 | #4 |
Senior Member
|
Если делать дерево страниц, в котором есть region1, region2 и т.д., то придется дублировать в каждом регионе все дерево подразделов.
Этого не хочется - так как работа механическая, придется для каждого поддерева все id страниц в CE и FF ручками переписывать. Конечно у подхода есть и достоинства - например возможность кастомизировать дерево страниц для каждого региона. Но такой задачи у нас сейчас не стоит. То как сейчас работает в целом устраивает: 1. Если пользователь заходит на сайт без куки "регион", то его по GeoID редиректит на example.com/?R=XX 2. Он может выбрать регион - т.е. по сути сменить R=YY, при этом для него сохраняется кука "регион" Соответсвенно вся региональность завязана на GET переменную R. Ее можно использовать как в своих экстеншенах, так и в TS условиях для донастройки других экстеншенов. При этом не надо завязываться на id конкретных страниц в дереве. |
29.12.2010, 13:56 | #5 |
Senior Member
|
Так а id страницы с контактами известен? Почему бы не использовать TS condition чтобы настроить именно для этой страницы отображение без региональной переменной?
|
29.12.2010, 14:15 | #6 |
Senior Member
|
Этого и хочется! Как сделать?
|
29.12.2010, 14:25 | #7 |
Senior Member
|
В HMENU есть только опция protectLvar, которая делает то что нужно, только для L. Только все завязано на "Alternative Page Language record": если перевода нет, то ссылка формируется без на страницу без учета L.
То есть в TYPO3 не хватает еще одной опции для страницы "не учитывать переменные из config.linkVars". |
29.12.2010, 15:19 | #8 |
Senior Member
|
А если добавить condition по id старницы и обнулить там linkVars? Такое пробовали? Т.е. логика такова: поскольку linkVars указывает те get переменные, которые разрешаются для использования, то в случае прямого указания что ни одна не должна пройти Typo3 не должен пропустить в обработку ничего, кроме id страницы.
|
29.12.2010, 15:22 | #9 |
Senior Member
|
Не пробовал, но здравый смысл мне подсказывает что при этом ссылки с этой страницы будут без linkVars. А в ссылках на эту страницу с других ничего не поменяется.
|
05.04.2011, 19:36 | #10 |
Senior Member
|
Решение:
1. Настраиваем в linkVars нашу переменную R 2. Пишем экст, который добавит в pages поле ignore_region - "не учитывать R для это страницы", потом в BE ставим флаг для нужных страниц. 2. Используя хук encodeSpURL_postProc делаем следующее: PHP код:
Использование хука позволяет решать исходную задачу несколькими способами. |