Magento在结账时添加评论

时间:2015-05-28 07:23:07

标签: magento

我试图让我的客户在他们的订单上添加评论。所以我在扩展后搜索,我发现了一个。设置似乎很容易...... 你必须确保在checkout.xml上加载一个块

<block type="checkout/agreements" name="checkout.onepage.agreements" as="agreements" template="checkout/onepage/agreements.phtml"/>

链接到Magemaven OrderComment: http://www.magentocommerce.com/magento-connect/magemaven-ordercomment.html

但是文本区域没有显示出来。我的猜测是另一个扩展(MageSetup)引起了这种情况。当我激活模板提示时,它会向我显示不同的布局,而不是checkout.xml中设置的布局。有一些phtml从&#34; magesetup&#34;加载文件夹中。

我安装了Magento DE 1.9。有人可以解释为什么checkout.xml没有加载?是否有一些通过数据库加载东西的技巧我不知道?

编辑: 我试图按照本教程,但似乎出现了问题http://www.appseconnect.com/how-to-add-order-comment-on-customer-checkout-in-magento/

如何检查此脚本是否正确执行?

$c = array (
‘entity_type_id’  => 1234,
‘attribute_code’  => ‘myorder_customercomment’,
‘backend_type’    => ‘text’,     // MySQL-DataType
‘frontend_input’  => ‘textarea’, // Type of the HTML-Form-Field
‘is_global’       => ‘1’,
‘is_visible’      => ‘1’,
‘is_required’     => ‘0’,
‘is_user_defined’ => ‘0’,
‘frontend_label’  => ‘Customer Comment’,
);
$attribute = new Mage_Eav_Model_Entity_Attribute();
$attribute->loadByCode($c[‘entity_type_id’], $c[‘attribute_code’])
->setStoreId(0)
->addData($c);
$attribute->save();

我认为缺少某些东西,因为该类缺少方法getMyorderCustomercomment。或者这个方法是自动生成的吗?

MyCompany_MyOrder_Helper_CustomerOrderComment extends Mage_Core_Helper_Abstract {
     public function setCustomerOrderComment($observer) {
          $orderComment = $this->_getRequest()->getPost(‘myCustomerOrderComment’, false);
          $observer->getEvent()->getOrder()->setMyorderCustomercomment($orderComment);
     }
}

更新 配置文件:

<?xml version="1.0"?>
<config>
    <global>
        <modules>
            <MyCompany_MyOrder>
                <version>0.1.0</version>
            </MyCompany_MyOrder>
        </modules>
        <helpers>
            <myorder>
                <class>MyCompany_MyOrder_Helper</class>
            </myorder>
        </helpers>
    </global>
    <frontend>
        <events>
            <checkout_type_onepage_save_order>
                <observers>
                    <myorder_set_customerordercomment>
                        <type>model</type>
                        <class>MyCompany_MyOrder_Helper_CustomerOrderComment</class>
                        <method>setCustomerOrderComment</method>
                    </myorder_set_customerordercomment>
                </observers>
            </checkout_type_onepage_save_order>
        </events>
    </frontend>
</config>

帮助者:

<?php
class MyCompany_MyOrder_Helper_CustomerOrderComment extends Mage_Core_Helper_Abstract {
    public function setCustomerOrderComment($observer) {
        $orderComment = $this->_getRequest()->getPost('myCustomerOrderComment', false);

        mail('my@email.com', 'TestMail', $orderComment);

        $observer->getEvent()->getOrder()->setMyorderCustomercomment($orderComment)->save();
    }
}

1 个答案:

答案 0 :(得分:0)

您必须创建一个订单属性并在phtml文件中放置字段。这里有一个详细的博客,您可以尝试:http://www.appseconnect.com/how-to-add-order-comment-on-customer-checkout-in-magento/

<强>更新 打开数据库并打开eav_attribute表 - 在attribute_code字段中搜索myorder_customercomment。如果有记录,则脚本成功执行。

setMyorderCustomercomment仅设置用户在您创建的属性中输入的注释。 Magento提供了魔术方法(get和set),因此您无需重新定义getMyorderCustomercomment()方法。

当你做回声$ _order-&gt; getMyorderCustomercomment();如果您的属性创建成功,magento将自动从数据库中获取其值并回显它。

文章指定set方法的原因是您可以从各种文件访问该方法而无需重复代码。您可以避免指定该函数,只需编写$ order-&gt; setMyorderCustomercomment($ orderComment) - &gt; save();它会起作用。

在此处阅读有关magento魔术方法的更多信息:http://www.coolryan.com/magento/2012/04/06/magic-methods-inside-magento/

回答您的问题: 你怎么称呼这个功能?它应该像这样调用:Mage :: helper('modulename') - &gt; setCustomerOrderComment($ arguments); 确保将上述语句中的modulename替换为实际的模块名称。

如果你的函数在观察者文件中,那么在checkout_type_onepage_save_order事件被触发后它将自动被调用。因此,请检查您编写函数帮助文件或观察者文件的位置,并提供未调用这些函数的正确详细信息。如果未调用观察者功能,则必须在下订单时检查正在触发的事件。由于评论中的字符限制,我无法在评论部分发布此内容,因此更新了我的答案。

希望这有帮助!!