Переписать пользовательские URL с помощью Joomla SEF - PullRequest
4 голосов
/ 24 октября 2011

Я пытаюсь обернуть голову вокруг переписывания некоторых внутренних ссылок в Joomla! 1.7 с включенными функциями SEF, но я не могу понять это:

Существует следующий SEF URL (пункт меню):

website.com / местные / амстердам

Я бы хотел следующее:

http://website.com/local/amsterdam/trends (не существует) оказывать http://website.com/local/amsterdam?show=trends при отображении первого URL-адреса.

Работа с .htaccess на следующих работах (но не показывает SEF URL):

RewriteRule ^local/amsterdam/trends$ index.php?option=com_content&view=article&id=14&Itemid=176&show=trends [L]

Но это не так:

RewriteRule ^local/amsterdam/trends$ local/amsterdam?show=trends [L]

Я надеюсь найти решение без использования идентификатора, чтобы он динамически отображал правильную страницу для всех городов. Буду признателен за любые мысли о том, как сделать это в .htaccess, а также за любые другие решения для достижения этой цели! Заранее спасибо.

1 Ответ

0 голосов
/ 26 октября 2011

Хотя я изначально искал решение для переписывания модов, я нашел способ добиться того же, модифицировав (основной) Joomla!router.

В строке 47 файла includes / router.php после:

$path = substr_replace($path, '', 0, strlen(JURI::base(true)));

я добавил следующее:

$subpages = array("trends","other"); //Add URL segments you want to reroute
foreach ($subpages as $subpage):            
     if (strstr($path, "/".$subpage)) :
          $path = str_replace("/".$subpage, "", $path);
          $vars['show'] = $subpage;
     endif;
endforeach;

Теперь при загрузке http://www.website.com/local/amsterdam/trends, этот URL отображается, когда страница http://www.website.com/local/amsterdam фактически загружена с параметром? show = trend.

Для меня это более гибкое решение, чем использование mod-rewrite, даже если основной файл изменен,Возможно, вы захотите использовать некоторые условные операторы, чтобы запускать этот код только в определенных условиях.Надеюсь, это поможет.

...