Magento'ya yeni alan ekle (1.9) müşteri kaydı


28

Müşteri kaydı ve yönetici müşteri oluşturma formuna yeni alan eklemek istiyorum.

Alan adı lisans numarasıdır . İhtiyacımla ilgili pek çok bağlantı aradım, ancak bunlar Magento'da çalışmıyor (1.9). Hatta bununla ilgili uzantı buldum:

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

Yukarıdaki uzantıyı anahtar kullanarak kurduğumda, bir hata gösteriyor. Lütfen ihtiyacımla ilgili bir fikir verebilir misiniz?


Ayrıca, yukarıdaki uzantıda hangi hatayı
alıyorsanız verin

Bu daha önce burada cevaplandırılmıştır: magento.stackexchange.com/questions/14163/…
tecjam

Yanıtlar:


55

Temizlemek için yeni bir uzantı oluşturmanız gerekir.
Uzantıyı arayalım StackExchange_Customer.
Aşağıdaki dosyalara ihtiyacınız olacak:

app/etc/modules/StackExchange_Customer.xml - beyan dosyası

<?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 - yapılandırma dosyası

<?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- yükleme dosyası. Yeni özniteliği ekleyecektir.

<?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 - modül ana yardımcısı

<?php
class StackExchange_Customer_Helper_Data extends Mage_Core_Helper_Abstract
{

}

Bu müşteri için özniteliğinizi ekleyecektir.
Arka uçta iyi çalışması gerekir.
Maalesef, Magento'nun şu anda el ile düzenlediği şablonları düzenlemelisiniz, çünkü Magento'nun alanlarınızı koyabileceğiniz herhangi bir etkinlik veya boş blok bulunmuyor.
Bunun için aşağıdakilere ihtiyacınız var.

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>

Ve şimdi şablonlar.

app/design/frontend/base/default/template/stackexchange_customer/register.phtml- kayıt şablonu.
Bunun için bir klonu yapın /app/design/frontend/{package}/{theme}/template/persistent/customer/form/register.phtmlve bunu formun içine bir yere yerleştirin. Dolu dosyayı buraya göndermeme gerek yok. Lütfen istediğiniz gibi düzenleyin

<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.phtmlBunun için klonlayın /app/design/frontend/{package}/{theme}/template/customer/form/edit.phtmlve formun içine bir yere yerleştirin:

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

Ayrıca çeviri dosyasını da oluşturabilirsiniz. Zorunlu değil ama olması güzel

app/locale/en_US/StackExchange_Customer.csv

"License Number","License Number"

Önbelleği temizledikten sonra ayarlanması gerekir.


sana göre takip ediyorum, ama alan yönetici sandığı kullanıcı sayfasında gösterilmiyor.
senthil

@senthil. Haklısın. Bunun için üzgünüm. Yanlış kurulum komut dosyasını yapıştırdım. Cevabı doğru app/code/local/StackExchange/Customer/sql/stackexchange_customer_setup/install-1.0.0.phpdosya ile güncelledim . Modülü zaten yüklediğiniz için yeni kurulum betiği tekrar çalışmayacak. Tekrar çalışmasını sağlamak için eav_attribute, koddaki özniteliği license_numbertablodan core_resourceve tablodaki kayıt kodunu silmeniz gerekir StackExchange_Customer. Önbelleği temizleyin ve sayfayı yenileyin. Kurulum betiği tekrar çalışmalı.
Marius

2
Eğer diğer alanları eklemeyi planlıyorsanız @senthil klonlamak gerekir install-1.0.0etmek upgrade-1.0.0-1.0.1ve klonlanmış dosyasında değişiklikler yapmak. Sonra versionetiketi olarak config.xmldeğiştirin 1.0.1. Yükseltme komut dosyalarının burada nasıl çalıştığını görün: magento.stackexchange.com/q/26313/146
Marius

1
Merhaba efendim, bize söylemedi nasıl birden fazla özniteliklerini ayarlamak için? Kodunuzu değiştirerek birden fazla attr için denedim. Hala çalışmıyor . Lütfen açıklayın
Pratik

1
@Haris, yüklemeler için büyük olasılıkla fazladan bir şeyler yapmak zorundasın, ama ne olduğunu bilmiyorum.
Marius

0

Teşekkürler Marius, sadece bir şey, alan kayıt için ödeme fatura bilgilerinde gösterilmez.

Check-up kaydında sahayı nasıl gösterebilirim?

Teşekkürler

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.