【问题标题】:Magento - Separate contact formsMagento - 单独的联系表格
【发布时间】:2015-05-26 20:38:09
【问题描述】:

我在一个网站上工作,客户需要有多个单独的联系表格(一个用于联系,一个用于“请求报价”,另一个用于类似的东西)。

我已经设法创建了另一个包含附加字段的联系表单,但它是联系人表单,因此字段只有姓名、电子邮件、主题和消息。

现在我有了其他人的“骨架”,但我的问题是:有没有办法利用“联系人”后端发送电子邮件?还是我需要另一个控制器来管理它们?

如果是这样,你能告诉我一些链接或一段代码吗?

提前致谢。

【问题讨论】:

  • 是的,插入电子邮件功能应该很容易。您能否指定是使用现有模板还是自定义模板来发送电子邮件?
  • 我会使用自定义模板(我添加了另外几个字段,例如地址、电话、描述、生产年份等)。

标签: magento contact-form


【解决方案1】:

要做你想做的事,需要一个自定义控制器来传递 POST 数据。

如果您在 ~62 行检查 \app\code\core\Mage\Contacts\controllers\IndexController.php,您会发现 postAction()indexAction() 调用 - 控制器的默认操作。

这是收集传递的 POST 参数并使用core/email_template 模型发送电子邮件的方法。我会将此代码用作您的控制器的参考。

请确保将其全部放入您自己的模块中,并添加功能。

要了解您可以和不能传递给core/email_template 模型的内容,请查看\app\code\core\Mage\Core\Model\Email\Template.php。它为您准备了大量的文档。

哎呀,它甚至有示例代码!

// Loading of template
$emailTemplate  = Mage::getModel('core/email_template')
   ->load(Mage::getStoreConfig('path_to_email_template_id_config'));
$variables = array(
   'someObject' => Mage::getSingleton('some_model')
   'someString' => 'Some string value'
);
$emailTemplate->send('some@domain.com', 'Name Of User', $variables);

特别是查看 ~371 行,它将您设置的变量传递给布局指定的电子邮件模板。

/**
 * Send mail to recipient
 *
 * @param   array|string       $email        E-mail(s)
 * @param   array|string|null  $name         receiver name(s)
 * @param   array              $variables    template variables
 * @return  boolean
 **/
public function send($email, $name = null, array $variables = array())

Magento 所做的事情与您在普通的旧 PHP 表单处理器上处理任何联系表单所做的事情相同。它只是将所有内容委托给上述模型,因此您不必做太多工作来重新发明轮子。只是一个新的控制器来接受 POST 数据中的参数。

请随时跟进,我会更新答案以尽可能为您提供帮助!

以下是实现此目标所需的简要清单:

  • 一个自定义控制器,用于接受表单 POST 数据并将其传递给 core/email_template 模型。
  • 前端的自定义表单指向您的控制器 URL(已经完成!)
  • core/email_template 的自定义电子邮件模板,用于显示收件人看到的电子邮件中的数据。

【讨论】:

    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 2014-09-10
    • 2013-12-29
    • 2014-01-19
    • 1970-01-01
    相关资源
    最近更新 更多