Magento sitemap.xml पीढ़ी के कुछ उत्पादों को छोड़ दें


14

मुझे यह सुनिश्चित करने की आवश्यकता है कि कुछ मुट्ठी भर उत्पाद मैगनेटो में उत्पन्न Sitemap.xmlफ़ाइल में नहीं हैं । मुझे CMS पेज जैसी चीजों के लिए कुछ उदाहरण मिले लेकिन उत्पाद पृष्ठ करने के लिए कुछ भी नहीं, और फिर 1 उत्पाद। मैं Magento के लिए नया हूँ

किसी को पता है कि यह कैसे किया जा सकता है?

जवाबों:


7

बॉक्स से बाहर, नहीं, मैगेंटो की Catalog -> Google Sitemapसुविधा द्वारा उत्पन्न साइटमैप से कुछ उत्पादों को बाहर करने का कोई तरीका नहीं है ।

अगर मैं इस प्रोग्राम को आधुनिक रूप से करने जा रहा हूँ, तो Magento के आधुनिक संस्करण (1.7.x शाखा में जांचे गए, यह पहले / EE संस्करणों में हो सकता है) निम्नलिखित संसाधन मॉडल वर्ग का उपयोग करें

Mage_Sitemap_Model_Resource_Catalog_Product

उत्पादों की एक सूची लाने के लिए।

#File: app/code/core/Mage/Sitemap/Model/Sitemap.php
$collection = Mage::getResourceModel('sitemap/catalog_product')->getCollection($storeId);

यह एक मानक Magento CRUD मॉडल नहीं है, और getCollectionएक संग्रह वस्तु वापस नहीं करता है। इसके बजाय, getCollectionमैन्युअल रूप से इन उत्पादों के लिए डेटाबेस पर सवाल उठाता है।

यदि मैं कार्यक्षमता को लागू करने जा रहा था जो कुछ उत्पादों को साइट मानचित्र में दिखाने से रोकता था, तो मैं या तो कोशिश करूंगा

  1. एक वर्ग उस getCollectionविधि को फिर से लिखता है जो कॉल करता है parent::getCollection, और फिर मैन्युअल रूप से किसी भी उत्पाद को सरणी से फ़िल्टर करता है

  2. एक वर्ग फिर से _addFilterलिखता है जिस पर अभिभावक :: _ addFilter पद्धति को कॉल करता है, और फिर _selectविशिष्ट उत्पाद को बाहर करने के लिए एक अतिरिक्त WHERE क्लॉज (s) जोड़ता है । एक हैक की तरह, लेकिन यह एकमात्र तरीका है जहां आपके पास _selectडेटाबेस को क्वेरी करने के लिए उपयोग की जाने वाली वस्तु तक पहुंच है । आदर्श रूप से आप किसी प्रकार का वैश्विक / स्थिर ध्वज रखना चाहते हैं, इसलिए आपने केवल एक बार अपना नया WHERE क्लॉज (s) जोड़ा है।


8

Magento 1.9.0 के बाद से। आप किसी भी कोर फ़ाइल को छूने के बिना ऐसा कर सकते हैं।

आप देख सकते हैं दो नई घटनाएं हैं:

  • sitemap_categories_generating_before
  • sitemap_products_generating_before

विशेषता के आधार पर उत्पादों को बाहर करने के लिए, आप यह कर सकते हैं:

  1. के लिए एक पर्यवेक्षक जोड़ें sitemap_products_generating_before

    एप्लिकेशन \ कोड \ समुदाय \ मेरे \ मॉड्यूल \ आदि \ config.xml

        <events>
            <sitemap_products_generating_before>
                <observers>
                    <my_module>
                        <class>my_module/observer</class>
                        <method>excludeProductsFromSitemap</method>
                    </my_module>
                </observers>
            </sitemap_products_generating_before>
        </events>

    एप्लिकेशन \ कोड \ समुदाय \ मेरे \ मॉड्यूल \ मॉडल \ Observer.php

    public function excludeProductsFromSitemap(Varien_Event_Observer $observer)
    {
        $collection = $observer->getCollection();
        $items = $collection->getItems();
    
        $excludeIds = Mage::getModel('catalog/product')
            ->getCollection()
            ->setStoreId($observer->getStoreId()) # requieres Magento 1.9.3.0
            ->addAttributeToFilter('use_in_sitemap', 0)
            ->getAllIds();
    
        foreach ($excludeIds as $id) {
            unset($items[$id]);
        }
    
        $collection->setItems($items);
    }
  2. एक उत्पाद विशेषता जोड़ें "हाँ / नहीं" नाम use_in_sitemap(शायद डिफ़ॉल्ट मान "हाँ")

  3. इस विशेषता को सभी विशेषता सेटों में जोड़ें
  4. उन उत्पादों को सेट करें जिन्हें आप "नहीं" से बाहर रखना चाहते हैं
  5. अपना साइटमैप जेनरेट करें

नोट : Magento 1.9.3.0 तक विशेषता को globalगुंजाइश के लिए सेट किया जाना चाहिए ।


3

इसे प्राप्त करने के लिए आप निम्नलिखित कार्य कर सकते हैं -

  1. उत्पाद के विरुद्ध एक विशेषता बनाएं अर्थात exclude_from_sitemap(हाँ / नहीं)

  2. अपनी नई विशेषता में फ़िल्टर जोड़कर Mage_Sitemap_Model_Resource_Catalog_Productऔर ओवरएट साइट को संशोधित करें और getCollectionसाइटमैप से बाहर करें

यदि आप एक डेवलपर नहीं हैं, तो निम्न मॉड्यूल उपरोक्त बटनों को प्राप्त करने में मदद कर सकता है, लेकिन इसका विस्तार भुगतान किया जाता है

http://www.scommerce-mage.co.uk/magento-extensions/magento-google-site-map-exclusion.html


1

आप उन उत्पादों को निष्क्रिय कर सकते हैं या दृश्यता क्षेत्र को 'व्यक्तिगत रूप से दिखाई नहीं दे रहे हैं' सेट कर सकते हैं। साइटमैप में केवल सक्षम और दृश्यमान उत्पाद सूचीबद्ध हैं।
यदि आपको उन उत्पादों को सक्षम करने की आवश्यकता है, तो उन्हें अक्षम करें, साइटमैप बनाएँ। Xml और उन्हें फिर से सक्षम करें।

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