Получить Joomla! категория из URL - PullRequest
1 голос
/ 13 сентября 2010

Как я могу прочитать раздел, к которому принадлежит определенный URI?

Я хочу улучшить mod_breadcrumb, чтобы поместить раздел и категорию в HTML.JApplication-> getPathway () возвращает JPathway, который в основном содержит вспомогательный массив, объединяющий имя и URL (как $ list [] -> name и $ list [] -> link)Я думаю, что можно было бы получить раздел и категорию по ссылке, но не знаю как.

Отправной точкой может быть разбор в JURI-объект, но оттуда я не знаюкак получить дальше.Есть идеи?

1 Ответ

0 голосов
/ 13 сентября 2010

Довольно прямолинейно ...

Я предполагаю, что вы хотите добавить категорию и раздел для статьи, а не свой пользовательский компонент.

Проверьте, является ли запрашиваемый текущий URL для статьи. Если для статьи вы знаете идентификатор статьи, используйте этот идентификатор статьи, чтобы перейти к базе данных и получить catid из #__content, используйте этот cat_id, чтобы перейти к #__categories и получить section (это идентификатор раздела) перейдите к #__sections, чтобы получить правильное имя раздела. Все это можно сделать в 1 sql выражении.

$breadcrumbs =& JFactory::getApplication()->getPathway();
$breadcrumbs->addItem("SECTION_NAME", JRoute::_("index.php?option=com_content&view=section&id=SECTION_ID"));
$breadcrumbs->addItem("CATEGOY_NAME", JRoute::_("index.php?option=com_content&view=category&id=CATEGORY_ID"));
$breadcrumbs->addItem("Article");

В качестве альтернативы, если вам известен URL-адрес элемента «хлебная крошка». Вы можете разобрать его и получить IDS. Хитрость здесь не в том, чтобы получить объект URI по умолчанию JFactory::getURI(), потому что все станет ужасно, используйте JFactory::getURI('YOU_URI_NAME').

<?php
//  You need to get Your own uri, you do not want to modify default URI
//  because this will messup a lot of things
$uri = JFactory::getURI('MyCustomURI');

//  Test # 1 [ID = SECTION_ID]
$url = "index.php?option=com_content&view=section&id=SECTION_ID";
$uri->parse($url);
echo "CURRENT SECTION = " . (int) $uri->getVar('id');

//  Test # 2 [ID = 123]
$url = "index.php?option=com_content&view=section&id=123";
$uri->parse($url);
echo "CURRENT SECTION = " . (int) $uri->getVar('id');
?>
...