【问题标题】:plugin override Joomla MVC not working插件覆盖 Joomla MVC 不起作用
【发布时间】:2016-06-15 07:04:44
【问题描述】:

你好!

我必须将 Joomla 用于网站,并且我需要覆盖 MVC 组件 (com_contact) 以将字段添加到联系表单。问题是,我遵循了这个教程:

https://docs.joomla.org/How_to_override_the_component_mvc_from_the_Joomla!_core/fr

我安装了插件,重写了所需的文件并将它们放在教程所说的位置,但它不起作用,插件没有被覆盖。

有人可以帮我解决这个问题吗?

--------编辑---------

我放弃了第一个教程,现在正在尝试遵循这个: https://docs.joomla.org/J3.x:Creating_a_Plugin_for_Joomla/fr

但我的插件不起作用。这是插件的代码:

/**
 * Prepare form and add my field.
 *
 * @param   JForm  $form  The form to be altered.
 * @param   mixed  $data  The associated data for the form.
 *
 * @return  boolean
 *
 * @since   <your version>
 */

function onContentPrepareForm($form, $data)
{

    $app = JFactory::getApplication();
    $option = $app->input->get('option');

    switch ($option) {

        case 'com_contact': {
            if ($app->isAdmin()) {
                JForm::addFormPath(__DIR__ . '/forms');
                $form->loadFile('item', false);
            }
            return true;
        }

    }
    return true;
}
}
?>

contact.xml

<?xml version="1.0" encoding="UTF-8"?>
<form>
<fields name="params">
    <fieldset name="params" label="PLG_CONTENT_EXAMPLE_FIELDSET_LABEL">
        <field
                name="contact_emaillabel2"
                type="text"
                label="PLG_CONTENT_EXAMPLE_CONTACT_EMAILLABEL2"
        />
        <field
                name="contact_email2"
                type="text"
                label="PLG_CONTENT_EXAMPLE_CONTACT_EMAIL2"
                filter="email"
        />
    </fieldset>
</fields>
</form>

安装xml文件:

<?xml version="1.0" encoding="utf-8"?>
<extension version="3.2" type="plugin" group="override">
<name>test</name>
<author>Laurine</author>
<creationDate>June 2016</creationDate>
<copyright>Copyright (C) Page Graphique, tous droits réservés</copyright>
<authorEmail>Laurine@page-graphique.fr</authorEmail>
<version>3.2</version>
<description>Plugin pour surcharger les composants MVC</description>
<files>
    <filename>plgoverridetest.php</filename>
</files>
<config>
</config>
</extension>

树状:

- <Joomla>/.../plugins/override
    plgoverridetest.php
    install.xml
    - forms
        contact.xml

【问题讨论】:

  • 你的代码在哪里?
  • 我的代码如教程中所说,TEMPLATE/code/com_contact/controllers/contact.php 和 TEMPLATE/code/com_contact/models/forms/contact.xml。
  • bu 我尝试了很多解决方案,例如将contact.xml 放在forms 文件夹中并直接放在models 文件夹中,将所有自定义com_contact 文件夹放在“html”文件夹中而不是代码中,将文件放在“控制器”中和“模型”文件夹...
  • 您可以简单地上传另一个联系人组件,而不是执行所有这些操作。无需破解任何核心文件。
  • 如果 joomla 的一个工作,添加一个新组件很遗憾,我只需要添加一个字段,并且教程在文档中,所以它应该工作,也许我做错了什么,但我可以找不到什么。此外,我已经编辑了 com_contact 的模板,我不想用另一个表单重做所有工作 =/

标签: plugins joomla overriding


【解决方案1】:

您可以查看此链接。一定会帮到你https://docs.joomla.org/Adding_custom_fields_to_core_components_using_a_plugin

对于网站使用,您可以使用

case 'com_contact':
    if ($app->isSite())
    {
        JForm::addFormPath(__DIR__ . '/forms');
        $form->loadFile('contact', false);
    }
    return true;

然后你需要编辑模板文件。您可以从该链接获得详细信息。

【讨论】:

  • 那是我已经遵循的教程,我无法让它工作=/
  • 你很好,但如果你没有时间,你不必这样做,我只是想知道我的插件哪里出错了^^
  • 我认为我的插件没有被触发,也许问题是类的名称?我看到插件类名有很多问题
【解决方案2】:

为了覆盖联系表单,您需要创建一个“内容”插件,您上面的插件是“覆盖”,因此它不会被联系组件触发。

另外,在您的代码中 $form-&gt;loadFile('item', false); 是错误的,因为您尝试加载的 xml 文件是“contact.xml”,所以您的代码应该是 $form-&gt;loadFile('contact', false);

我刚刚完成了一个插件的开发,它添加了许多字段,例如电话、网站、公司、文件上传、时事通讯,并包括在需要时关闭默认字段。如果您使用他们的 CRM,它还会将信息发送到 HubSpot。

现在的事情是为了使用这些额外的字段,您需要创建一个“联系人”插件,该插件在提交表单并使用插件触发器“onSubmitContact($data)”触发时触发,我创建了一个“用于此目的的自定义回复插件。

您需要记住,在使用自定义回复插件时,您必须在管理组件的联系人选项中选择“自定义回复”选项。

此外,我创建的插件基于每个表单工作,而不是在多个表单上具有相同的字段,您可以独立修改每个表单。

【讨论】:

  • 嗨 Derek,我正在寻找一个插件来更改自定义回复。你在 github 上发布过你的插件吗?
  • 嗨,Edwardo,目前还没有,计划是在我们的网站上创建会员,以便我们可以继续添加更多功能并继续支持插件和未来的开发,请随时给我留言电子邮件:derekatadonis.media.
猜你喜欢
  • 2018-05-24
  • 2013-09-05
  • 1970-01-01
  • 1970-01-01
  • 2015-08-27
  • 1970-01-01
  • 1970-01-01
  • 2011-08-13
  • 1970-01-01
相关资源
最近更新 更多