2013-03-24 75 views
1

我已经创建和2.5的Joomla成功安装一个插件,用下面的代码为什么我的Joomla 2.5插件无法正常工作?

<?php 
// no direct access 
defined('_JEXEC') or die('Restricted access'); 

class plgCustomFunctions extends JPlugin 
{ 
    public function onContentPrepare($context, &$article, &$params, $page = 0) 
    { 
     $article->title = "Something!"; 
     return true; 
    } 
}?> 

我的理解是,这应该覆盖每一篇文章的标题。这没有发生。我错过了什么?

回答

6

我认为这个问题是在类名,它应该是

class plgContentCustomFunctions extends JPlugin

否则自动加载的Joomla将不能够找到它

Offtopic:有兴趣的加标签同义词Joomla,please give your opinion

+0

这个命名约定隐藏在Joomla文档中,并且在我找到的教程中无法解释! – Rob 2013-03-24 12:51:39

+1

Imho,Joomla的文档是可怕的,我经常与它斗争。我不能相信那里最流行的CMS之一对于开发者来说有这么差的文档 – 2013-03-24 12:53:05

0

首先,确保您的插件已正确安装并且已被激活。

你的问题是,您要设置不属性确实存在:

$article->title = "Something!";

如果你做一个var_dump($article);你会看到,传递的唯一属性是“文本”。

所以用这个

$article->text = "Something!";

这显然是onContentPrepare方法的限制。

也许你可以找到保存文章时触发的事件。

+0

但这不正确。 '$ article-> title'存在,我只是再次检查,它可以正常覆盖 – 2013-03-24 10:39:58

+0

感谢您的输入。正如我打开了解更多,你在哪里检查$ article-> title? :)而且我怎么管理与插件改变文章的内容,但不是标题? – 2013-03-24 10:47:58

+0

我在joomla 2.5安装中打开了一个已有的插件,添加了'var_dump($ article)',看到了'title'属性,并用'$ article-> title ='blabla';'覆盖了它,并在前端验证了输出。它是'onContentPrepare'事件 – 2013-03-24 10:50:14

相关问题