Magento (1.9) ग्राहक पंजीकरण में नया क्षेत्र जोड़ें


28

मुझे ग्राहक पंजीकरण और ग्राहक निर्माण फॉर्म में नया क्षेत्र जोड़ना पसंद है।

फ़ील्ड का नाम लाइसेंस नंबर है । मैंने अपनी आवश्यकता से संबंधित बहुत सारे लिंक खोजे, लेकिन वे Magento (1.9) में काम नहीं करते हैं। यहां तक ​​कि मुझे इससे संबंधित एक्सटेंशन भी मिला:

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

जब मैंने कुंजी का उपयोग करके उपरोक्त एक्सटेंशन स्थापित किया, तो यह एक त्रुटि दिखाता है। क्या आप कृपया मेरी आवश्यकता से संबंधित कुछ विचार दे सकते हैं?


यह भी बताएं कि उपरोक्त एक्सटेंशन में आपको क्या त्रुटि हो रही है ... कृपया जितना हो सके उतना विवरण भेजें ..
सिद्धार्थ वाघसिया

यह पहले यहाँ उत्तर दिया गया है: 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
{

}

यह ग्राहक के लिए आपकी विशेषता को जोड़ देगा।
यह बैकएंड पर अच्छी तरह से काम करना चाहिए।
दुर्भाग्यवश आपको अब फ्रंटेंड टेम्प्लेट को मैन्युअल रूप से संपादित करना होगा क्योंकि मैगनेटो के पास कोई घटना या खाली ब्लॉक नहीं है जहां आप अपने खेतों को रख सकते हैं।
इसके लिए आपको निम्नलिखित की आवश्यकता है।

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
मेरियस

1
हाय साहब, आपने हमें यह नहीं बताया कि कई विशेषताएँ कैसे सेट करें? मैंने आपके कोड को संशोधित करके कई बार प्रयास किया। अभी भी काम नहीं कर रहा है । कृपया समझाएं
प्रतीक जूल १

1
@Haris, अपलोड के लिए, आपको संभवतः कुछ अतिरिक्त करना होगा, लेकिन मुझे नहीं पता कि क्या।
मेरियस

0

धन्यवाद मारियस, केवल एक चीज, पंजीकरण के लिए चेकआउट बिलिंग जानकारी में क्षेत्र नहीं दिखा।

चेकआउट पंजीकरण में मैं कै से फील्ड शो कैसे कर सकता हूं?

धन्यवाद

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.