回答
我不知道你所做的是什麼,所以我只列出爲Magento 1.6.1註冊表單添加一個新的schooL客戶屬性所需的所有步驟。
最好創建一個模塊,或者在某些.phtml文件中放置相似的代碼並運行一次。如果你這樣做是正確的,並創建一個模塊,把這樣的代碼到mysql_install中的文件:
<?php $installer = $this; $installer->startSetup(); $setup = Mage::getModel('customer/entity_setup', 'core_setup'); $setup->addAttribute('customer', 'school', array( 'type' => 'int', 'input' => 'select', 'label' => 'School', 'global' => 1, 'visible' => 1, 'required' => 0, 'user_defined' => 1, 'default' => '0', 'visible_on_front' => 1, 'source'=> 'profile/entity_school', )); if (version_compare(Mage::getVersion(), '1.6.0', '<=')) { $customer = Mage::getModel('customer/customer'); $attrSetId = $customer->getResource()->getEntityType()->getDefaultAttributeSetId(); $setup->addAttributeToSet('customer', $attrSetId, 'General', 'school'); } if (version_compare(Mage::getVersion(), '1.4.2', '>=')) { Mage::getSingleton('eav/config') ->getAttribute('customer', 'school') ->setData('used_in_forms', array('adminhtml_customer','customer_account_create','customer_account_edit','checkout_register')) ->save(); } $installer->endSetup(); ?>
在你的模塊config.xml文件。請注意,我的模塊的名稱是Excellence_Profile。
<profile_setup> <!-- Replace with your module name --> <setup> <module>Excellence_Profile</module> <!-- Replace with your module name --> <class>Mage_Customer_Model_Entity_Setup</class> </setup> </profile_setup>
這裏我們將把我們的屬性添加到客戶註冊表中。在版本1.6.0(+)中使用的phtml文件是
persistance/customer/register.phtml
和版本1.6.0( - )所使用的phtml文件是customer/form/register.phtml
因此,我們需要打開基於magento版本的phtml文件,並在代碼中添加此代碼。<li> <?php $attribute = Mage::getModel('eav/config')->getAttribute('customer','school'); ?> <label for="school" class="<?php if($attribute->getIsRequired() == true){?>required<?php } ?>"><?php if($attribute->getIsRequired() == true){?><em>*</em><?php } ?><?php echo $this->__('School') ?></label> <div class="input-box"> <select name="school" id="school" class="<?php if($attribute->getIsRequired() == true){?>required-entry<?php } ?>"> <?php $options = $attribute->getSource()->getAllOptions(); foreach($options as $option){ ?> <option value='<?php echo $option['value']?>' <?php if($this->getFormData()->getSchool() == $option['value']){ echo 'selected="selected"';}?>><?php echo $this->__($option['label'])?></option> <?php } ?> </select> </div> </li>
對於magento的1.4.2(+),其是所有所需的配準步驟。如果您從此處創建用戶,則應該在管理員中看到學校文本字段。 對於Magento的1.4.1( - ),我們需要做的另一件事打開你的模塊config.xml文件並添加:
<global> <fieldsets> <customer_account> <school><create>1</create><update>1</update><name>1</name></school> </customer_account> </fieldsets> </global>
一旦,用戶已經創建了他的賬戶在MyAccount->帳戶信息部分他也應該能夠編輯學校領域。對於本打開PHTML文件
customer/form/edit.phtml
,並把代碼中:<?php <li> <?php $attribute = Mage::getModel('eav/config')->getAttribute('customer','school'); ?> <label for="is_active" class="<?php if($attribute->getIsRequired() == true){?>required<?php } ?>"><?php if($attribute->getIsRequired() == true){?><em>*</em><?php } ?><?php echo $this->__('School') ?></label> <div class="input-box"> <select name="school" id="school" class="<?php if($attribute->getIsRequired() == true){?>required-entry<?php } ?>"> <?php $options = $attribute->getSource()->getAllOptions(); foreach($options as $option){ ?> <option value='<?php echo $option['value']?>' <?php if($this->getCustomer()->getSchool() == $option['value']){ echo 'selected="selected"';}?>><?php echo $this->__($option['label'])?></option> <?php } ?> </select> </div> </li>
登記表也以在Magento結賬頁面顯示出來。在這裏添加您現場,你需要編輯
checkout/onepage/billing.phtml
爲Magento的1.6版本( - )和persistant/checkout/onepage/billing.phtml
的Magento的版本1.6(+)文件,然後找到代碼:<?php if(!$this->isCustomerLoggedIn()): ?>
這裏面如果條件添加你的領域
<li> <li> <?php $attribute = Mage::getModel('eav/config')->getAttribute('customer','school'); ?> <label for="school" class="<?php if($attribute->getIsRequired() == true){?>required<?php } ?>"><?php if($attribute->getIsRequired() == true){?><em>*</em><?php } ?><?php echo $this->__('School') ?></label> <div class="input-box"> <select name="billing[school]" id="school" class="<?php if($attribute->getIsRequired() == true){?>required-entry<?php } ?>"> <?php $options = $attribute->getSource()->getAllOptions(); foreach($options as $option){ ?> <option value='<?php echo $option['value']?>'><?php echo $this->__($option['label'])?></option> <?php } ?> </select> </div> </li>
下一頁打開模塊的config.xml或任何其他config.xml文件,添加以下行:
<global> <fieldsets> <checkout_onepage_quote> <customer_school> <to_customer>school</to_customer> </customer_school> </checkout_onepage_quote> <customer_account> <school> <to_quote>customer_school</to_quote> </school> </customer_account> </fieldsets> </global>
接下來,我們需要對magento中的報價表(即sales_flat_quote表)進行一些更改。如果你有一個模塊,然後創建您的SQL文件的升級版本,並把這個代碼:
$tablequote = $this->getTable('sales/quote'); $installer->run(" ALTER TABLE $tablequote ADD `customer_school` INT NOT NULL ");
做這個一定要清楚你的Magento緩存,特別是「同花順的Magento緩存」和「清除之後緩存存儲「。 現在,當您下訂單時,將使用正確的學校屬性創建客戶。
我在checkout_register表單中保存新字段時遇到了問題。
我不得不延長全球 - >字段集節點:
<global>
<fieldsets>
<checkout_onepage_quote>
<customer_school>
<to_customer>school</to_customer>
</customer_school>
</checkout_onepage_quote>
<checkout_onepage_billing>
<school>
<to_customer>*</to_customer>
</school>
</checkout_onepage_billing>
<customer_account>
<school>
<to_quote>customer_school</to_quote>
</school>
</customer_account>
<sales_convert_order>
<customer_school>
<to_quote>*</to_quote>
</customer_school>
</sales_convert_order>
</fieldsets>
</global>
- 1. 創建新客戶
- 2. 如何在新書上創建新客戶時在whmcs中創建客戶端?
- 3. 如何向客戶添加新字段
- 4. 如何創建/更新潛在客戶?
- 5. 如何最好地爲每個用戶/客戶創建自定義字段?
- 6. 如何在Dynamics CRM 2011中創建「客戶」類型的字段?
- 7. Stripe - 爲客戶創建新卡
- 8. 如何爲ios創建Gmail客戶端?
- 9. 如何爲客戶創建登錄?
- 10. 如何爲網站創建客戶端?
- 11. 創建新客戶組 - Prestashop
- 12. magento填充字段爲客戶創建訂單
- 13. 創建新字段
- 14. 用戶如何通過創建新屬性來爲表添加新字段
- 15. 如何讓客戶端爲其他客戶端創建一個套接字
- 16. Magento添加額外的字段/客戶/帳戶/創建/頁
- 17. 如何創建用戶字段別名的UserProfile字段?
- 18. 如何根據用戶提供的字段創建字段?
- 19. WordPress的:爲用戶創建一個新的usermeta字段
- 20. 如何在Django中爲用戶模型創建密碼字段?
- 21. 如何在Django中爲用戶創建特殊字段
- 22. '創建'和'更新'字段
- 23. 如何使用IterationPath作爲數據源創建新字段
- 24. 條紋爲現有用戶的購買創建新客戶
- 25. Zend Framework:創建新的潛在客戶
- 26. Magento - 創建新的客戶屬性
- 27. 數據庫創建新訪客用戶
- 28. Magento創建新的客戶頁面
- 29. 在Magento中創建新客戶(RESTful,PHP)
- 30. 不能重新創建客戶端
偉大的東西謝謝!對於'source'=>'profile/entity_school',我們需要爲那個創建一個特定的模型,我不需要它,但是對於其他人來說,將其作爲一個很酷的例子。 – Shadowbob