在Joomla 2.5联系表单上添加自定义字段

时间:2013-12-10 19:57:23

标签: php forms joomla joomla2.5

这可能是Joomla论坛多次提出的一个问题,但在搜索了一段时间后,我找不到一个好的答案,而不是“不可能”和“使用第三方表单组件”。 我想在默认的Joomla 2.5联系表单上添加另一个字段(电话号码),以便用户可以发送该信息以及他的消息。 从我读过的内容来看,它表示这是Joomla对其邮件实现的限制,它只能发送名称,主题和消息。我不是一个经验丰富的Joomla开发人员,但是根据我有限的知识,我相信这可以通过简单的方式获得,只需在模板联系表单中添加字段并将这些字段与消息字段连接起来(或者至少可以解决这个问题)我的问题很容易)。 就像我说的,我不是一个经验丰富的开发人员,所以我无法弄明白该怎么做(最好不要通过修改过多的核心文件来破坏Joomla的安装,如果是这样的话)。有人可以帮忙吗?或者至少指出我正确的方向?

感谢。

5 个答案:

答案 0 :(得分:2)

你是对的,大多数人说"使用第三方扩展"。但是有一个很好的理由。使用Joomla时,不建议编辑核心文件。 "为什么"你可能会问。纯粹是因为以下原因:

  1. 他们可能会在Joomla更新中被覆盖
  2. Joomla的编码风格与人们习惯的编码风格大不相同,因此旧的编码标准,其中一些现在被认为是不安全的,可能会被用作很多人阅读Joomla文档。一个主要的例子是人们问为什么使用他们的代码从数据库中检索数据是不行的,他们使用mysql_connect而不是Joomla数据库类。
  3. 最后一个原因是,如果您不确定自己在做什么,您添加的任何代码都可能会导致问题并导致现有功能的功能失误。你永远不会知道。
  4. 所以为了回答你的问题(即使你可能不想听到这个),我也会说要使用此类别的第三方扩展程序:

    http://extensions.joomla.org/extensions/contacts-and-feedback/contact-forms

    种类繁多,只需看看哪种适合您的需求。

    希望这能让你对事物有一个很好的洞察力。

答案 1 :(得分:2)

您永远不应该在Joomla中编辑核心文件,否则对这些文件的更新可能会导致您的网站崩溃。以下链接将帮助您开始创建用户插件,您可以在其中添加/删除所需的所有字段。

http://docs.joomla.org/Creating_a_profile_plugin

答案 2 :(得分:1)

也许有点晚了,我希望你已经解决了你的问题。

但如果没有,你可以查看:Elin Warings tutorial for making a form plugin.

或者阅读有关Joomla核心功能的覆盖:How to create a custom form field type.

答案 3 :(得分:0)

你可以制作一个插件来添加字段,这并不难,或者你可以使用众多扩展中的一个。

答案 4 :(得分:0)

如果您想添加字段以联系我们默认表单。 您需要在4个文件中添加字段

1)/ components / com_contact / controllers / contact.php`

            $phone      = $data['contact_phone'];

2)/components/com_contact/views/contact/tmpl/default_form.php

<dt><?php echo $this->form->getLabel('contact_phone'); ?></dt>
            <dd><?php echo $this->form->getInput('contact_phone'); ?></dd>

3)/components/com_contact/models/forms/contact.xml

<field name="contact_phone"
        type="phone"
        id="contact-phone"
        size="30"
        description="COM_CONTACT_PHONE_DESC"
        label="COM_CONTACT_PHONE_LABEL"
        filter="integer"
        required="false"
    />

4)templates / your template / html / com_contact / contact / default_form.php

<div>
 <?php echo $this->form->getLabel('contact_phone'); ?>
 <?php echo $this->form->getInput('contact_phone'); ?>

</div>

谢谢&amp;问候, Mithali