我试图让我的客户在他们的订单上添加评论。所以我在扩展后搜索,我发现了一个。设置似乎很容易...... 你必须确保在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();
}
}
答案 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事件被触发后它将自动被调用。因此,请检查您编写函数帮助文件或观察者文件的位置,并提供未调用这些函数的正确详细信息。如果未调用观察者功能,则必须在下订单时检查正在触发的事件。由于评论中的字符限制,我无法在评论部分发布此内容,因此更新了我的答案。
希望这有帮助!!