ग्राहक के लिए कस्टम विशेषता जोड़ना


64

हमें एक ग्राहक रिकॉर्ड में एक विशेषता जोड़ने का एक सरल तरीका चाहिए जो ग्राहक या व्यवस्थापक द्वारा संपादन योग्य नहीं है, केवल प्रोग्रामेटिक रूप से। अनिवार्य रूप से, हमारे पास एक अभिव्यक्ति साइट Magento के साथ युग्मित है।

हम webservice के माध्यम से प्रमाणित करते हैं और कुछ JSON को संग्रहीत करना चाहते हैं जो हम ग्राहक के रिकॉर्ड में प्रमाणीकरण से वापस प्राप्त करते हैं और इसे हर बार लॉगिन करते समय अपडेट करते हैं।

यदि वे चेकआउट प्रक्रिया में जानकारी बदलते हैं तो हम डेटा को संशोधित करना चाहेंगे, जैसे कि शिपिंग पता। फिर हम डेटा को अपने वेब सेवा पर वापस भेज देंगे क्योंकि हम वर्तमान में प्रत्येक आदेश के साथ ऐसा करते हैं।

क्या यह करना मुश्किल है क्योंकि अब हम MageWorx के कस्टम विकल्प एक्सटेंशन के साथ कस्टम विशेषता का उपयोग करके प्रत्येक उत्पाद पर कुछ JSON स्टोर कर रहे हैं?

मैंने यहां ऑनलाइन मॉड्यूल क्रिएटर का उपयोग किया था http://www.silksoftware.com/magento-module-creator/ लेकिन सुनिश्चित नहीं है कि मॉड्यूल को इंस्टॉल करने के बाद मूल्य को संशोधित या पुनर्प्राप्त कैसे करें।

मैं ऐसा करने के लिए एक्सटेंशन कैसे लिखना सीख सकता हूं?


एक्स-
रे

यदि मैं इस विशेषता मान को 'customer_entity' डेटाबेस तालिका में सहेजना चाहता हूं तो मुझे कैसे करना है? @ मार्मी
काज़िम नूरानी

1
@KazimNoorani आप सीधे मूल्य को बचाने के लिए चाहते हैं, तो customer_entityतालिका आप (नीचे मेरा उत्तर देखें) मेज पर और स्क्रिप्ट उस गुण कहते हैं में स्तंभ जोड़ने से प्रकार प्रतिस्थापित करने की आवश्यकता varcharकरने के लिए static
मेरियस

@ मैं पहले ही customer_entityटेबल में कॉलम जोड़ चुका था । और मेरी विशेषता 'चयन' प्रकार की है। मैं customer_entityतालिका में इस 'custom_column' पर सीधे अपने विशेषता मान को सहेजना चाहता हूं । उसको कैसे करे?
काज़िम नूरानी

1
यदि आप मुख्य तालिका में डेटा को सहेजना चाहते हैं, तब भी आपको टाइप स्टैटिक के साथ एक विशेषता की आवश्यकता होती है।
मेरियस

जवाबों:


68

/app/code/local/Your/Customattribute/sql/your_customattribute_setup/install-0.1.0.php

<?php
$installer = $this;

$installer->startSetup();

$setup = new Mage_Eav_Model_Entity_Setup('core_setup');

$entityTypeId     = $setup->getEntityTypeId('customer');
$attributeSetId   = $setup->getDefaultAttributeSetId($entityTypeId);
$attributeGroupId = $setup->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);

$setup->addAttribute("customer", "customattribute",  array(
    "type"     => "varchar",
    "backend"  => "",
    "label"    => "Custom Attribute",
    "input"    => "text",
    "source"   => "",
    "visible"  => true,
    "required" => false,
    "default" => "",
    "frontend" => "",
    "unique"     => false,
    "note"       => "Custom Attribute"
));

$attribute   = Mage::getSingleton("eav/config")->getAttribute("customer", "customattribute");

$setup->addAttributeToGroup(
    $entityTypeId,
    $attributeSetId,
    $attributeGroupId,
    'customattribute',
    '999'  //sort_order
);

$used_in_forms=array();

$used_in_forms[]="adminhtml_customer";
//$used_in_forms[]="checkout_register";
//$used_in_forms[]="customer_account_create";
//$used_in_forms[]="customer_account_edit";
//$used_in_forms[]="adminhtml_checkout";
        $attribute->setData("used_in_forms", $used_in_forms)
                ->setData("is_used_for_customer_segment", true)
                ->setData("is_system", 0)
                ->setData("is_user_defined", 1)
                ->setData("is_visible", 1)
                ->setData("sort_order", 100)
                ;
        $attribute->save();



$installer->endSetup();

