Додати нове поле у ​​реєстрації клієнта 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. Ти правий. Вибач за це. Я вставив неправильний сценарій встановлення. Я оновив відповідь правильним app/code/local/StackExchange/Customer/sql/stackexchange_customer_setup/install-1.0.0.phpфайлом. Оскільки ви вже встановили модуль, новий сценарій встановлення не запуститься знову. Щоб запустити його знову, потрібно видалити з таблиці eav_attributeатрибут з кодом, license_numberа з таблиці core_resourceзапис з кодом StackExchange_Customer. Очистіть кеш і оновіть сторінку. Сценарій встановлення повинен запуститися знову.
Маріус

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
Привіт, пане, ти не сказав нам, як встановити кілька атрибутів? Я спробував декілька attrs, змінивши ваш код. Ще не працює. Поясніть, будь ласка,
Пратік

1
@Haris, для завантаження вам, швидше за все, доведеться зробити щось додаткове, але я не знаю що.
Маріус

0

Дякую, Маріус, лише річ, поле не відображає в реєстрації платіжну інформацію для реєстрації.

Яким чином я можу зробити теренний показ при реєстрації каси?

Спасибі

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.