插件覆盖Joomla MVC无法正常工作

时间:2016-06-15 07:04:45

标签: plugins joomla override

Hellow!

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

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

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

有人可以帮我这个吗?

------ EDIT ---------

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

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

 new Handler().postDelayed(new Runnable() {

                @Override
                public void run() {
                    //do something
                }
            }, 3000//time in milisecond 
);

contact.xml

/**
 * 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;
}
}
?>

安装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>
arborescence:

<?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>

2 个答案:

答案 0 :(得分:0)

您可以查看此链接。它肯定会帮助你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;

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

答案 1 :(得分:0)

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

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

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

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

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

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