【问题标题】:Joomla: get article SEF URL in Content Plugin from IDJoomla:从 ID 获取 Content Plugin 中的文章 SEF URL
【发布时间】:2016-04-29 22:23:31
【问题描述】:

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

有人可以帮我计算如何计算文章详细视图的适当 SEF URL(没有菜单条目!)?

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

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

【问题讨论】:

    标签: php joomla joomla-extensions


    【解决方案1】:

    我能够通过这篇文章解决这个问题: 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));
    

    这个解决方案真正好的部分是,它也适用于子目录中包含的安装。

    【讨论】:

      【解决方案2】:

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

      在链接到标准 Joomla 文章的情况下,它需要以下信息:

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

      $article->id 可通过 onContentAfterSave 获得,尽管您可能已将 $article 对象称为其他对象,在这种情况下,请根据需要重命名。

      如果您确实有文章的菜单项,则添加菜单项 id 的 Itemid 参数,它将加载与该菜单项相关的模块。

      【讨论】:

      • 感谢日志,但我认为这不是我想要的:这会生成像 http://.//.html?id=,导致 404 错误。同时,我能够找到一个正常工作的解决方案,请参阅下面的答案。
      猜你喜欢
      • 2011-02-14
      • 2013-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-09
      • 2011-10-12
      • 2014-07-11
      • 1970-01-01
      相关资源
      最近更新 更多