【问题标题】:Joomla 3 Template override a pluginJoomla 3 模板覆盖插件
【发布时间】:2013-06-28 19:37:29
【问题描述】:

我在我的模板中找不到任何关于覆盖 Joomla 插件的信息。 一些论坛声称没有插件覆盖,而 Joomla 文档(它是一个威胁性的森林)要么没有关于该主题的任何内容,要么页面很难找到。

那么,我们如何覆盖 Joomla 插件的输出,就像我们覆盖 com_content 或 mod_contact 的输出一样?

【问题讨论】:

  • 喜欢这个问题

标签: templates plugins joomla


【解决方案1】:

我已经找到了一种方法:

  1. 导航到<joomla_homefolder>/administrator/language/<your_language>/
  2. 搜索插件对应的语言文件。
  3. 复制文件名,不包括语言前缀(即en-GB.)和.ini 后缀。
  4. 在您的模板中创建一个名为 html 的文件夹(模板覆盖的常见做法)。
  5. html 文件夹中创建一个子文件夹,并使用您在步骤 3 中复制的语言文件名命名。
  6. 导航到插件路径中的tmpl 子文件夹:<joomla_homefolder>/plugins/<plugin_type>/<plugin_name>/tmpl
  7. 将您希望覆盖的视图文件复制到您在第 5 步中创建的文件夹中。
  8. 修改复制的文件以覆盖插件输出。

例如 - 更改页面导航按钮-修改<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 上尝试过。 该方法可能不适用于某些插件。

祝你好运。

【讨论】:

  • 要创建语言覆盖,您可以通过后端执行此操作,这样可能不会那么混乱。 docs.joomla.org/J3.x:Language_Overrides_in_Joomla 另一个建议非常有用,不能通过后端覆盖来完成。我会测试一下,可能真的很有用。
【解决方案2】:

在 joomla 3 中,您只能覆盖插件输出,这就是为什么源插件必须使用 tmpl 实现的原因。 你 [template]/html 中文件夹的命名约定是

plg_[type*]_[pluginElement]

模板覆盖的原生 joomla 插件只是页面导航。

type* :显然除了内容之外没有任何意义,但如果它是自定义插件,没有人可以阻止你。

【讨论】:

  • 顺便说一句,这完全适用于 Joomla 3.7 中的新自定义字段。这意味着您可以使用此文件夹名称约定并将模板文件从字段中粘贴到其中并修改文件以覆盖字段输出。例如,在 html 文件夹中,您将 plg_fields_media 和 media.php 文件放在其中以覆盖媒体字段。
  • @BrianPeat 太棒了!
【解决方案3】:

在安装 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 文件夹开发的插件,它会提供另一种选择。

【讨论】:

    【解决方案4】:

    不,您不能以相同的方式覆盖,因为没有 tmpl 文件夹,因为插件确实不应该渲染,尽管当然很多。您可能需要克隆插件并制作您想要的布局,可能使用 jlayout 以使其更易于管理。

    【讨论】:

    • 好主意。尽管另一个答案表明 /tmpl 文件夹可能不是绝对必要的。
    【解决方案5】:

    Elin 的回答对于 Joomla 2.5-3.x 来说并不完全正确。一些插件会渲染屏幕输出并具有您可以覆盖的 /tmpl 文件夹。见http://docs.joomla.org/Layout_Overrides_in_Joomla

    在某些情况下,您可能需要在插件 /tmpl 文件夹中创建替代视图。例如,一些使用 JForms 的简单的、较新的自定义内容组件允许您将字段添加到 com_content 文章并为每个字段选择一个视图模板。然后动态生成 com_content 的覆盖以显示自定义字段。每个字段类型都可以通过插件显示在组件区域中,也可以在模块中显示,也可以在模板代码中显示,但它将使用您为 CCK 组件中的字段选择的 /tmpl 文件。如果有一种方法可以覆盖模板文件夹中的不同字段视图,那么它必须需要一个我无法发现的神秘菜单结构。

    【讨论】:

    • 我特别说他们“不应该”而不是“不应该”。但是 JLayouts 的使用在结构上更正确。
    • 我主要是回应你的“不能”。 :-)
    • jw_sig 的答案似乎也表明您也可以覆盖其他 php 文件。
    猜你喜欢
    • 1970-01-01
    • 2015-05-17
    • 2012-06-14
    • 2014-01-28
    • 1970-01-01
    • 2016-05-10
    • 2014-02-06
    • 2014-11-27
    • 1970-01-01
    相关资源
    最近更新 更多