我正在尝试根据文章ID生成URL。
运行此查询后
SELECT a.sectionid,
CASE WHEN CHAR_LENGTH( a.alias )
THEN CONCAT_WS( ":", a.id, a.alias )
ELSE a.id
END AS slug,
CASE WHEN CHAR_LENGTH( cc.alias )
THEN CONCAT_WS( ":", cc.id, cc.alias )
ELSE cc.id
END AS catslug
FROM #__content AS a
INNER JOIN #__categories AS cc ON cc.id = a.catid
WHERE a.id = $articleID
我将结果存储在$data
中,并以这种方式生成链接:
$link = JRoute::_(ContentHelperRoute::getArticleRoute($data[0]->slug, $data[0]->catslug, $data[0]->sectionid));
问题在于当我的文章不属于任何菜单时,生成的链接不正确。我注意到,当我的文章没有关联任何菜单时,API 获取“活动菜单 id”并将其添加到生成的链接中,参数为“&Itemid=MyActiveMenuId”(这发生在“route.php”文件中)。但由于文章不存在于活动菜单中,生成的链接将无法工作。
我知道,如果 API 只忽略“菜单项 id”,而不是获取“活动菜单 id”,它就会起作用,但我能在不更改 Joomla 代码的情况下做到这一点吗?此外,我希望在文章实际属于菜单的情况下继续考虑“菜单项 id”,以便生成的 URL 是 SEF。
有解决办法吗?还是每篇文章都必须属于一个菜单项?
我的 Joomla 版本是 2.5.13