কনফিগারযোগ্য পণ্য থেকে কোনও বৈশিষ্ট্য অপসারণ করার জন্য আমার জন্য কী কাজ করতে হবে তা এখানে রয়েছে।
এটাই দৃশ্যপট। প্রায় 200 টি সাধারণ সম্পর্কিত পণ্য থাকা প্রায় 50 টি কনফিগারযোগ্য পণ্যগুলির জন্য একটি কনফিগারযোগ্য বৈশিষ্ট্য হিসাবে
বৈশিষ্ট্যযুক্ত সমস্ত কনফিগারযোগ্য পণ্য ভুল তৈরি হয়েছিল brand
।
একটি কনফিগারযোগ্য বৈশিষ্ট্যের সাথে সম্পর্কিত সমস্ত সাধারণ পণ্যগুলির একই ব্র্যান্ড থাকে। ধারণাটি হ'ল brand
কনফিগারযোগ্য বৈশিষ্ট্যগুলি থেকে মুছে ফেলা এবং সাধারণ পণ্যগুলির একটির মান সহ কনফিগারযোগ্য পণ্যটিকে একটি সাধারণ বৈশিষ্ট্য হিসাবে সেট করুন।
এখানে কোডটি এটি করে। কোডটি একবারে চালানো হয়। এটি একটি আপগ্রেড স্ক্রিপ্ট বা একটি সাধারণ পিএইচপি ফাইলগুলিতে যুক্ত করা যেতে পারে।
<?php
//==>this is required only if you use a simple php file
error_reporting(E_ALL | E_STRICT);
$mageFilename = 'app/Mage.php';
require_once $mageFilename;
Mage::setIsDeveloperMode(true);
ini_set('display_errors', 1);
umask(0);
Mage::app();
//<==
$brand = 'brand';
//get the attribute instance
$brandAttribute = Mage::getModel('eav/config')->getAttribute('catalog_product', $brand);
//if this attribute exists
if ($brandAttribute->getId()){
//make the attribute apply to al types of products in case it's not
$brandAttribute->setApplyTo(null);
$brandAttribute->save();
$resource = Mage::getSingleton('core/resource');
//get an object with access to direct queries
$connection = $resource->getConnection('core_write');
//get all configurable products - you can specify additional filters here
$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToFilter('type_id', 'configurable');
foreach ($collection as $product){
//the configurable attributes are stored in the table 'catalog_product_super_attribute'
//remove the attribute references from that table.
//The constraints will take care of the cleanup.
$q = "DELETE FROM {$resource->getTableName('catalog_product_super_attribute')}
WHERE attribute_id = {$brandAttribute->getId()} AND product_id = {$product->getId()}";
$connection->query($q);
//get the simple products in the configurable product
$usedProducts = $product->getTypeInstance(true)->getUsedProducts(null, $product);
foreach ($usedProducts as $p){
//identify the first simple product that has a value for brand
//set that value to the configurable product.
if ($brandValue = $p->getData($brand)){
Mage::getSingleton('catalog/product_action')
->updateAttributes(array($product->getId()), array($brand=>$brandValue), 0);
break;
}
}
}
}
উপরে তালিকাবদ্ধ সংখ্যার জন্য, এটি আমার স্থানীয় মেশিনে চালিত হতে প্রায় 15 সেকেন্ড সময় নিয়েছে (কোনও শক্তিশালী নয়)। আমি নিশ্চিত যে এটি অনুকূলিত হতে পারে। সম্ভবত brand
মানটি পেতে কনফিগারযোগ্য পণ্যের সমস্ত সাধারণ পণ্য পাওয়ার প্রয়োজন নেই তবে আমি মাথা ঘামাইনি।