Не могу не поделиться здесь очень интересной новостью, почерпнутой на страницах всеми любимого joomlaportal.ru:
Как из SEF-ссылки получить обычную в Joomla 1.7?
30.11.2011 | smartСтатьи и обзоры / Для разработчиков
В свое время была у меня задача — зная SEF-ссылку (для стандартного компонента SEF) получить оригинальную ссылку и надо признаться тогда я ее так и не решил. Однако недавно, изучая класс JRouter, я нашел решение этой задачи. Даже как-то обидно стало, что тогда не решил.
А решается задача проще простого:
Code:
<?php
// SEF-ссылка
$url = 'http://www.site.ru/index.php/using-joomla/parameters';
$uri = JURI::getInstance($url);
$app = & JFactory::getApplication('site');
$router = & $app->getRouter();
// массив переменных запроса
$vars = $router->parse($uri);
$parts = array();
foreach($vars as $k => $v) {
$parts[] = $k . '=' . $v;
}
// оригинальная (не SEF) ссылка
$nonSefUrl = JURI::base() . 'index.php?' . implode('&', $parts);
?>
Однако следует обратить внимание, что если вам требуется получить какие-то параметры из текущей ссылки, данный код будет работать только при условии, что событие onAfterRoute уже вызвано!
Когда-то ведь тоже копал эту проблему... но не хватило терпения до ума довести. Надеюсь, теперь Вам пригодится эта публикация!