[英]Joomla: get article SEF URL in Content Plugin from ID
我目前正在开发一个Joomla插件,我想在其中捕获事件onContentAfterSave
,以便将新保存的文章发布到URL缩短器中,以用于社交网络。
有人可以帮助我如何为文章详细信息视图计算适当的SEF URL(无菜单项!)?
该URL应类似于: http://<domain>.<tld>/<category-id>-<category-title>/<article-id>-<article-title>.html
我已经阅读了这篇文章 ,但这并没有真正提供解决方案。
使用JRoute将非基于SEF参数的URL转换为SEF URL。
如果要链接到标准的Joomla文章,则需要以下信息:
$url = JRoute::_('index.php?option=com_content&view=article&id='.$article->id);
$ article-> id可通过onContentAfterSave获得,尽管您可能已经将$ article对象称为别的对象,在这种情况下,可以适当地重命名。
如果确实有用于文章的菜单项,则添加菜单项的id的Itemid参数,它将加载与该菜单项相关的模块。
我可以通过以下帖子解决此问题: https : //joomla.stackexchange.com/questions/36/how-do-i-generate-a-sef-url-in-a-custom-module-instead-of -真实网址
提供的解决方案是:
$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));
该解决方案的真正好处是,它还可以与子目录中包含的安装一起使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.