hellow!
我必须将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
您可以检查此链接。它肯定会帮助您https://docs.joomla.org/adding_custom_fields_to_to_core_components_uside_a_a_plugin。
对于网站使用,您可以使用
case 'com_contact':
if ($app->isSite())
{
JForm::addFormPath(__DIR__ . '/forms');
$form->loadFile('contact', false);
}
return true;
然后您需要编辑模板文件。您可以从该链接获得详细信息。
为了覆盖联系表,您需要创建一个'content'插件,上面的插件是'覆盖'',因此接触组件不会触发它。
另外,在您的代码中,$form->loadFile('item', false);
是错误的,因为您要加载的XML文件是'Contact.xml',因此您的代码应为$form->loadFile('contact', false);
。
我刚刚完成了一个插件的开发,该插件添加了许多字段,例如电话,网站,公司,文件上传,新闻通讯,并在需要时关闭默认字段。如果您使用其CRM,它还将信息发送到HubSpot。
现在,要使用这些额外字段,您需要创建一个"联系"插件,该插件在提交表单和用插件触发'onSubmitContact($ data)'时触发,我创建了一个''为此目的自定义回复'插件。
您需要记住使用自定义回复插件时,必须在管理组件中的联系人选项上选择"自定义回复"选项。
另外,我创建的插件是按照表单而创建的,而不是在多个表单上具有相同的字段,您可以独立修改每个表单。