php – 如何在Magento One Page Checkout中添加额外的字段“下拉
我使用模块创建了以下自定义属性.
这是Customer的Dropdown-list属性. 应在结帐页面(客户作为客人/现有用户)显示客户帐户页面,客户帐户创建/注册页面,管理客户编辑页面. 目前,我可以在客户地址中的管理员部分看到属性. 我希望此属性在客户地址部分的Checkout页面上显示. 我已经检查billing.phtml文件,因为其他属性是静态写的,但我不知道如何写在billing.phtml中的自定义属性作为其下拉列表.以及哪些其他文件需要更新才能查看此属性. 任何指导都不胜感激. 以下是我的代码 – 文件名 – /app/code/local/PS/PB/etc/config.xml <?xml version="1.0"?> <config> <modules> <PS_PB> <version>0.1.0</version> </PS_PB> </modules> <global> <helpers> <pb> <class>PS_PB_Helper</class> </pb> </helpers> <models> <pb> <class>PS_PB_Model</class> <resourceModel>pb_mysql4</resourceModel> </pb> </models> <resources> <customerattribute1462360584_setup> <setup> <module>PS_P</module> <class>Mage_Customer_Model_Entity_Setup</class> </setup> <connection> <use>core_setup</use> </connection> </customerattribute1462360584_setup> <customerattribute1462360584_write> <connection> <use>core_write</use> </connection> </customerattribute1462360584_write> <customerattribute1462360584_read> <connection> <use>core_read</use> </connection> </customerattribute1462360584_read> </resources> </global> </config> 文件 – /app/code/local/PS/PB/Helper/Data.php <?php class PS_PB_Helper_Data extends Mage_Core_Helper_Abstract { } 文件 – /app/code/local/PS/PB/Model/Eav/Entity/Attribute/Source/Customeroptions14623605840.php <?php class PS_PB_Model_Eav_Entity_Attribute_Source_Customeroptions14623605840 extends Mage_Eav_Model_Entity_Attribute_Source_Abstract { /** * Retrieve all options array * * @return array */ public function getAllOptions() { if (is_null($this->_options)) { $this->_options = array( array( "label" => Mage::helper("eav")->__("End Consumer / DIY"),"value" => 1 ),array( "label" => Mage::helper("eav")->__("Service Technician"),"value" => 2 ),array( "label" => Mage::helper("eav")->__("Other Professional"),"value" => 3 ),); } return $this->_options; } /** * Retrieve option array * * @return array */ public function getOptionArray() { $_options = array(); foreach ($this->getAllOptions() as $option) { $_options[$option["value"]] = $option["label"]; } return $_options; } /** * Get a text for option value * * @param string|integer $value * @return string */ public function getOptionText($value) { $options = $this->getAllOptions(); foreach ($options as $option) { if ($option["value"] == $value) { return $option["label"]; } } return false; } /** * Retrieve Column(s) for Flat * * @return array */ public function getFlatColums() { $columns = array(); $columns[$this->getAttribute()->getAttributeCode()] = array( "type" => "tinyint(1)","unsigned" => false,"is_null" => true,"default" => null,"extra" => null ); return $columns; } /** * Retrieve Indexes(s) for Flat * * @return array */ public function getFlatIndexes() { $indexes = array(); $index = "IDX_" . strtoupper($this->getAttribute()->getAttributeCode()); $indexes[$index] = array( "type" => "index","fields" => array($this->getAttribute()->getAttributeCode()) ); return $indexes; } /** * Retrieve Select For Flat Attribute update * * @param int $store * @return Varien_Db_Select|null */ public function getFlatUpdateSelect($store) { return Mage::getResourceModel("eav/entity_attribute") ->getFlatUpdateSelect($this->getAttribute(),$store); } } 文件 – / app / code / local / PS / PB / sql / customerattribute1462360584_setup <?php $installer = $this; $installer->startSetup(); $installer->addAttribute("customer_address","cstpb",array( "type" => "int","backend" => "","label" => "Primary Business","input" => "select","source" => "pb/eav_entity_attribute_source_customeroptions14623605840","visible" => true,"required" => true,"default" => "","frontend" => "","unique" => false,"note" => "" )); $attribute = Mage::getSingleton("eav/config")->getAttribute("customer_address","cstpb"); $used_in_forms=array(); $used_in_forms[]="adminhtml_customer"; $used_in_forms[]="checkout_register"; $used_in_forms[]="customer_account_create"; $used_in_forms[]="customer_account_edit"; $used_in_forms[]="adminhtml_checkout"; $used_in_forms[]="adminhtml_customer_address"; $used_in_forms[]="customer_register_address"; $used_in_forms[]="customer_address_edit"; $attribute->setData("used_in_forms",$used_in_forms) ->setData("is_used_for_customer_segment",true) ->setData("is_system",0) ->setData("is_user_defined",1) ->setData("is_visible",1) ->setData("sort_order",100) ; $attribute->save(); $installer->endSetup(); XML文件 – /app/etc/modules/PS_PB.xml <?xml version="1.0"?> <config> <modules> <PS_PB> <active>true</active> <codePool>local</codePool> <version>0.1.0</version> </PS_PB> </modules> </config> 更新 在config.xml文件中进行修正后,它的工作正常.
现在该属性显示结帐页面和管理客户页面和客户我的帐户部分,但在本节中.我无法更新.需要在config.xml中添加哪些字段fot customer_account标签. 我已经在config.xml中添加了 <customer_account> <primary_business> <create>1</create> <update>1</update> </primary_business> </customer_account>
您的安装脚本代码对我来说是正确的,尽管我没有运行它来测试.
首先,确保您的安装脚本正在执行. 第二, 您可以通过导航到客户>通过管理员创建“客户属性”属性>管理属性 http://awesomescreenshot.com/0b35uq1542 Magento应该在配置的区域中显示您的属性,如果它的行为方式应该.我建议您先手动创建属性并查看是否显示.如果不是,您的主题或其他扩展可能会覆盖负责呈现这些属性的代码. 一旦你知道主题是渲染你想要的,你想要的,你可以创建一个沙盒脚本来加载属性并获取数据.查看“管理员”创建的属性数据通常会显示我错过的内容. 这样的事情 <?php require_once('app/Mage.php'); Mage::app()->setCurrentStore('0'); $attribute_id = 9999; // YOU ADMIN CREATED ATTRIBUTE ID $attributeModel = Mage::getModel('eav/attribute')->load($attribute_id); var_dump($attributeModel->getData()); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |