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

ruslan13

  • Захожу иногда
  • 156
  • 2 / 0
Логика парсинга Url в Joomla
« : 18.06.2018, 05:53:00 »
По какой логике Url запрос в форме /cats/news/535-some-news преобразуется во внутренний /index.php?option=com_content&view=article&id=535 ?
*

kern.USR

  • Давно я тут
  • 805
  • 61 / 1
Re: Логика парсинга Url в Joomla
« Ответ #1 : 18.06.2018, 16:35:00 »
https://docs.joomla.org/J3.x:Supporting_SEF_URLs_in_your_component

Вообще очень полезный сайт  ;)
*

ruslan13

  • Захожу иногда
  • 156
  • 2 / 0
Re: Логика парсинга Url в Joomla
« Ответ #2 : 18.06.2018, 16:47:13 »
Спасибо.
Мне не нужно Joomla API, мне нужна логика, чтобы распарсить url самому.
Там я нашел:
Код
When viewing an article: http://www.example.com/[menualias]/[category]/[article]
When viewing a category: http://www.example.com/[menualias]/[category]
Статья и блог всегда именно так?
То есть, делим по слэшам, смотрим число частей, определяем статью/блог, ищем элиасы в меню и категории и т.д.?

п.с. вообще-то http://www.example.com/[article] тоже прекрасно работает...
*

robert

  • Живу я здесь
  • 4623
  • 429 / 16
Re: Логика парсинга Url в Joomla
« Ответ #3 : 18.06.2018, 17:00:35 »
У каждого компонента своя логика. Что значит
распарсить url самому
? Откуда берется url?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

ruslan13

  • Захожу иногда
  • 156
  • 2 / 0
Re: Логика парсинга Url в Joomla
« Ответ #4 : 18.06.2018, 17:24:49 »
url приходит от клиента. До запуска джумловского фреймворка мне нужно его распарсить.

Логика нужна, скажем, только для статьи и блога ком_контента
*

kern.USR

  • Давно я тут
  • 805
  • 61 / 1
Re: Логика парсинга Url в Joomla
« Ответ #5 : 18.06.2018, 17:37:51 »
А зачем его парсить, до обработки Joomla? Отдайте его Joomla, а потом уже разобранный по параметрам берите и используйте
*

ruslan13

  • Захожу иногда
  • 156
  • 2 / 0
Re: Логика парсинга Url в Joomla
« Ответ #6 : 18.06.2018, 17:41:42 »
Ну значит надо, наверно. Чтобы при определенных случаях не запускать Joomla с ее 100+ обращениями к БД по каждому клиентскому запросу, например.
*

robert

  • Живу я здесь
  • 4623
  • 429 / 16
Re: Логика парсинга Url в Joomla
« Ответ #7 : 18.06.2018, 17:52:14 »
Чтобы при определенных случаях не запускать Joomla
Я вас не понимаю. То есть, полученные urls не будут использоваться в Joomla? Тогда зачем вообще их получать?
Начните с /components/com_content/router.php, потом доберетесь до /liblaries/src/Component/Router/, если оф.док. вас не устраивает.
« Последнее редактирование: 18.06.2018, 18:52:17 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

kern.USR

  • Давно я тут
  • 805
  • 61 / 1
Re: Логика парсинга Url в Joomla
« Ответ #8 : 18.06.2018, 17:58:04 »
Чтобы при определенных случаях не запускать Joomla
Тогда вам нужно перехватывать запрос, до того как вебсервер его направит на php. И роутинг Joomla тут ни как не имеет отношения, как и сама Joomla.
Подозреваю, что вы там напланировали супер-мега-кэш систему?
*

ruslan13

  • Захожу иногда
  • 156
  • 2 / 0
Re: Логика парсинга Url в Joomla
« Ответ #9 : 18.06.2018, 18:04:20 »
Я вас не понимаю. То есть, полученные urls не будут использоваться в Joomla? Тогда зачем вообще их получать?
Например, чтобы фильтровать ботов и давать им своё. Этот вопрос (зачем) в данном топике не рассматривается.

