เพิ่มฟิลด์ใหม่ในการลงทะเบียนลูกค้า magento (1.9)


28

ฉันต้องการเพิ่มฟิลด์ใหม่ในการลงทะเบียนลูกค้าและสร้างแบบฟอร์มการดูแลลูกค้า

ชื่อฟิลด์เป็นหมายเลขใบอนุญาต ฉันค้นหาลิงก์จำนวนมากที่เกี่ยวข้องกับความต้องการของฉัน แต่ลิงก์เหล่านั้นไม่ทำงานใน Magento (1.9) แม้ว่าฉันจะพบส่วนขยายที่เกี่ยวข้องกับสิ่งนี้:

http://www.magentocommerce.com/magento-connect/custome-account-profile-13594.html

เมื่อฉันติดตั้งส่วนขยายด้านบนโดยใช้กุญแจมันจะแสดงข้อผิดพลาด คุณช่วยให้ความคิดที่เกี่ยวข้องกับความต้องการของฉันได้ไหม?


นอกจากนี้ยังมีข้อผิดพลาดที่คุณได้รับในส่วนขยายด้านบน ... โปรดส่งรายละเอียดให้มากที่สุดเท่าที่จะทำได้ ..
Siddharth Vaghasia

นี้ได้รับการตอบก่อนหน้านี้ที่นี่: magento.stackexchange.com/questions/14163/…
tecjam

คำตอบ:


55

คุณต้องสร้างส่วนขยายใหม่เพื่อทำให้มันสะอาด
เรียกนามสกุลStackExchange_Customerกัน
คุณจะต้องใช้ไฟล์ต่อไปนี้:

app/etc/modules/StackExchange_Customer.xml - ไฟล์ประกาศ

<?xml version="1.0"?>
<config>
    <modules>
        <StackExchange_Customer>
            <active>true</active>
            <codePool>local</codePool>
            <depends><Mage_Customer/></depends>
        </StackExchange_Customer>
    </modules>
</config> 

app/code/local/StackExchange/Customer/etc/config.xml - ไฟล์กำหนดค่า

<?xml version="1.0"?>
<config>
    <modules>
        <StackExchange_Customer>
            <version>1.0.0</version>
        </StackExchange_Customer>
    </modules>
    <global>
        <helpers>
            <stackexchange_customer>
                <class>StackExchange_Customer_Helper</class>
            </stackexchange_customer>
        </helpers>
        <resources>
            <stackexchange_customer_setup>
                <setup>
                    <module>StackExchange_Customer</module>
                    <class>Mage_Customer_Model_Resource_Setup</class>
                </setup>
            </stackexchange_customer_setup>
        </resources>
    </global>
    <frontend>
        <layout>
            <updates>
                <stackexchange_customer>
                    <file>stackexchange_customer.xml</file>
                </stackexchange_customer>
            </updates>
        </layout>
        <translate>
            <modules>
                <StackExchange_Customer>
                    <files>
                        <default>StackExchange_Customer.csv</default>
                    </files>
                </StackExchange_Customer>
            </modules>
        </translate>
    </frontend>
</config>

app/code/local/StackExchange/Customer/sql/stackexchange_customer_setup/install-1.0.0.php- ไฟล์ติดตั้ง จะเพิ่มคุณสมบัติใหม่

<?php
$this->addAttribute('customer', 'license_number', array(
    'type'      => 'varchar',
    'label'     => 'License Number',
    'input'     => 'text',
    'position'  => 120,
    'required'  => false,//or true
    'is_system' => 0,
));
$attribute = Mage::getSingleton('eav/config')->getAttribute('customer', 'license_number');
$attribute->setData('used_in_forms', array(
    'adminhtml_customer',
    'checkout_register',
    'customer_account_create',
    'customer_account_edit',
));
$attribute->setData('is_user_defined', 0);
$attribute->save();

app/code/local/StackExchange/Customer/Helper/Data.php - ผู้ช่วยหลักของโมดูล

<?php
class StackExchange_Customer_Helper_Data extends Mage_Core_Helper_Abstract
{

}

สิ่งนี้จะเพิ่มคุณสมบัติของคุณให้กับลูกค้า
มันควรใช้กับแบ็กเอนด์
น่าเสียดายที่คุณต้องแก้ไขเทมเพลตส่วนหน้าด้วยตนเองเนื่องจาก Magento ไม่มีเหตุการณ์หรือบล็อกว่างเปล่าที่คุณสามารถใส่ฟิลด์ของคุณ
สำหรับสิ่งนี้คุณต้องมีสิ่งต่อไปนี้

app/design/frontend/base/default/layout/stackexchange_customer.xml