/app/code/local/Your/Customattribute/etc/config.xml

 <?xml version="1.0"?>
    <config>
        <modules>
            <Your_Customattribute>
                <version>0.1.0</version>
            </Your_Customattribute>
        </modules>
        <global>

            <resources>
                <Your_Customattribute_setup>
                    <setup>
                        <module>Your_Customattribute</module>
                        <class>Mage_Customer_Model_Entity_Setup</class>
                    </setup>
                    <connection>
                        <use>core_setup</use>
                    </connection>
                </Your_Customattribute_setup>
                <Your_Customattribute_write>
                    <connection>
                        <use>core_write</use>
                    </connection>
                </Your_Customattribute_write>
                <Your_Customattribute_read>
                    <connection>
                        <use>core_read</use>
                    </connection>
                </Your_Customattribute_read>
            </resources>
        </global>

    </config>

एप्लिकेशन / etc / मॉड्यूल / Your_Customattribute.xml

  <?xml version="1.0"?>
    <config>
        <modules>
            <Your_Customattribute>
                <active>true</active>
                <codePool>local</codePool>
                <version>0.1.0</version>
            </Your_Customattribute>
        </modules>
    </config>

फिर आप का उपयोग करने या संपादित करने के लिए:

$customer = Mage::getModel('customer/customer')->load($custid);
$customer->getCustomattribute();
$customer->setCustomattribute($yourjson);

आपको लॉगिन इवेंट के लिए इवेंट ऑब्जर्वर बनाने होंगे, यहाँ उत्तर दिया गया है: मैं सफल लॉगिन के बाद ऑब्ज़र्वर से ग्राहक डेटा कैसे प्राप्त कर सकता हूं?

और ग्राहक के लिए संभावित रूप से पर्यवेक्षक_सेवे के मामले में वे खाते में अपना पता बदलने के बाद एमजीएमटी, और एक उद्धरण के लिए, जो आप के लिए जा रहे हैं के आधार पर विभिन्न स्थानों में हो सकता है।


Customer_band_sku क्या है?
एमबी 34

क्षमा करें, यह एक मैं बचा हुआ था।
willboudle

तो डेटा सेट करने के लिए काम कैसे करेगा?
एमबी

क्या आपके पास एक उदाहरण है कि जब उपयोगकर्ता लॉग इन करता है तो डेटा को कैसे सेट करें?
एमबी 34

1
अच्छा काम कर रहे हैं..क्या आप यह भी बता सकते हैं कि उस विशेषता को व्यवस्थापक पैनल + ग्राहक ग्रिड में कैसे दिखाना है
aravind

9

कस्टम कार्यक्षमता का एक बहुत कुछ है जो आपको अपने आप को कस्टम मॉड्यूल ओवरराइडिंग कक्षाओं के रूप में बनाना होगा , और उन घटनाओं में हुक करना होगा जहां आप चाहते हैं कि डेटा आपकी वेब सेवा में पारित हो। जहां तक ​​यह विशेषता है, जब आप अपना कस्टम मॉड्यूल बनाते हैं और config.xmlऊपर दिए गए ट्यूटोरियल की तरह मॉड्यूल में इसके लिए एक सेटअप संसाधन को परिभाषित करते हैं , तो अपनी इंस्टॉल स्क्रिप्ट में आप कुछ इस तरह से कर सकते हैं:

[Module_path] / एसक्यूएल / [resource_node_defined_in_config_xml] / MySQL4-install- [module_version_number] .php

$installer = $this;

$installer->startSetup ();

$setup = Mage::getModel ( 'customer/entity_setup' , 'core_setup' );

    //add budget
    $setup->addAttribute('customer', 'budget', array(
        'type' => 'decimal',
        'input' => 'text',
        'label' => 'Budget',
        'global' => 1,
        'visible' => 1,
        'required' => 0,
        'user_defined' => 0,
        'default' => '',
        'visible_on_front' => 1,
        'source' =>   NULL,
        'comment' => 'This is a budget'
    ));

$installer->endSetup ();

user_definedsystemयदि सेट करने के लिए विशेषता को एक विशेषता बनाता है 0, जो इसे व्यवस्थापक से हटाने की क्षमता को अक्षम करता है।


0

मुख्य डीबगिंग के बाद मुझे पता चला कि मैगनेटो को उम्मीद है कि फ़ाइल डेटा / Companyname_Modulname_setup / या sql / Companyname_Modulname_setup / में होगी

और इसका नाम mysql4-data-upgrade-OLDVERSION-NEWVERSION.phpउदा की mysql4-data-upgrade-0.1.0-0.1.0.phpजगह दिया जाना हैmysql4-install-0.1.0.php

कम से कम मैगेंटो 1.9.3 पर

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