我可以通过将下一行放入我的模板来更改标题:
$doc->setTitle('my new title');
但是,是否有任何方法以同样的方式修改文章的“全文”?
答案 0 :(得分:0)
简短回答:是的,content plugin。
如果您可以使用$doc->setTitle()
,我会假设在该行之前的某处有一行说明:
$doc = JFactory::getDocument();
但文档是指整页,因此您实际上是在设置html <title>
标记。
如果您要更改文章文字,则需要处理特定组件的结果,即com_content
,这只是整个文档的一部分。
有多种方法可以改变它。
如果要更改模板中的整个页面内容,则必须执行以下操作:
$buffer = $doc->getBuffer();
// ... do whatever modification to buffer
$doc->setBuffer($buffer)
很简单,但在模板中放置这种逻辑并不是一个好主意(如果您想要更改模板,则必须复制/粘贴代码)
此解决方案的核心与之前相同,但您将逻辑放在系统插件中,挂钩onAfterRender
事件。你得到缓冲区,你修改它,你设置缓冲区。
非常简单的修改的好解决方案和/或如果您想确保修改适用于页面的任何部分。
内容插件仅适用于文章正文,产品说明和类似文字部分。
如果您只想修改这些部分,则应使用此功能。