0

所以我有这个工作 PHP 代码来获取 Joomla 当前显示的文章:

<?php
    $option = JRequest::getCmd('option');
    $view = JRequest::getCmd('view');
if ($option=="com_content" && $view=="article") {
    $ids = explode(':',JRequest::getString('id'));
    $article_id = $ids[0];
    $article =& JTable::getInstance("content");
    $article->load($article_id);
    echo $article->get("title");
}
else {
    echo "Error - not an article";
}
?>

我已经成功地在 ChronoForms 中使用它来获取我的文章名称以通过电子邮件发送给客户,这恰好是一个招标网站,每个文章名称的末尾都有一个 ID 代码,例如 12345。

是否有任何快速而肮脏的方法可以将此代码插入到 joomla 中的某个位置,以便我可以在文章中动态修改我的插件,例如:

{gallery}12345{/gallery} 

我尝试将它直接添加到模板中,但无论我在哪里插入它(顶部、底部、中间)都会出现各种问题。我还在文章 joomla 插件中尝试了一个 PHP,但该代码停止了页面显示。

4

1 回答 1

0

根据评论,这是我的理解;如果我弄错了,请纠正我。

您有一些包含代码的文章

{gallery}here!{/gallery} 

插件应该替换为哪个

 {gallery}The title of the article{/gallery}

如果是这样,这将需要在 com_content, view=article 上发生,Joomla 将使插件的 onContentBeforeDisplay() 文章对象可用。

function onContentBeforeDisplay($context, &$article, &$params, $page=0){
    $view     = JRequest::getCmd('view'); 
    if ($view == 'article') {
        $content = $article->text;  
        $title = $article->title;
        $content = preg_replace('/{gallery}.*{\/gallery}/',"{gallery}$title{/gallery}",$content);
        $article->text = $content;
    }
}

但是,如果您需要另一篇文章的标题,或者在 com_content view=article 之外需要它,那么您必须实例化 com_content 并从那里获取它。

于 2013-02-17T13:15:28.630 回答