Как найти URL не-SEF, пока включен SEF (Joomla 1.5)? - PullRequest
2 голосов
/ 13 июня 2009

Я знаю, что у вас, вероятно, не так много вопросов ...

Я работаю над компонентом, который я хочу иметь возможность работать с URL-адресами не-SEF, пока включен SEF, будь то встроенный SEF или что-то вроде sh404sef.

Сохраняет ли Joomla ОРИГИНАЛЬНЫЙ не-SEF URL в любом месте т.е. index.php? ком = com_fred & вид = домашняя страница

Я обнаружил, что любой активированный SEF меняет значение JURI :: getInstance () на эквивалентный SEF. Я также обнаружил, что значение $ REQUEST ['URI'] не работает на всех платформах / серверах и т. Д.

Спасибо за любую помощь

Ответы [ 6 ]

4 голосов
/ 28 октября 2012
  1. Получить все переменные из запроса GET/POST в массив. На этом этапе вы также можете изменить значения перед генерацией строки URL.

    $getVars = JRequest::get( 'GET' );
    
  2. Если вам действительно нужна строка URL, вы можете получить с помощью:

    $newURL = http_build_query($getVars);
    

Надеюсь, это поможет!

3 голосов
/ 24 сентября 2015

Я вернулся к этому коду и попытался снова, но дал мне несколько ошибок, поэтому я частично переработал его, основываясь на предыдущем ответе, который я сформулировал ранее с этим новым (хорошо работает на Joomla! 3.4.5)

// build the JInput object 
$jinput = JFactory::getApplication()->input;
// retrieve the array of values from the request (stored in the application environment) to form the query 
$uriQuery = $jinput->getArray();
// build the the query as a string
echo 'index.php?' . JUri::buildQuery($uriQuery);

Joomla! Документы API: JInput - JUri


ПРЕДЫДУЩИЙ ОТВЕТ: Погуглив вокруг Я нашел это :

<?php
  // "unparse" the Joomla SEF url to get the internal joomla URL
  JURI::current();// It's very strange, but without this line at least Joomla 3 fails to fulfill the task
  $router =& JSite::getRouter();// get router
  $query = $router->parse(JURI::getInstance()); // Get the real joomla query as an array - parse current joomla link
  $url = 'index.php?'.JURI::getInstance()->buildQuery($query);
?>

Я проверил это с Joomla! 3.4.4 и работает нормально! Не знаю, может ли он работать с 1,5

3 голосов
/ 06 апреля 2012

Вы можете использовать JRequest :: get (true), чтобы получить массив всех параметров запроса из URL. Короткое замечание, однако, я не проверил это достаточно, чтобы знать, возвращает ли он только параметры GET или все параметры REQUEST (что, я думаю, более вероятно) Однако это может помочь с тем, что вы ищете.

1 голос
/ 28 сентября 2009

Для пунктов меню он хранится в таблице 'jos_menu', в столбце 'link' (но itemid отсутствует в этой строке - это столбец 'id').

Для всего остального, он, вероятно, не хранится в базе данных, но обычно может быть довольно легко решен, особенно с основными компонентами. С сторонними компонентами может быть немного сложно, но вы можете просмотреть архитектуру MVC большинства компонентов, чтобы понять это.

В противном случае вы всегда можете отключить SEF на своем сайте разработчика / создать для этого сайт разработчика.

Есть ли конкретный компонент, который вас интересует?

0 голосов
/ 25 февраля 2012

Вам не нужно делать ничего особенного для URL, отличных от SEF. Даже если у вас включены SEF-URL, Joomla по-прежнему будет отображать правильную страницу, если кто-то заходит на сайт с не-SEF-URL. Часть вашего компонента, которая обрабатывает URL-адреса SEF, маршрутизатор, только сообщает Joomla, как использовать информацию URL-адреса для определения того, что отображать. Когда Joomla представлен с URL-адресом, отличным от SEF, он просто анализирует строку запроса, как обычно.

Для любого данного компонента URL-адрес строится так -

index.php? Вариант = com_name & вид = XXXX & ID = 1111 & Itemid = 11111

  • опция - имя компонента
  • вид, конечно, какой вид отображать
  • id - это идентификатор конкретного элемента контента
  • itemid - это пункт меню, который использовался для определения назначения модуля / шаблона
0 голосов
/ 24 февраля 2012

Ссылка, которую я разместил здесь: URL-адреса Joomla: статья сама по себе не имеет красивого URL-адреса?

обеспечивает очень хороший "ускоренный курс" для URL в Joomla 1.5

...