पृष्ठ प्रकार और पृष्ठ का निर्धारण करें


11

मेरे पास एक नया काम है जहां मैं अब रोज मैगेंटो पर सख्ती से काम करता हूं। मुझे Magento के साथ कोई पूर्व अनुभव नहीं है, इसलिए यह कम से कम अब तक कहने के लिए एक चुनौती है!

मैं विस्तार से समझाता हूं कि हम निर्माण कर रहे हैं।

यह हमें एक पॉपअप / मोडल विंडो दिखाने की अनुमति देगा। मोडल की HTML सामग्री को
एक में संग्रहीत किया जाएगाStatic Block


ADMIN PAGE

तो व्यवस्थापक पैनल के तहत एक नया टैब से मिलकर System/Confuration/नया टैब

व्यवस्थापक पैनल आपको उस नई टैब पेज पर ड्रॉप डाउन सूची में चयन करने की अनुमति देता है जो Static Blockइन वर्गों के लिए उपयोग करने के लिए डिफ़ॉल्ट है ...

HOME PAGEया HOME PAGE w/Items in Shopping Cart
ALL CATEGORY PAGESया ALL CATEGORY PAGES w/Items in Shopping Cart
ALL PRODUCTS PAGESया ALL PRODUCTS PAGES w/Items in Shopping Cart
ALL CMS PAGESया ALL CMS PAGES w/Items in Shopping Cart
SHOPPING CART PAGEया SHOPPING CART PAGE w/Items in Shopping Cart


DEFAULT OVER-RIDES

वास्तविक CMS , CATEGORY और उत्पाद पृष्ठ के आगे सभी वही सेटिंग की अनुमति देते हैं जो व्यवस्थापन पैनल पृष्ठ के पास हैं, सिवाय इसके कि वे आपको STATIC BLOCKप्रति-आइटम आधार पर सेट करने की अनुमति दें और डिफ़ॉल्ट सेटिंग जो हमने ऊपर व्यवस्थापक सेटिंग्स में रखी थीं, पर सवारी करें ।


अब तक हमारे पास किए गए एक्सटेंशन का व्यवस्थापक पक्ष है। हमारे पास प्रत्येक अनुभाग ... उत्पाद, श्रेणी, सीएमएस और कॉन्फ़िगरेशन पृष्ठ के लिए सभी व्यवस्थापक टैब हैं।

अगला कदम उसी एक्सटेंशन पर जोड़ना और Static Blockपेज में एक इंसर्ट करना होगा। इसके लिए यह Static Blockजिम्मेदार होगा ... Static Blockऊपर बताए गए क्षेत्रों में सेट की गई सेटिंग्स के आधार पर प्रत्येक पृष्ठ पर सही दिखाना .....

  • हम जिस पृष्ठ पर हैं, उसका निर्धारण करना और पृष्ठ प्रकार (सेमी, उत्पाद, घर, श्रेणी)
  • फिर इसे उन सभी कस्टम सेटिंग्स को पढ़ना होगा जो उपर्युक्त क्षेत्रों में सेट किए गए थे।
  • यदि यह निर्धारित किया जाता है कि हम एक Categoryपृष्ठ पर हैं, तो हमें वास्तविक वास्तविक श्रेणी प्राप्त करनी होगी जो हम कर रहे हैं। उदाहरण के लिए Category 3। हम तब देखेंगे कि क्या उस विशिष्ट श्रेणी के लिए कोई विशिष्ट सेटिंग है। यदि यह कहता है कि Enabledहम तब देखेंगे जिसके Static Blockलिए उस श्रेणी के लिए सहेजा गया है और इसे Static Blockपृष्ठ पर हमारे मुख्य में दिखाएं !
  • यदि उपरोक्त विशिष्ट श्रेणी Disabledहमारे लिए निर्धारित है Modal Windowतो हम मोडल के लिए अधिक वैश्विक सेटिंग्स में देखेंगे और देखेंगे कि क्या सभी श्रेणियों के लिए एक मोडल सक्षम है। यदि हाँ, तो हम देखेंगे कि Static Blockसभी श्रेणियों को दिखाया जाना तय है।
  • इन सभी के अलावा, यह इस प्रक्रिया को मुख्य पृष्ठ प्रकारों (उत्पाद, श्रेणियां, सेमी, होम, कार्ट) में से प्रत्येक के लिए करेगा।
  • हमें यह भी जांचना होगा कि शॉपिंग कार्ट खाली है या नहीं। यदि खाली नहीं है ... तो हमें उस बात को ऊपर ध्यान में रखना होगा जब wqe चेक कर रहा हो जो Static Blockउस पृष्ठ के लिए दिखाना है क्योंकि प्रत्येक सेटिंग Static Blockखाली गाड़ी के लिए सेट होने की अनुमति देता है और 1 खाली गाड़ी के लिए नहीं! (मुझे पता है कि यह एक बड़ा कठिन और बड़ा उपक्रम है, लेकिन हमारे पास अधिकतर पक्ष व्यवस्थापक हैं। बस उस भाग को करने की आवश्यकता है जो यह निर्धारित करने में सभी को ध्यान में रखता है कि Static Blockकिस विशेष पृष्ठ पर दिखाना है।

इसलिए मुझे सही दिशा में लाने के लिए मेरे पास कुछ छोटे सवाल हैं ...

  • मैं अपने Static Blockकोड (PHP भाग) के अंदर कैसे तय कर सकता हूं कि मैं किस पृष्ठ का प्रकार हूं। जैसे मैंने उल्लेख किया है कि मुझे पता होना चाहिए कि क्या मैं .... होम पेज , एक सीएमएस पृष्ठ , एक श्रेणी पृष्ठ , एक उत्पाद पृष्ठ , या खरीदारी कार्ट पेज ?
  • पृष्ठ TYPE के अलावा मुझे वास्तविक पृष्ठ प्राप्त करने की आवश्यकता है। इसलिए यदि मैं उत्पाद आईडी 1234 पर हूं तो मुझे उस विशेष पेज के लिए सेटिंग (उस पृष्ठ के लिए स्थिर ब्लॉक सेट) प्राप्त करने में सक्षम होना चाहिए।

मुझे पता है कि यह एक लंबी और संभवतः भ्रमित करने वाली पोस्ट रही है। यदि आपने इसे दूर किया है, तो इस समय को पढ़ने के लिए आपका धन्यवाद =)

