Magento সাইটম্যাপ.এক্সএমএল প্রজন্ম থেকে নির্দিষ্ট পণ্যগুলি বাদ দিন


14

আমি পণ্য নিশ্চিত একটি থাবা হয় করতে হবে না উত্পন্ন মধ্যে Sitemap.xmlMagento মধ্যে ফাইল। আমি সিএমএস পৃষ্ঠাগুলির মতো জিনিসের জন্য বেশ কয়েকটি উদাহরণ পেয়েছি তবে পণ্যের পৃষ্ঠাগুলি করার জন্য কিছুই নয় এবং তারপরে আরও 1 টি পণ্য। আমি ম্যাজেন্টোতে একেবারে নতুন

এটি কীভাবে করা যায় কেউ জানেন?

উত্তর:


7

বাক্সের বাইরে, না, ম্যাজেন্টোর Catalog -> Google Sitemapবৈশিষ্ট্য দ্বারা উত্পন্ন সাইটম্যাপ থেকে নির্দিষ্ট পণ্যগুলি বাদ দেওয়ার কোনও উপায় নেই ।

যদি আমি এই প্রোগ্রামটিমে কাজটি করতে যাচ্ছিলাম তবে ম্যাগান্টোর আধুনিক সংস্করণগুলি (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);

এটি কোনও স্ট্যান্ডার্ড ম্যাজেন্টো সিআরইউডি মডেল getCollectionনয় এবং কোনও সংগ্রহের অবজেক্ট ফেরত দেয় না। পরিবর্তে, getCollectionম্যানুয়ালি এই পণ্যগুলির জন্য ডেটাবেস অনুসন্ধান করে।

যদি আমি এমন কার্যকারিতা বাস্তবায়ন করতে যা যা সাইটের মানচিত্রে নির্দিষ্ট পণ্যগুলি প্রদর্শিত হতে বাধা দেয় তবে আমি চেষ্টা করব

  1. একটি শ্রেণি সেই getCollectionপদ্ধতিটি পুনর্লিখন করে যা কল করে parent::getCollectionএবং তারপরে অ্যারে থেকে কোনও পণ্য নিজেই ফিল্টার করে

  2. একটি শ্রেণীর পুনর্লিখন _addFilterযার উপর প্যারেন্টকে :: _ অ্যাড ফিল্টার পদ্ধতিটি কল করে এবং তারপরে _selectনির্দিষ্ট পণ্য (গুলি) বাদ দেওয়ার জন্য একটি অতিরিক্ত WHERE ধারা (গুলি) যুক্ত করে । একটি হ্যাক বাছাই করুন, তবে এটি একমাত্র পদ্ধতি যেখানে আপনার _selectডাটাবেসটি জিজ্ঞাসা করতে ব্যবহৃত বস্তুটিতে অ্যাক্সেস রয়েছে । আদর্শভাবে আপনি কিছু ধরণের গ্লোবাল / স্ট্যাটিক পতাকা রাখতে চান যাতে আপনি কেবল একবার আপনার নতুন WHERE ধারা (গুলি) যুক্ত করেছেন।


8

ম্যাজেন্টো থেকে 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

আপনি সেই পণ্যগুলি অক্ষম করতে পারেন বা দৃশ্যমান ক্ষেত্রটি 'স্বতন্ত্রভাবে দৃশ্যমান নয়' তে সেট করতে পারেন। সাইটম্যাপে কেবল সক্ষম এবং দৃশ্যমান পণ্যগুলি তালিকাভুক্ত করা হয়।
আপনার যদি সেই পণ্যগুলি সক্ষম করা দরকার হয় তবে কেবল তাদের অক্ষম করুন, সাইটম্যাপ.এক্সএমএল তৈরি করুন এবং সেগুলি আবার সক্ষম করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.