【发布时间】:2013-06-28 19:37:29
【问题描述】:
我在我的模板中找不到任何关于覆盖 Joomla 插件的信息。 一些论坛声称没有插件覆盖,而 Joomla 文档(它是一个威胁性的森林)要么没有关于该主题的任何内容,要么页面很难找到。
那么,我们如何覆盖 Joomla 插件的输出,就像我们覆盖 com_content 或 mod_contact 的输出一样?
【问题讨论】:
-
喜欢这个问题
我在我的模板中找不到任何关于覆盖 Joomla 插件的信息。 一些论坛声称没有插件覆盖,而 Joomla 文档(它是一个威胁性的森林)要么没有关于该主题的任何内容,要么页面很难找到。
那么,我们如何覆盖 Joomla 插件的输出,就像我们覆盖 com_content 或 mod_contact 的输出一样?
【问题讨论】:
我已经找到了一种方法:
<joomla_homefolder>/administrator/language/<your_language>/
en-GB.)和.ini 后缀。html 的文件夹(模板覆盖的常见做法)。html 文件夹中创建一个子文件夹,并使用您在步骤 3 中复制的语言文件名命名。tmpl 子文件夹:<joomla_homefolder>/plugins/<plugin_type>/<plugin_name>/tmpl
例如 -
更改页面导航按钮-修改<joomla_homefolder>/plugins/content/pagenavigation的输出:
进入<joomla_homefolder>/administrator/language/en-GB/,找到名为en-GB.plg_content_pagenavigation.ini的文件。
仅从文件名复制plg_content_pagenavigation。
在您的主题中创建一个名为html(如果它不存在)的文件夹,在其中创建一个子文件夹并将其命名为plg_content_pagenavigation。
将视图文件<joomla_homefolder>/plugins/content/pagenavigation/tmpl/default.php 复制到您刚刚创建的plg_content_pagenavigation 文件夹中。
修改文件。
注意:我只在 Joomla 3.1 上尝试过。 该方法可能不适用于某些插件。
祝你好运。
【讨论】:
在 joomla 3 中,您只能覆盖插件输出,这就是为什么源插件必须使用 tmpl 实现的原因。 你 [template]/html 中文件夹的命名约定是
plg_[type*]_[pluginElement]
模板覆盖的原生 joomla 插件只是页面导航。
type* :显然除了内容之外没有任何意义,但如果它是自定义插件,没有人可以阻止你。
【讨论】:
在安装 Joomla 3.1 时,我正在使用 Simple Image Gallery 插件,我觉得有必要重写它以便为画廊的每个缩略图添加额外的功能。
我将<joomla_homefolder>/plugins/content/jw_sig/jw_sig/tmpl/ 的所有内容复制到<joomla_homefolder>/templates/protostar/html/jw_sig/ 文件夹中,然后我能够修改default.php 文件以进行输出修改,并修改随附的template.css 文件以进行样式修改。这成功地覆盖了插件的输出,而不会在未来的更新中出现问题。
当然,这不适用于所有插件,但如果您有一个足够好用tmpl 文件夹开发的插件,它会提供另一种选择。
【讨论】:
不,您不能以相同的方式覆盖,因为没有 tmpl 文件夹,因为插件确实不应该渲染,尽管当然很多。您可能需要克隆插件并制作您想要的布局,可能使用 jlayout 以使其更易于管理。
【讨论】:
Elin 的回答对于 Joomla 2.5-3.x 来说并不完全正确。一些插件会渲染屏幕输出并具有您可以覆盖的 /tmpl 文件夹。见http://docs.joomla.org/Layout_Overrides_in_Joomla
在某些情况下,您可能需要在插件 /tmpl 文件夹中创建替代视图。例如,一些使用 JForms 的简单的、较新的自定义内容组件允许您将字段添加到 com_content 文章并为每个字段选择一个视图模板。然后动态生成 com_content 的覆盖以显示自定义字段。每个字段类型都可以通过插件显示在组件区域中,也可以在模块中显示,也可以在模板代码中显示,但它将使用您为 CCK 组件中的字段选择的 /tmpl 文件。如果有一种方法可以覆盖模板文件夹中的不同字段视图,那么它必须需要一个我无法发现的神秘菜单结构。
【讨论】: