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>
答案 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)'触发时触发,我创建了一个'为此目的自定义回复'插件。
您需要记住,在使用自定义回复插件时,您必须在管理组件的联系选项中选择“自定义回复”选项。
此外,我创建的插件基于每个表单而不是在多个表单上具有相同的字段,您可以单独修改每个表单。