<?xml version="1.0"?>
<layout>
    <customer_account_edit>
        <reference name="customer_edit">
            <action method="setTemplate">
                <template>stackexchange_customer/form/edit.phtml</template>
            </action>
        </reference>
    </customer_account_edit>
    <customer_account_create>
        <reference name="customer_form_register">
            <action method="setTemplate">
                <template>stackexchange_customer/register.phtml</template>
            </action>
        </reference>
    </customer_account_create>
</layout>

และตอนนี้เทมเพลต

app/design/frontend/base/default/template/stackexchange_customer/register.phtml- เทมเพลตการลงทะเบียน
สำหรับอันนี้ทำการโคลนนิ่งของ/app/design/frontend/{package}/{theme}/template/persistent/customer/form/register.phtmlและแค่แทรกอันนี้ไว้ที่ไหนสักแห่งในแบบฟอร์ม ฉันไม่จำเป็นต้องโพสต์ไฟล์แบบเต็มที่นี่ จัดเรียงตามที่คุณต้องการ

<li>
    <label for="license_number"><?php echo $this->__('License Number') ?></label>
    <div class="input-box">
        <input type="text" name="license_number" id="license_number" value="<?php echo $this->escapeHtml($this->getFormData()->getLicenseNumber()) ?>" title="<?php echo $this->__('License Number') ?>" class="input-text" />
    </div>
</li>

/app/design/frontend/base/default/template/stackexchange_customer/form/edit.phtmlสำหรับโคลนอันนี้/app/design/frontend/{package}/{theme}/template/customer/form/edit.phtmlและแทรกที่ใดที่หนึ่งภายในฟอร์มนี้:

<li>
    <label for="license_number"><?php echo $this->__('License Number') ?></label>
    <div class="input-box">
        <input type="text" name="license_number" id="license_number" value="<?php echo $this->htmlEscape($this->getCustomer()->getLicenseNumber()) ?>" title="<?php echo $this->__('License Number') ?>" class="input-text" />
    </div>
</li>

คุณยังสามารถสร้างไฟล์การแปล ไม่ได้บังคับ แต่ก็ดีที่มี

app/locale/en_US/StackExchange_Customer.csv

"License Number","License Number"

ล้างแคชและคุณควรตั้งค่า


ฉันทำตามวิธีของคุณ แต่ฟิลด์ไม่แสดงในหน้าผู้ใช้ลังผู้ดูแลระบบ
senthil

@senthil คุณพูดถูก ขอโทษสำหรับเรื่องนั้น. ฉันวางสคริปต์การติดตั้งผิด ฉันอัพเดตคำตอบด้วยapp/code/local/StackExchange/Customer/sql/stackexchange_customer_setup/install-1.0.0.phpไฟล์ที่ถูกต้อง เนื่องจากคุณติดตั้งโมดูลไว้แล้วสคริปต์การติดตั้งใหม่จะไม่ทำงานอีกครั้ง ที่จะทำให้มันทำงานอีกครั้งคุณจะต้องลบออกจากตารางeav_attributeแอตทริบิวต์ที่มีรหัสlicense_numberและจากตารางบันทึกด้วยรหัสcore_resource StackExchange_Customerล้างแคชและรีเฟรชหน้า สคริปต์การติดตั้งควรทำงานอีกครั้ง
Marius

2
@senthil หากคุณวางแผนที่จะเพิ่มสาขาอื่น ๆ ที่คุณควรโคลนinstall-1.0.0ไปupgrade-1.0.0-1.0.1และจะปรับเปลี่ยนในไฟล์โคลน แล้วเปลี่ยนversionแท็กในการconfig.xml 1.0.1ดูวิธีการอัปเกรดสคริปต์ทำงานที่นี่: magento.stackexchange.com/q/26313/146
Marius

1
สวัสดีคุณไม่ได้บอกเราว่าจะตั้งค่าคุณลักษณะหลายอย่างได้อย่างไร ฉันลองหลายครั้งโดยปรับเปลี่ยนรหัสของคุณ ยังไม่ทำงาน โปรดอธิบาย
Pratik

1
@Haris สำหรับการอัปโหลดคุณส่วนใหญ่อาจต้องทำอะไรพิเศษ แต่ฉันไม่รู้อะไรเลย
Marius

0

ขอขอบคุณ Marius มีเพียงสิ่งเดียวเท่านั้นเขตข้อมูลไม่แสดงในข้อมูลการเรียกเก็บเงินเช็คเอาต์สำหรับการลงทะเบียน

ฉันจะให้ฟิลด์แสดงในการลงทะเบียนชำระเงินได้อย่างไร

ขอบคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.