Тогда вам нужно перехватывать запрос, до того как вебсервер его направит на php.
Я прекрасно его перехватываю сейчас в главном index.php вот так:
Код
preg_match('/(.*)\/(\d+)-(.*)/', $_SERVER["REQUEST_URI"], $matches);
if ($matches && isset($matches[2]) && is_numeric($matches[2])) {
$isArticle = true;
}
Но ищу более универсальное решение
*

ruslan13

  • Захожу иногда
  • 156
  • 2 / 0
Re: Логика парсинга Url в Joomla
« Ответ #10 : 18.06.2018, 18:06:05 »
Я отдаю ботам 304 ответ (если есть if-last-modified) по статьям до загрузки Joomla - разве это плохо?
*

robert

  • Живу я здесь
  • 4623
  • 429 / 16
Re: Логика парсинга Url в Joomla
« Ответ #11 : 18.06.2018, 18:41:55 »
Я прекрасно его перехватываю
Ну, это уже не до PHP.
Joomla routing завязан на меню, нет там простых правил. В случаях, когда не задействован пункт меню и речь идет о материале, то последний сегмент - это либо его ID, либо alias.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

dmitry_stas

  • Легенда
  • 12425
  • 1172 / 7
Re: Логика парсинга Url в Joomla
« Ответ #12 : 18.06.2018, 18:50:37 »
Но ищу более универсальное решение
а это оно и есть. в противном случае если вы хотите именно повторить логику Joomla, то с таким успехом и апи Joomla можно подгрузить. грубо говоря там происходит следующие: разбивается URL по слешу, затем проверяется первая часть пути, алиас какого это пункта меню. и так далее. если на каком то этапе пункт меню не находится, то оставшаяся часть URL передается роутеру того компонента, который последний определили по меню. если даже первая часть урл не соответствовала никакому пункту меню, то смотрим какой компонент отвечает за главную страницу, и передаем весь урл его роутеру. в двух словах как то так.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

ruslan13

  • Захожу иногда
  • 156
  • 2 / 0
Re: Логика парсинга Url в Joomla
« Ответ #13 : 18.06.2018, 19:32:42 »
Спасибо. Значит руками под свои нужды будем парсить...
*

ruslan13

  • Захожу иногда
  • 156
  • 2 / 0
Re: Логика парсинга Url в Joomla
« Ответ #14 : 27.06.2018, 06:59:05 »
Задам тут вопрос, чтобы новую тему не открывать
Как правильно передать переменную из /index.php в /templates/mytemplate/index.php  ?
$GLOBALS не работает

Через $_GET работает, но кривовато это.
*

kern.USR

  • Давно я тут
  • 805
  • 61 / 1
Re: Логика парсинга Url в Joomla
« Ответ #15 : 27.06.2018, 13:02:34 »
Как то так
Код
$params = JComponentHelper::getParams('com_template');
$params->set('my_param', 'my_value');

Потом в шаблоне прочитать их

Код
$params = JComponentHelper::getParams('com_template');
$dashboardID = $params->get('my_param');
*

ruslan13

  • Захожу иногда
  • 156
  • 2 / 0
Re: Логика парсинга Url в Joomla
« Ответ #16 : 27.06.2018, 17:43:27 »
Спасибо
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Почему Joomla не поддерживает формат webp?

Автор Sensession

Ответов: 12
Просмотров: 142
Последний ответ Сегодня в 00:23:57
от effrit
В Админке Joomla в настройках joombig video slider модуля не открывается вкладка

Автор Lordkain666

Ответов: 4
Просмотров: 81
Последний ответ 16.01.2019, 21:34:57
от Lordkain666
Нужна помощь профи Joomla

Автор tats777

Ответов: 7
Просмотров: 242
Последний ответ 11.01.2019, 17:54:08
от beliyadm
Перевод Joomla 3.9.1 на PHP 7.1

Автор Region93

Ответов: 6
Просмотров: 220
Последний ответ 09.01.2019, 15:01:53
от Region93
Как убрать или заблокировать окно при правом клике мыши в плеере для Joomla?

Автор Lordkain666

Ответов: 10
Просмотров: 259
Последний ответ 06.01.2019, 18:34:40
от Lordkain666