我需要扩展Magento购物车,为商店定位器添加一个额外的步骤.我知道我需要覆盖核心OnePage控制器(Mage_Checkout_OnepageController)和块(Mage_Checkout_Block_Onepage),但是需要做些什么才能跟踪额外信息(例如用户从我的自定义步骤中选择的选项).
此处需要执行许多步骤才能获得整个解决方案.

首先,创建一个新模块.如果您愿意,请使用ModuleCreator.

然后,在模块中写一个setup script,将新字段添加到Magento的属性结构中,例如:

$setup = new Mage_Sales_Model_MysqL4_Setup('core_setup');
 $setup->startSetup();

 $setup->addAttribute('quote','my_attribute',array('type' => 'varchar','visible' => false,'required' => false));
 $setup->addAttribute('order','required' => false));
 $setup->addAttribute('invoice','required' => false));
$setup->addAttribute('creditmemo','required' => false));

请注意使用Mage_Sales_Model_MysqL4_Setup将字段添加到相关的sales_flat_quote和sales_flat_order表.

现在,在模块的config.xml文件中插入以下值:

<global>

    <fieldsets>
        <sales_convert_quote>
            <my_attribute>
                <to_order>*</to_order>
            </my_attribute>
        </sales_convert_quote>
        <sales_convert_order>
            <my_attribute>
                <to_cm>*</to_cm>
                <to_invoice>*</to_invoice>
            </my_attribute>
        </sales_convert_order>
    </fieldsets>

这将指示Magento将自定义字段的值从报价复制到订单到发票和credit_memo等.

然后在您的自定义块/控制器代码中,您将能够使用Magento的魔法getter和setter来保持值.

$oQuote = Mage::getSingleton('checkout/session')->getQuote();
$oQuote->setMyAttribute('some_value');
$oQuote->save();

您应该看到sales_flat_quote中保存的新列和值.然后,一旦客户完成结账,则应在sales_flat_order中保存相同的值.

请注意,上述代码可以扩展为仅对quote_item和order_item起作用,只需将quote更改为quote_item等,但是,如果您希望保存已在产品上设置的属性值,则需要进行一些额外的工作.

将新的XML块插入config.xml(再次在全局节点内):

<sales>
        <quote>
            <item>
                <product_attributes>
                    <my_attribute />
                </product_attributes>
            </item>
        </quote>
    </sales>

其中my_attribute是产品型号上的属性代码.这将使链接产品上的my_attribute可用,因此您可以通过它访问它

$oQuoteItem->getProduct()->getMyAttribute()

无需执行完整的Mage :: getModel(‘catalog / product’) – > load($oQuoteItem-> getProductId()).这样效率更高.

然后,您将需要一个观察者将产品对象中的值复制到quote_item对象.所以,在config.xml中声明你的观察者:

<events>
        <sales_quote_item_set_product>
            <observers>
                <quoteitem_set_custom_data>
                    <type>singleton</type>
                    <class>mymodule/observer</class>
                    <method>setCustomDataOnQuoteItem</method>
                </quoteitem_set_custom_data>
            </observers>
        </sales_quote_item_set_product>
    <events>

并在您的观察者类中编写代码,如下所示:

public function setCustomDataOnQuoteItem($oObserver){
    $oProduct = $oObserver->getProduct();
    $oQuoteItem = $oObserver->getQuoteItem();
    foreach(array('my_attribute') as $vAttributeCode){
        $oQuoteItem->setData($vAttributeCode,$oProduct->getData($vAttributeCode));
    }
}

php – 扩展Magento购物车的更多相关文章

  1. magento后台无法登录解决办法的两种方法

    可能很多朋友有同样的经历,magento在服务器中配置域名是可以正常的访问了,但是在本地配置后却无法登录后台,账号密码登录的时候发现出现空白,无法跳转到后台,本文章向大家介绍两种解决本地magento后台无法登录的方法,需要的朋友可以参考下

  2. PHP magento后台无法登录问题解决方法

    这篇文章主要介绍了PHP magento后台无法登录问题解决方法的相关资料,这里对magento无法登录,提供了两种解决方案,需要的朋友可以参考下

  3. php – 在Magento中获取所有类别的数组

    我希望能够通过API调用以获取所有类别的数组,其中包含URL键等详细信息.最终的目标将是这样的阵列所以我想说出类似的东西我知道这完全是弥补而不是真正的API,但这基本上是目标.我确实需要输出.关于代码实现需求的想法?

  4. php – 为产品设置Magento下拉列表(选择)值

    我创建了一个非常大的导入脚本,它将产品从CSV导入到magento.我还有一个要解决的问题.我使用下拉列表来表示属性.不幸的是,我无法为单个产品设置这些属性的值.我做了什么:>创建属性集[PHP],>为此set[PHP]添加了带有值的dropdown属性,>在适当的属性集中添加新产品,并尝试为我创建的属性设置值.我尝试了几种方法,这里的one对我来说很好看:不幸的是它不起作用.有任何想法吗?我正在使用Magento1.7.0.2你可以这样做:如果您有任何疑问,请告诉我.热忱.

  5. php – Magento Collection过滤功能

    是否与eav_attribute值有关?

  6. php – 扩展Magento购物车

    我需要扩展Magento购物车,为商店定位器添加一个额外的步骤.我知道我需要覆盖核心OnePage控制器(Mage_Checkout_OnepageController)和块(Mage_Checkout_Block_Onepage),但是需要做些什么才能跟踪额外信息(例如用户从我的自定义步骤中选择的选项).此处需要执行许多步骤才能获得整个解决方案.首先,创建一个新模块.如果您愿意,请使用Modul

  7. php – 如何触发magento收到的付款事件?

    并执行您喜欢的修改.在app/code/core/Mage/…/Model/中查看Magento模型类了解如何浏览这些对象.示例:注意我没有测试过我在这里编写的任何代码,所以要小心处理!希望它有所帮助,Magento有一个艰难的学习曲线……

  8. zend-framework – Magento/Zend不允许使用符号链接

    任何人都知道为什么Magento不允许在app/design文件夹之外的模板.phtml文件的符号链接?),System>中有一个选项.配置>开发人员>模板设置>允许您启用的符号链接.不再需要肮脏的黑客/变通办法.总结以上是DEVMAX为你收集整理的zend-framework–Magento/Zend不允许使用符号链接全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  9. php – 自定义模块magento中管理员用户的访问被拒绝

    我已经为管理员用户创建了一个magento自定义模块,我已准备好进行基本设置,我已经创建了一个用户角色并为该模块提供了资源访问权限,但是当我使用该用户凭据登录时,我获得了拒绝访问权限错误,但当我以管理员身份登录时,我可以访问该模块.我的config.xml文件我的adminhtml.xml我在config.xml中给了acl权限,我不确定我在这里做错了什么.管理员用户登录错误屏幕截图为管理员登录,

  10. php – 是否可以将类别页面设为magento的主页?

    您可以将其添加到任何CMS页面:

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部