यदि आप मेरे प्रश्न के साथ सहायता कर सकते हैं, तो प्रत्येक छोटा हिस्सा मुझे अंतिम लक्ष्य के करीब ले जाएगा


नीचे एक फ्लो चार्ट है जो मैंने बनाया है कि मेरे मॉड्यूल को यह निर्धारित करने के लिए काम करना होगा कि किस स्थिर ब्लॉक को पृष्ठ में सम्मिलित करना है

यहाँ छवि विवरण दर्ज करें


2
आपको एहसास होता है कि आपने प्रभावी रूप से कार्यक्षमता को फिर से बनाया है जो कि Mage_Widgetमॉड्यूल में मौजूद है , है ना?
बर्कमार्क

Ditto ने @benmarks क्या कहा। IMO आप विजेट्स का लाभ उठाने और वहां से जाने का प्रयास करने में बेहतर होंगे।
डेविडलगर

@benmark मैंने अपने सवाल में जो फ्लो चार्ट जोड़ा है, उसे देखते हुए क्या आप कहेंगे कि यह अभी भी 100% प्राप्त कर सकता है Mage_Widget? मुझे उस पर भी गौर करने की जरूरत है
जेसनडेविस

नहीं। कोर विजेट ब्लॉक आपके चार्ट में इंगित किए गए संयोजनों को नहीं समझते हैं। आप इसके लिए कुछ ब्लॉक लॉजिक चाहते हैं।
चिह्न

जवाबों:


12

इसके अलावा @ नेनमार्क ने क्या जवाब दिया :

आपके द्वारा बताई गई कुछ शर्तों की जांच करने के लिए यहां एक छोटा कोड दिया गया है:

// Check if it's a CMS page:
$page = Mage::getSingleton('cms/page');
if ($page->getId()) {
    // The current page is a CMS page

    if ($page->getIdentifier() == Mage::getStoreConfig('web/default/cms_home_page')) {
        // The current page is the CMS home page
    }
}

$product = Mage::registry('current_product');
$category = Mage::registry('current_category');
if ($product && $product->getId()) {
    // The current page is a product page.
    // If you only want the main product detail page, also check for 
    // Mage::app()->getFrontController()->getAction()->getFullActionName() == 'catalog_product_view'
    // Be aware that a current_product and a current_category can be set at the same time.
    // In that case the visitor is viewing a product in a category.
} elseif ($category && $category->getId()) {
    // The current page is a category page
    // If you only want the category list page, also check for 
    // Mage::app()->getFrontController()->getAction()->getFullActionName() == 'catalog_category_view'
}

// Check for cart page
if (Mage::app()->getFrontController()->getAction()->getFullActionName() == 'checkout_cart_index') {
    // The current page is the cart
}

यह जांचने के लिए कि गाड़ी खाली है या नहीं

$isEmpty = Mage::getSingleton('checkout/session')->getQuote()->getItemsCount() > 0

