পণ্যের তালিকার জন্য 'ডিফল্ট মান ব্যবহার করুন' এ বৈশিষ্ট্যগুলি সেট করুন


10

পণ্যের তালিকার জন্য এবং স্টোর ভিউয়ের তালিকার জন্য আমি চিত্রগুলিকে 'ডিফল্ট মান ব্যবহার করতে' সেট করতে চাই। আমি জানি যে এটি প্রতিটি পণ্যের জন্য পৃথকভাবে কীভাবে করা যায়: সেটডেটা (অ্যাট্রিবিউটনেম, ভুয়া), এবং তাই আমি আমার পণ্যের তালিকার উপর একটি লুপ করতে পারি। সমস্যা: এটি সত্যিই খুব ধীর।

$attrArray=array('thumbnail','small_image','image');
$products = array(170,171,172);
$stores = array(17,18,19);
foreach ($stores as $store_id) {
    foreach ($products as $product_id) {
        foreach ($attrArray as $attr) { 
            $product = Mage::getModel('catalog/product')
            ->load($product_id)->setStoreId($store_id)
            ->setData($attr, false)
            ->save();
        }
    }
}

সুতরাং আমি Mage :: getSingleton ('ক্যাটালগ / প্রোডাক্ট_অ্যাকশন') -> আপডেটঅ্যাট্রিবিউটস ($ পণ্য, r অ্যাট্রিআরে, $ স্টোর_আইডি) ব্যবহার করার চেষ্টা করেছি; পরিবর্তে, যা একই জিনিসটি করার কথা কিন্তু পণ্যগুলির তালিকার উপরে। এটি আসলে কিছু করে: আমার সমস্ত চিত্র এখন 'কোনও চিত্র নেই' তে সেট করা হয়েছে, তবে প্রত্যাশার মতো 'ডিফল্ট মান ব্যবহার করুন' না।

$attrArray = array('thumbnail'=>false,'small_image'=>false,'image'=>false);
$products = array(170,171,172);
$stores = array(17,18,19);
foreach ($stores as $store_id) {
    Mage::getSingleton('catalog/product_action')
    ->updateAttributes($products, $attrArray, $store_id);
}

আশেপাশের কারও যদি ধারণা থাকে তবে এটি আমাকে কিছুটা সময় বাঁচাতে সত্যিই সাহায্য করতে পারে! ধন্যবাদ।

উত্তর:


8

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

$attrArray=array('thumbnail','small_image','image');
$products = array(170,171,172);
$stores = array(17,18,19);
$productsAsString = implode(',', $products);
$storesAsString = implode(',', $stores);
//get access to the resource
$resource = Mage::getSingleton('core/resource');
//get access to the db write connection
$connection = $resource->getConnection('core_write');
//model for retrieving attributes
$eavConfig = Mage::getModel('eav/config');
$tables = array();
//get the association between attribute ids and the tables where their values are stored
//group them by table name so you will run a single query for each table
foreach ($attrArray as $attributeCode){
    $attribute = $eavConfig->getAttribute('catalog_product', $attributeCode);
    if ($attribute){
        $tableName = $resource->getTableName('catalog/product') . '_' . $attribute->getBackendType();
        $tables[$tableName][] = $attribute->getId();
    }
}
//for each table delete the attribute values in the specified store for the specified products
foreach ($tables as $tableName => $attributeIds){
    $attributeIdsAsString = implode(',', $attributeIds);
    $q = "DELETE FROM {$tableName}
                WHERE
                    attribute_id IN ({$attributeIdsAsString}) AND
                    entity_id IN ({$productsAsString}) AND
                    store_id IN ({$storesAsString})";
    $connection->query($q);
}

এটি হওয়া উচিত। তবে যদি আমি অতিরিক্ত আত্মবিশ্বাসী এবং এটি কার্যকর না হয় তবে আপনার ডাটাবেসের ব্যাক আপটি প্রথমে করুন।


1
অনেক অনেক ধন্যবাদ, আমি এখনও এটি পরীক্ষা করিনি, কারণ আমার আর এটির প্রয়োজন নেই এবং এই মুহুর্তের জন্য কোনও পরীক্ষার সার্ভার নেই, তবে এটি পরে কার্যকর হবে!
এস্তেবান

আমি কোডটির জন্য নিশ্চয়তা দেব। ভাল কাজ করে!
mpw

এটি ভাল এবং দ্রুত কাজ করে!
ইলেক্ট্রয়েড

আমি ম্যাজেন্টো 2-তে সমস্ত পণ্যের বৈশিষ্ট্যের জন্য পরীক্ষিত "ডিফল্ট মান ব্যবহার করুন" সেট করতে চাই, আমি পণ্যের গুণাবলী মান নিয়ে সমস্যা নিচ্ছি, সেগুলি ডিফল্ট স্টোর ভিউ থেকে দেখানো হচ্ছে তবে কয়েকটি অ্যাট্রিবিউট চেকড হিসাবে "ডিফল্ট মান ব্যবহার করুন" তে সেট করা হয়নি । সুতরাং যখনই আমি এই পণ্যটির বৈশিষ্ট্যগুলি সমস্ত স্টোর ভিউয়ের জন্য আপডেট করি যা সম্মুখভাগে প্রতিফলিত হয় না।
হিমাতে পালিওয়াল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.