1

如何阅读某个 URI 所属的部分?

我想增强 mod_breadcrumb 以将部分和类别放入 HTML。JApplication->getPathway() 返回一个 JPathway,它基本上包含一个组合名称和 URL 的关联数组(如 $list[]->name 和 $list[]->link)。我认为,应该可以从链接中获取部分和类别,但不知道如何。

一个起点可能是解析成 JURI-Object,但从那里我不知道如何走得更远。有任何想法吗?

4

1 回答 1

0

很直接...

我假设您想为文章添加类别和部分,而不是您的自定义组件。

检查请求的当前 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');
?>
于 2010-09-13T16:07:50.497 回答