यह भी पूछा कि क्या आप सीएमएस ब्लॉक के अंदर वर्तमान पृष्ठ की जांच कर सकते हैं ।
यह शायद एक अच्छा दृष्टिकोण नहीं है (आपको कस्टम ब्लॉक शामिल करना होगा, जो पहले पृष्ठ में सीएमएस ब्लॉकों का उपयोग करने के उद्देश्य को हरा देगा)।
इसके बजाय पहले वर्तमान पृष्ठ की जांच करना बेहतर है, और फिर उसके आधार पर प्रदर्शित करने के लिए सीएमएस ब्लॉक चुनें।

संपादित करें : टिप्पणियों में @ जोसेफ द्वारा उल्लिखित किया Mage::app()->getRequest()->getFullActionName()जाना तय है Mage::app()->getFrontController()->getAction()->getFullActionName()। धन्यवाद!


बहुत बहुत धन्यवाद यह वास्तव में मुझे शुरू करने में मदद करने वाला है!
जेसनडेविस

1
बस ध्यान दें: Mage::app()->getRequest()->getFullActionName()कार्ट टेम्प्लेट में उपयोग करने से घातक त्रुटि होती है या कम से कम यह मेरे लिए 1.7.0.2 पर होता है। $this->getAction()->getFullActionName()पूरी तरह से काम किया!
जोसेफ लीड

उह, हाँ, आप सही रास्ते पर हैं। मेरी गलती! धन्यवाद!
विनई

FYI करें, Mage :: getSingleton ('cms / पेज') -> getId () नियंत्रक_action_predispatch ईवेंट में शून्य मान देता है।
मेगेप्सिचिको

7

बहुत सारे दृष्टिकोण आप ले सकते हैं। मैं आपके ब्लॉक को <default>लेआउट अपडेट हैंडल के माध्यम से जोड़ने की सलाह दूंगा , जो इसे सभी पृष्ठों पर उपलब्ध कराएगा। अपने ब्लॉक की _prepareLayout()विधि में, आप अनुरोध ऑब्जेक्ट ( $this->getRequest()->getFullActionName()) से वर्तमान पूर्ण एक्शन नाम प्राप्त करके और संदर्भ निर्धारित करने के लिए इसका उपयोग करके गुंजाइश निर्धारित कर सकते हैं ।

उत्पादों और श्रेणियों को रजिस्ट्री में पंजीकृत किया जाएगा। आपका ब्लॉक लेआउट अपडेट हैंडल को भी देख सकता है, जिसमें उत्पाद आईडी या श्रेणी आईडी हैंडल शामिल होंगे।


3

मुख पृष्ठ का पता लगाने के लिए, आपको पहचानकर्ता स्ट्रिंग (उदाहरण के लिए "होम") का उपयोग करने की आवश्यकता है, ताकि संख्यात्मक मान के बजाय कॉन्फ़िगरेशन मान के विरुद्ध मिलान किया जा सके:

अगर ($ पृष्ठ-> getIdentifier () == Mage :: getStoreConfig ('वेब / डिफ़ॉल्ट / cms_home_page')) {
    // होम पेज
}

यहाँ कुछ अन्य हैं:

$ fullActionName = Mage :: app () -> getFrontController () -> getAction () -> getFullActionName ();
अगर ('checkout_onepage_index' == $ fullActionName) {
    // चेक आउट
}

अगर ('checkout_onepage_success' == $ fullActionName) {
    // चेकआउट सफलता
}

अगर ('customer_account_login' == $ fullActionName) {
    // लॉग इन करें
}

अगर ('customer_account_logoutSuccess' == $ fullActionName) {
    // लॉगआउट सफलता
}

अगर ('customer_account_create' == $ fullActionName) {
    // ग्राहक खाता बनाएँ
}
अगर (0 === स्ट्रैप्स ($ फुलअशननाम, 'कैटालॉग्स्क_')) {
    // खोज
}

अगर (0 === स्ट्रैप्स ($ फुलअन्यूनाम, 'customer_account_')
 || 0 === स्ट्रैप्स ($ फुलअशननाम, 'customer_address_')
 || 0 === स्ट्रैप्स ($ फुलअन्यूनाम, 'विशलिस्ट_')
 || 0 === स्ट्रैप्स ($ फुलअशननाम, 'न्यूज़लेटर_मेंज_')
 || 0 === स्ट्रैप्स ($ फुलअशननाम, 'review_customer_')
 || 0 === स्ट्रैप्स ($ fullActionName, 'sales_order_')
) {
    // ग्राहक खाता पृष्ठ (संभवतः अन्य हैं)
}

उपयोगी जानकारी सभी के लिए धन्यवाद!

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