Dodaj nowe pole w rejestracji klienta magento (1.9)


28

Lubię dodawać nowe pole w formularzu rejestracji klienta i tworzeniu klienta administracyjnego.

Nazwa pola to numer licencji . Przeszukałem tak wiele linków związanych z moim wymaganiem, ale te nie działają w Magento (1.9). Nawet ja znalazłem związane z tym rozszerzenie:

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

Kiedy zainstalowałem powyższe rozszerzenie za pomocą klucza, pokazuje błąd. Czy możesz podać jakiś pomysł związany z moim wymaganiem?


Podaj także, jaki błąd pojawia się powyżej rozszerzenia ... prześlij jak najwięcej szczegółów ...
Siddharth Vaghasia

Na to wcześniej odpowiedziano tutaj: magento.stackexchange.com/questions/14163/…
tecjam

Odpowiedzi:


55

Musisz utworzyć nowe rozszerzenie, aby było czyste.
Nazwijmy rozszerzenie StackExchange_Customer.
Potrzebne będą następujące pliki:

app/etc/modules/StackExchange_Customer.xml - plik deklaracji

<?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 - plik konfiguracyjny

<?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- plik instalacyjny. Dodaje nowy atrybut.

<?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 - główny pomocnik modułu

<?php
class StackExchange_Customer_Helper_Data extends Mage_Core_Helper_Abstract
{

}

Spowoduje to dodanie atrybutu do klienta.
Powinien dobrze działać na backend.
Niestety musisz teraz ręcznie edytować szablony interfejsu, ponieważ Magento nie ma żadnego zdarzenia ani pustego bloku, w którym możesz umieścić swoje pola.
W tym celu potrzebujesz:

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>

A teraz szablony.

app/design/frontend/base/default/template/stackexchange_customer/register.phtml- szablon rejestracji.
W tym celu utwórz klon /app/design/frontend/{package}/{theme}/template/persistent/customer/form/register.phtmli po prostu wstaw go gdzieś w formularzu. Nie muszę tutaj publikować pełnego pliku. Ułóż to jak chcesz

<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.phtmlDla tego jednego klonu /app/design/frontend/{package}/{theme}/template/customer/form/edit.phtmli wstaw gdzieś w formularzu:

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

Możesz także utworzyć plik tłumaczenia. To nie jest obowiązkowe, ale dobrze jest mieć

app/locale/en_US/StackExchange_Customer.csv

"License Number","License Number"

Wyczyść pamięć podręczną i powinieneś być ustawiony.


postępuję zgodnie z twoją drogą, ale pole nie wyświetla się na stronie użytkownika skrzynki administracyjnej.
sentil

@senthil. Masz rację. Przepraszam za to. Wkleiłem niewłaściwy skrypt instalacyjny. Zaktualizowałem odpowiedź poprawnym app/code/local/StackExchange/Customer/sql/stackexchange_customer_setup/install-1.0.0.phpplikiem. Ponieważ moduł został już zainstalowany, nowy skrypt instalacyjny nie uruchomi się ponownie. Aby ponownie uruchomić, musisz usunąć z tabeli eav_attributeatrybut z kodem, license_numbera z tabeli core_resourcerekord z kodem StackExchange_Customer. Wyczyść pamięć podręczną i odśwież stronę. Skrypt instalacyjny powinien zostać uruchomiony ponownie.
Marius

2
@senthil Jeśli planujesz dodać inne pola należy sklonować install-1.0.0się upgrade-1.0.0-1.0.1i robić swoje modyfikacje w sklonowanego pliku. Następnie zmień versiontag config.xmlna 1.0.1. Zobacz, jak działają skrypty aktualizacji: magento.stackexchange.com/q/26313/146
Marius

1
Cześć, pan nie powiedział nam, jak ustawić wiele atrybutów? Próbowałem wielu attrów, modyfikując kod. Wciąż nie działa . Proszę wyjaśnić
Pratik,

1
@Haris, w przypadku przesyłania najprawdopodobniej musisz zrobić coś dodatkowego, ale nie wiem co.
Marius

0

Dzięki Marius, tylko jedno, pole nie wyświetla się w kasie informacje rozliczeniowe do rejestracji.

Jak sprawić, aby pole pojawiło się podczas rejestracji w kasie?

Dzięki

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.