繁体   English   中英

在Joomla中即时修改文章

[英]Modify article on the fly in Joomla

我可以通过将下一行放入模板来更改标题:

$doc->setTitle('my new title');

但是,是否有任何方法可以以相同的方式修改文章的“全文”?

简短答案:是,带有内容插件

细节

如果可以使用$doc->setTitle() ,那么我假设在该行之前的某处有一行显示:

$doc = JFactory::getDocument();

但是文档指向整个页面 ,因此您实际上是在设置html <title>标记。

如果要更改文章文本,则需要处理特定组件的结果,即com_content ,它只是整个文档的一部分。

有多种方法可以更改它。

更改整个页面内容

如果要更改模板中的整个页面内容,则必须执行以下操作:

$buffer = $doc->getBuffer();
// ... do whatever modification to buffer
$doc->setBuffer($buffer)

这样做很简单,但在模板中放置这种逻辑并不是一个好主意(如果您想更改模板,则必须复制/粘贴代码)。

使用系统插件更改缓冲区

该解决方案的核心与以前相同,但是您将逻辑放在系统插件中 ,并挂接onAfterRender事件。 您获得缓冲区,对其进行修改,然后设置缓冲区。

对于非常简单的修改和/或如果您想确保修改适用于页面的任何部分,都是很好的解决方案。

使用内容插件

内容插件仅适用于文章正文,产品说明和类似的文本部分。

如果只想修改这些部分,则应使用此选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM