[英]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.