2011-06-17 14 views
15

मैं कुछ Magento उत्पाद विशेषताओं को देखना चाहता हूं जो व्यवस्थापक इंटरफ़ेस से संपादन योग्य नहीं हैं और कुछ जो इंटरफ़ेस में बिल्कुल दिखाई नहीं दे रहे हैं (कुछ के बारे में कुछ लगातार जानकारी संग्रहीत करने की विधि के रूप में उत्पाद जो मानव उपयोगकर्ताओं द्वारा नहीं देखा जाना चाहिए .. ऐसा करने का यही एकमात्र तरीका है जिसे मैं सोच सकता हूं, किसी अन्य सुझाव का स्वागत है)।Magento केवल-पढ़ने और छुपे हुए उत्पाद विशेषताओं

तो मेरा सवाल है: क्या सभी Magento विशेषताओं को व्यवस्थापक इंटरफ़ेस से दृश्यमान और संपादन योग्य होना चाहिए? यदि नहीं, तो उन्हें केवल पढ़ने या छुपाया जा सकता है?

मैंने देखा कि व्यवस्थापक इंटरफ़ेस में कुछ पढ़ने-योग्य फ़ील्ड हैं, इसलिए यह एक या दूसरे तरीके से करना संभव होना चाहिए। इसके लिए स्टैकओवरफ्लो खोजने के बाद मुझे जावास्क्रिप्ट से जुड़े एक संभावित समाधान मिले, लेकिन यदि संभव हो तो मैं उस पथ को नीचे नहीं जाना चाहूंगा।

उत्तर

15

ठीक है, ऐसा लगता है कि यह सब के बाद किया जा सकता है। catalog_product_load_after ईवेंट के लिए पर्यवेक्षक जोड़ने के बाद, lockAttributeMage_Catalog_Model_Abstract वर्ग की विधि का उपयोग केवल उत्पाद विशेषता को पढ़ने के लिए किया जा सकता है। यहाँ पर्यवेक्षक विधि के लिए कोड है:

public function lockAttributes($observer) { 
    $event = $observer->getEvent(); 
    $product = $event->getProduct(); 
    $product->lockAttribute('attribute_code'); 
} 
1

नहीं, मुझे लगता है कि यह विशेषता प्रबंधक से संभव नहीं है। इनपुट और लेबल को छिपाने के लिए सीएसएस का उपयोग करने के लिए एक आसान त्वरित और गंदा समाधान होगा।

11

के बाद से catalog_product_load_after घटना हर उत्पाद भार के लिए भेजा जाता है, गुण lock_attributes विधि में आपूर्ति हर उत्पाद लोड के बाद बंद कर दिया जाता है। इसमें अप्रत्याशित परिणाम हो सकते हैं: lock_attributes विधि में विशेष रूप से अनलॉक किए बिना विशेषताओं के मान को बदलना संभव नहीं है।

catalog_product_load_after ईवेंट का उपयोग करने के बजाय, catalog_product_edit_action ईवेंट के लिए पर्यवेक्षक जोड़ने के लिए पर्याप्त है: यह ईवेंट केवल व्यवस्थापक इंटरफ़ेस में किसी उत्पाद को संपादित करते समय प्रेषित किया जाता है।

0

इस धागे का उपयोग करके और कुछ और खुदाई; लॉकएट्रिब्यूट विधि एक अमूर्त वर्ग से है जिसका अर्थ है कि श्रेणी विशेषताओं पर भी इसका उपयोग करना संभव है। मैं 'catalog_category_load_after' पर्यवेक्षक पकड़ लिया और यह प्रयोग किया जाता मेरी वांछित श्रेणी विशेषताओं लॉक करने के लिए:

public function lockCategoryAttributes($observer) { 
    $event = $observer->getEvent(); 
    $c = $event->getCategory(); 
    $c->lockAttribute('attribute_code'); 
} 

मैं सुनिश्चित नहीं हूं कि अगर सही पर्यवेक्षक उपयोग करने के लिए है, लेकिन यह काम करता है।

तो हाँ श्रेणी विशेषताओं को लॉक करना या उन्हें पढ़ना संभव है।

2

मुझे लगता है कि आम मैथिजेसन और एपिक्यूरस के पास थोड़ा स्पष्टीकरण के साथ प्रश्न का सबसे अच्छा जवाब है। जैसा कि ऐड इंगित करता है, catalog_product_load_after को प्रत्येक उत्पाद लोड के बाद बुलाया जाता है और इसका अर्थ है फ्रंटइंड पर पर!

यदि हम व्यवस्थापक पैनलों में विशेषता फ़ील्ड केवल की रक्षा करना चाहते हैं, तो catalog_product_edit_action अधिक उपयुक्त विकल्प है।

आपका etc/config.xml तो कुछ इस तरह होगा:

<catalog_product_edit_action> 
    <observers> 
    <lock_attributes> 
     <class>yourmodule/observers</class> 
     <method>lockAttributes</method> 
    </lock_attributes> 
    </observers> 
</catalog_product_edit_action> 
1

मैं बिल्कुल इस तरह के विस्तार है कि उत्पादों, श्रेणियों और सीएमएस पृष्ठों के लिए काम करता है विकसित किया है।आपको बस कुछ नियमों को परिभाषित करना होगा और केवल उन्हीं विशेषताओं को चुनना होगा जिन्हें आप केवल पढ़ने के लिए दिखाना चाहते हैं।

Magento Admin Read-Only Product Rules

एक्सटेंशन का URL: https://www.bubbleshop.net/magento-admin-readonly.html

संबंधित मुद्दे