如何阅读某个 URI 所属的部分?
我想增强 mod_breadcrumb 以将部分和类别放入 HTML。JApplication->getPathway() 返回一个 JPathway,它基本上包含一个组合名称和 URL 的关联数组(如 $list[]->name 和 $list[]->link)。我认为,应该可以从链接中获取部分和类别,但不知道如何。
一个起点可能是解析成 JURI-Object,但从那里我不知道如何走得更远。有任何想法吗?
如何阅读某个 URI 所属的部分?
我想增强 mod_breadcrumb 以将部分和类别放入 HTML。JApplication->getPathway() 返回一个 JPathway,它基本上包含一个组合名称和 URL 的关联数组(如 $list[]->name 和 $list[]->link)。我认为,应该可以从链接中获取部分和类别,但不知道如何。
一个起点可能是解析成 JURI-Object,但从那里我不知道如何走得更远。有任何想法吗?
很直接...
我假设您想为文章添加类别和部分,而不是您的自定义组件。
检查请求的当前 URL 是否用于文章。如果是文章你知道文章ID,用这个文章ID去数据库和catid
从#__content
,用这个cat_id
去#__categories
和获取section
(这是部分ID),去#__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');
?>