Tambahkan bidang baru di magento (1.9) pendaftaran pelanggan

28

Saya ingin menambahkan bidang baru dalam pendaftaran pelanggan dan formulir pembuatan pelanggan admin.

Nama bidang adalah nomor lisensi . Saya mencari begitu banyak tautan yang terkait dengan kebutuhan saya tetapi itu tidak berfungsi di Magento (1.9). Bahkan saya menemukan ekstensi terkait dengan ini:

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

Ketika saya menginstal ekstensi di atas menggunakan kunci, itu menunjukkan kesalahan. Bisakah Anda memberikan beberapa ide terkait dengan kebutuhan saya?

senthil
sumber
Juga berikan kesalahan apa yang Anda dapatkan pada ekstensi di atas ... kirimkan detail sebanyak mungkin ..
Siddharth Vaghasia
Ini sebelumnya telah dijawab di sini: magento.stackexchange.com/questions/14163/…
tecjam

Jawaban:

55

Anda perlu membuat ekstensi baru untuk membuatnya bersih.
Mari kita sebut ekstensi StackExchange_Customer.
Anda membutuhkan file-file berikut:

app/etc/modules/StackExchange_Customer.xml - file deklarasi

<?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 - file konfigurasi

<?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- file instal. Akan menambah atribut baru.

<?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 - pembantu utama modul

<?php
class StackExchange_Customer_Helper_Data extends Mage_Core_Helper_Abstract
{

}

Ini akan menambahkan atribut Anda untuk pelanggan.
Ini harus bekerja dengan baik di backend.
Sayangnya Anda harus mengedit templat frontend secara manual sekarang karena Magento tidak memiliki acara atau blok kosong tempat Anda dapat meletakkan bidang Anda.
Untuk ini, Anda perlu yang berikut ini.

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>

Dan sekarang templatnya.

app/design/frontend/base/default/template/stackexchange_customer/register.phtml- templat pendaftaran.
Untuk yang satu ini buat klon /app/design/frontend/{package}/{theme}/template/persistent/customer/form/register.phtmldan masukkan saja di suatu tempat di dalam formulir. Saya tidak perlu memposting file lengkap di sini. Aturlah sesukamu

<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.phtmlUntuk klon yang satu ini /app/design/frontend/{package}/{theme}/template/customer/form/edit.phtmldan masukkan di suatu tempat di dalam formulir ini:

<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>

Anda juga dapat membuat file terjemahan. Tidak wajib tetapi itu menyenangkan untuk dimiliki

app/locale/en_US/StackExchange_Customer.csv

"License Number","License Number"

Bersihkan cache dan Anda harus mengatur.

Marius
sumber
saya ikuti sesuai cara Anda, tetapi bidang tidak ditampilkan di halaman pengguna admin peti.
Senthil
@ senthil. Kamu benar. Maaf soal itu. Saya menyisipkan skrip instalasi yang salah. Saya memperbarui jawabannya dengan app/code/local/StackExchange/Customer/sql/stackexchange_customer_setup/install-1.0.0.phpfile yang benar . Karena Anda sudah menginstal modul, skrip instalasi baru tidak akan berjalan lagi. Untuk membuatnya berjalan lagi, Anda perlu menghapus dari tabel eav_attributeatribut dengan kode license_numberdan dari tabel core_resourcecatatan dengan kode StackExchange_Customer. Bersihkan cache dan segarkan halaman. Skrip instalasi harus dijalankan lagi.
Marius
2
@senthil Jika Anda berencana untuk menambahkan bidang lain Anda harus mengkloning install-1.0.0ke upgrade-1.0.0-1.0.1dan melakukan modifikasi Anda dalam file kloning. Kemudian ubah versiontag config.xmlke 1.0.1. Lihat cara kerja skrip pemutakhiran di sini: magento.stackexchange.com/q/26313/146
Marius
1
Hai pak, Anda tidak memberi tahu kami Cara mengatur beberapa atribut? Saya mencoba beberapa attr dengan memodifikasi kode Anda. Masih tidak bekerja . Tolong jelaskan
Pratik
1
@Haris, untuk unggahan, Anda kemungkinan besar harus melakukan sesuatu yang ekstra, tapi saya tidak tahu apa.
Marius
0

Terima kasih Marius, hanya satu hal, bidang tidak muncul di checkout informasi tagihan untuk pendaftaran.

Bagaimana saya bisa membuat tampilan lapangan dalam pendaftaran checkout?

Terima kasih

DanMar
sumber