Joomla:从ID获取Content Plugin中的文章SEF URL

时间:2016-04-29 22:23:31

标签: php joomla joomla-extensions

我正在开发一个Joomla插件,我希望在其中捕获事件onContentAfterSave,以便将新保存的文章发布到URL缩短器,以便在社交网络上使用。

有人可以帮我解决如何计算文章明细视图的相应SEF URL(没有菜单项!)?

网址应为:http://<domain>.<tld>/<category-id>-<category-title>/<article-id>-<article-title>.html

我读过this post,但这并没有真正提供解决方案。

2 个答案:

答案 0 :(得分:0)

使用JRoute将非基于SEF参数的URL转换为SEF。

如果链接到标准的Joomla文章,则需要以下信息:

$url = JRoute::_('index.php?option=com_content&view=article&id='.$article->id);

$ article-&gt; id可通过onContentAfterSave获得,但您可能已将$ article对象称为其他内容,在这种情况下,可以根据需要进行重命名。

如果你有文章的菜单项,那么添加菜单项id的Itemid参数,它将加载与该菜单项相关的模块。

答案 1 :(得分:0)

我能用这篇文章解决这个问题: https://joomla.stackexchange.com/questions/36/how-do-i-generate-a-sef-url-in-a-custom-module-instead-of-the-real-url

提供的解决方案是:

$rootURL = rtrim(JURI::base(),'/');
$subpathURL = JURI::base(true);
if(!empty($subpathURL) && ($subpathURL != '/')) {
    $rootURL = substr($rootURL, 0, -1 * strlen($subpathURL));
}
$url = $rootURL.JRoute::_(ContentHelperRoute::getArticleRoute($article->id,  $article->catid));

此解决方案的一个非常好的部分是,它也适用于子目录中包含的安装。