Thêm lĩnh vực mới trong đăng ký khách hàng magento (1.9)


28

Tôi muốn thêm lĩnh vực mới trong đăng ký khách hàng và hình thức tạo khách hàng quản trị viên.

Tên trường là số giấy phép . Tôi đã tìm kiếm rất nhiều liên kết liên quan đến yêu cầu của tôi nhưng những liên kết đó không hoạt động trong Magento (1.9). Ngay cả tôi cũng tìm thấy phần mở rộng liên quan đến điều này:

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

Khi tôi cài đặt tiện ích mở rộng ở trên bằng phím, nó sẽ báo lỗi. Bạn có thể vui lòng cho một số ý tưởng liên quan đến yêu cầu của tôi?


Cũng cung cấp những gì bạn đang gặp phải trong phần mở rộng ở trên ... vui lòng gửi càng nhiều chi tiết càng tốt ..
Siddharth Vaghasia

Điều này đã được trả lời trước đây tại đây: magento.stackexchange.com/questions/14163/ trên
tecjam

Câu trả lời:


55

Bạn cần tạo một phần mở rộng mới để làm cho nó sạch sẽ.
Hãy gọi phần mở rộng StackExchange_Customer.
Bạn sẽ cần các tệp sau:

app/etc/modules/StackExchange_Customer.xml - hồ sơ khai

<?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 - tập tin cấu hình

<?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- tập tin cài đặt. Sẽ thêm thuộc tính mới.

<?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 - người trợ giúp chính của mô-đun

<?php
class StackExchange_Customer_Helper_Data extends Mage_Core_Helper_Abstract
{

}

Điều này sẽ thêm thuộc tính của bạn cho khách hàng.
Nó sẽ hoạt động độc đáo trên phụ trợ.
Thật không may, bạn phải chỉnh sửa các mẫu frontend ngay bây giờ vì Magento không có bất kỳ sự kiện hoặc khối trống nào nơi bạn có thể đặt các trường của mình.
Đối với điều này, bạn cần những điều sau đây.

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>

Và bây giờ là các mẫu.

app/design/frontend/base/default/template/stackexchange_customer/register.phtml- mẫu đăng ký.
Đối với cái này, tạo một bản sao của /app/design/frontend/{package}/{theme}/template/persistent/customer/form/register.phtmlvà chỉ cần chèn cái này vào đâu đó bên trong biểu mẫu. Tôi không cần phải đăng toàn bộ hồ sơ ở đây. Sắp xếp nó như bạn muốn

<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Đối với cái này, một bản sao /app/design/frontend/{package}/{theme}/template/customer/form/edit.phtmlvà chèn vào đâu đó bên trong mẫu này:

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

Bạn cũng có thể tạo tập tin dịch. Không bắt buộc nhưng thật tuyệt khi có

app/locale/en_US/StackExchange_Customer.csv

"License Number","License Number"

Xóa bộ nhớ cache và bạn sẽ được đặt.


Tôi làm theo theo cách của bạn, nhưng trường không hiển thị trên trang người dùng thùng quản trị.
Senthil

@sthil. Bạn đúng rồi. Xin lỗi vì điều đó. Tôi dán kịch bản cài đặt sai. Tôi cập nhật câu trả lời với các app/code/local/StackExchange/Customer/sql/stackexchange_customer_setup/install-1.0.0.phptập tin chính xác . Vì bạn đã cài đặt mô-đun, tập lệnh cài đặt mới sẽ không chạy lại. Để làm cho nó chạy lại, bạn cần xóa khỏi bảng eav_attributethuộc tính với mã license_numbervà từ bảng core_resourcebản ghi với mã StackExchange_Customer. Xóa bộ nhớ cache và làm mới trang. Kịch bản cài đặt sẽ chạy lại.
Marius

2
@senthil Nếu bạn có kế hoạch để thêm các lĩnh vực khác, bạn nên sao chép install-1.0.0đến upgrade-1.0.0-1.0.1và làm thay đổi của bạn trong file nhân bản. Sau đó thay đổi versionthẻ trong config.xmlđể 1.0.1. Xem cách các kịch bản nâng cấp hoạt động tại đây: magento.stackexchange.com/q/26313/146
Marius

1
Chào ông, ông không cho chúng tôi biết cách đặt nhiều thuộc tính? Tôi đã cố gắng cho nhiều attrs bằng cách sửa đổi mã của bạn. Vẫn không làm việc . Vui lòng giải thích
Pratik

1
@Haris, để tải lên, hầu hết bạn có thể phải làm gì đó thêm, nhưng tôi không biết gì.
Marius

0

Cảm ơn Marius, chỉ có một điều, lĩnh vực không hiển thị trong thông tin thanh toán thanh toán để đăng ký.

Làm thế nào cai tôi làm cho các lĩnh vực hiển thị trong đăng ký thanh toán?

Cảm ơn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.