0 Пользователей и 1 Гость просматривают эту тему.
  • 11 Ответов
  • 2864 Просмотров

У меня установлен Joomla ЧПУ.
В адресной строке, к примеру, отображается:
http://site.ru/content/view/53/37/
Мне нужно этот адрес получить программно для использования в своем пхп-скрипте. В переменной $_SERVER['REQUEST_URI'] лежит вот такая не проЧПУкнутая беда:
http://site.ru/index.php?option=com_content&task=view&id=53&Itemid=37

Подскажите плиз, как быть?
*

triode-master

  • Захожу иногда
  • 103
  • 12 / 14
что значит програмно??
*

Physicist

  • Глобальный модератор
  • 969
  • 190 / 0
  • Рябов Денис
sefRelToAbs($_SERVER['REQUEST_URI'])
« Последнее редактирование: 23.03.2007, 10:24:50 от Physicist »

Цитировать
что значит програмно??
ну, может неправильно выразился... т.е. в своем скрипте.

Цитировать
sefRelToAbs($_SERVER['REQUEST_URI'])
нету такой функции  ????
есть sefAbsToRel, но это не то...
*

Physicist

  • Глобальный модератор
  • 969
  • 190 / 0
  • Рябов Денис
Тогда я не понял, что во что тебе нужно преобразовать. Если "http://site.ru/index.php?option=com_content&task=view&id=53&Itemid=37" в "http://site.ru/content/view/53/37/", то достаточно вызвать sefRelToAbs(...), а если наоборот, то нужно начало файла /includes/sef.php оформить в виде функции и обращаться к ней.

PS. При вызове sefRelToAbs, кажется, нужно убирать адрес хоста "http://site.ru/" из начала строки.
« Последнее редактирование: 23.03.2007, 10:30:39 от Physicist »
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
есть sefAbsToRel, но это не то...
как раз таки именно sefRelToAbs вам и нужна, а никакой sefAbsToRel нет... объявлена функция sefRelToAbs в файле /includes/sef.php или же она может быть объявлена в /components/com_sef/sef.php (если у вас установлен какой-то сторонний компонент для генерации SEF-ссылок)

я так понял для использования sefRelToAbs() нужно подключить sef.php?

подключаю include($mosConfig_absolute_path.'/includes/sef.php'); - тупо грузит белую страницу (sef.php лежит в /includes/)

если без подключения вызывать функцию - то джумла не матерится. На входе получает
http://site.ru/index.php?option=com_content&task=view&id=53&Itemid=37
на выходе
index.php?option=com_content&task=view&id=53&Itemid=37

Отсюда и взял, что "но это не то..."

Цитировать
если у вас установлен какой-то сторонний компонент для генерации SEF-ссылок
юзаю стандартный ЧПУ джумлы - Общие установки->SEO->Дружественные ссылки (SEF URLs)->Да 
*

Physicist

  • Глобальный модератор
  • 969
  • 190 / 0
  • Рябов Денис
Удали "http://site.ru/" на входе, попробуй просто "index.php?option=com_content&task=view&id=53&Itemid=37".
:) Если при первом вызове sefRelToAbs текст "http://site.ru/" убирается автоматом, то можно просто вызвать sefRelToAbs дважды.
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
я так понял для использования sefRelToAbs() нужно подключить sef.php?
нет, он автоматически подключается ядром

если без подключения вызывать функцию - то джумла не матерится. На входе получает
http://site.ru/index.php?option=com_content&task=view&id=53&Itemid=37
на вход дай ссылку, без live_site, т.е. начинающуюся с index.php

Цитировать
На входе получает
http://site.ru/index.php?option=com_content&task=view&id=53&Itemid=37
на выходе
index.php?option=com_content&task=view&id=53&Itemid=37
Простите пожалуйста за то что ввел вас в заблуждение. Переклинило что-то меня. Все наоборот, т.е. вход - адрес без домена сайта(начинающийся с index.php), выход - полный УРЛ(c http://site.ru/).
Не пойму чего такая фигня. По вашим словам все должно быть нормально и работать, а в итоге... тупо прицепляется  домен к линку и не конвертируется в ЧПУ.  :'(

Может код глючный, а я на нем зациклился? Но нету тут в чем зацикливаться:
Код
$link = sefRelToAbs($_SERVER['REQUEST_URI']);
echo "Result link(SEF):".$link;
echo "Source link:".$_SERVER['REQUEST_URI'];


ЗЫ. За попытки помочь и активность smart & Physicist +1
*

Physicist

  • Глобальный модератор
  • 969
  • 190 / 0
  • Рябов Денис
Проверь, точно ли $mosConfig_sef установлена в "1" в configuration.php, и что параметр, передаваемый sefRelToAbs начинается с "index.php".

Physicist
Респектище, все-таки там лишний слэш клеился и substr($_SERVER['REQUEST_URI'],1); меня спасла.

Спасибо большое!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

получить ID материала, категории, раздела в шаблоне

Автор e-life

Ответов: 16
Просмотров: 18231
Последний ответ 15.05.2017, 07:36:09
от LadaDed
как через AJAX запрос получить только данные из функции, без HTML кода?

Автор lottis

Ответов: 7
Просмотров: 2972
Последний ответ 26.03.2012, 02:40:54
от lottis
Как получить ID для каждого выводимого модуля на странице

Автор enshtein

Ответов: 6
Просмотров: 4649
Последний ответ 12.01.2012, 08:54:19
от enshtein
Table manager - изменить программно свойство

Автор koder

Ответов: 0
Просмотров: 1348
Последний ответ 15.08.2010, 15:54:19
от koder
Как в модели получить объект другой модели?

Автор Виталик

Ответов: 2
Просмотров: 1456
Последний ответ 05.01.2010, 21:31:48
от Виталик