如何进行后期处理<;jdoc:include type=";标题「/&燃气轮机;在PHP中
初始问题: 我正在使用一个特别的Joomla插件,它在很多方面都非常好。然而,它向我的如何进行后期处理<;jdoc:include type=";标题「/&燃气轮机;在PHP中,php,joomla,joomla3.0,joomla-extensions,Php,Joomla,Joomla3.0,Joomla Extensions,初始问题: 我正在使用一个特别的Joomla插件,它在很多方面都非常好。然而,它向我的元素添加了一堆Javascript,这是我不想要的。(从哲学上讲,我决不反对使用Javascript的插件。只是插件的Javascript输出不好。一般情况下可能不坏,但它破坏了我试图对我的网站所做的。无论如何,我正在偏离正轨。我会控制住它…) 因此,我的解决方案是,我希望控制页面中包含的内容。我想去掉这段糟糕的Javascript代码。但是怎么做呢 我的第一次尝试: 如果不是Joomla,我对PHP相当了解,
元素添加了一堆Javascript,这是我不想要的。(从哲学上讲,我决不反对使用Javascript的插件。只是插件的Javascript输出不好。一般情况下可能不坏,但它破坏了我试图对我的网站所做的。无论如何,我正在偏离正轨。我会控制住它…)
因此,我的解决方案是,我希望控制页面中包含的内容。我想去掉这段糟糕的Javascript代码。但是怎么做呢
我的第一次尝试:
如果不是Joomla,我对PHP相当了解,我最初的想法是。。。“啊哈!输出缓冲!”
我在
之前将
添加到我的模板中,然后做了一点ob\u get\u contents()
的工作。但当然,这只是字面上捕获字符串'
。只是后来,;在模板完成运行后,将处理jdoc包含的内容。我真傻
那么我该如何去掉这个积垢呢?为了防止javascript标记的输出,您必须在
之前在模板中取消设置$this->\u scripts
的正确成员。
例如,如果Joomla头添加了
,则在其前面添加以下php代码:
unset($this->_scripts['/media/jui/js/jquery.min.js']);
尝试
var_dump($this->_scripts
);要查看其中的所有成员。要防止javascript标记的输出,必须在
之前在模板中取消设置$this->\u scripts
的正确成员。
例如,如果Joomla头添加了
,则在其前面添加以下php代码:
unset($this->_scripts['/media/jui/js/jquery.min.js']);
尝试
var_dump($this->_scripts
);看到里面的所有成员。回答我自己的问题;我在用一些东西
首先,将/libraries/joomla/document/html/renderer/head.php
复制到/templates/MYTEMPLATE/renderer\u head.php
然后更改/templates/MYTEMPLATE/renderer\u head.php
中的fetchHead
方法,以抑制我不想要的部分
最后,在/templates/MYTEMPLATE/index.php
中,在顶部附近添加以下行:
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'renderer_head.php';
回答我自己的问题;我在用一些东西 首先,将
/libraries/joomla/document/html/renderer/head.php
复制到/templates/MYTEMPLATE/renderer\u head.php
然后更改/templates/MYTEMPLATE/renderer\u head.php
中的fetchHead
方法,以抑制我不想要的部分
最后,在/templates/MYTEMPLATE/index.php
中,在顶部附近添加以下行:
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'renderer_head.php';
鉴于您“了解PHP”,我建议您不要使用这样的黑客,因为它可能会在Joomla的未来更新中被破坏
所有插件都是php
,您可以对其进行编辑,而不是创建替代相当核心的文件的覆盖
如果您不想编辑原始插件,那么创建一个能够捕获各种系统的插件也非常容易。有一个完整的类别
我想象一个处理渲染或头部事件的系统插件将是捕获它的地方,即onAfterRender
,onBeforeRender
或onBeforeCompileHead
或者,您也可以尝试类似于“”的插件,可在中找到 鉴于您“了解PHP”,我建议您不要使用这样的黑客,因为它可能会在Joomla的未来更新中被破坏
所有插件都是php
,您可以对其进行编辑,而不是创建替代相当核心的文件的覆盖
如果您不想编辑原始插件,那么创建一个能够捕获各种系统的插件也非常容易。有一个完整的类别
我想象一个处理渲染或头部事件的系统插件将是捕获它的地方,即onAfterRender
,onBeforeRender
或onBeforeCompileHead
或者,您也可以尝试类似于“”的插件,可在中找到 不幸的是,它不是
元素,而是..
元素。它不会出现在$this->\u脚本中,或者至少在执行模板index.php
时不会出现。然后检查$this->\u脚本
而不是$this->\u脚本
(尾部s已删除)对不起,我应该提到我做了完整的打印($this)
并且在执行模板的index.php
时,脚本不会出现在任何地方。稍后可能会将它添加到$this
,但我不知道在运行模板后如何操作$this
。不幸的是,它不是
元素,而是..
元素。它不会出现在$this->\u脚本中,或者至少在执行模板index.php
时不会出现。然后检查$this->\u脚本
而不是$this->\u脚本
(尾部s已删除)对不起,我应该提到我做了完整的打印($this)
并且在执行模板的index.php
时,脚本不会出现在任何地方。稍后可能会将其添加到$this
,但我不知道在运行模板后如何操作$this
。