যখন আপনার কাছে অনেকগুলি অ্যাট্রিবিউট বিকল্প থাকে তখন পারফরম্যান্স কনফিগারযোগ্য সোয়াচগুলি উন্নত করার অতিরিক্ত উপায়।
উদাহরণস্বরূপ, যদি আপনার 2000 টি বিকল্প থাকে এবং ক্যাটালগ তালিকায় 36 পণ্য দেখায়, এই ক্ষেত্রে পদ্ধতিটি Mage_ConfigurableSwatches_Model_Resource_Catalog_Product_Attribute_Super_Collection::_loadOptionLabels()
প্রতিটি সুপার_অ্যাট্রিবিউট বিকল্প বিকল্প লেবেলে যোগদান করবে এবং আপনি 2000 * 36 = 72000 সারি পাবেন।
আমি এই পদ্ধতিটি আবার লিখেছি এবং এটি 72000 পরিবর্তে 2000 সারি লোড করে
<?php
/**
* Load attribute option labels for current store and default (fallback)
*
* @return $this
*/
protected function _loadOptionLabels()
{
if ($this->count()) {
$labels = $this->_getOptionLabels();
foreach ($this->getItems() as $item) {
$item->setOptionLabels($labels);
}
}
return $this;
}
/**
* Get Option Labels
*
* @return array
*/
protected function _getOptionLabels()
{
$attributeIds = $this->_getAttributeIds();
$select = $this->getConnection()->select();
$select->from(array('options' => $this->getTable('eav/attribute_option')))
->join(
array('labels' => $this->getTable('eav/attribute_option_value')),
'labels.option_id = options.option_id',
array(
'label' => 'labels.value',
'store_id' => 'labels.store_id',
)
)
->where('options.attribute_id IN (?)', $attributeIds)
->where(
'labels.store_id IN (?)',
array(Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID, $this->getStoreId())
);
$resultSet = $this->getConnection()->query($select);
$labels = array();
while ($option = $resultSet->fetch()) {
$labels[$option['option_id']][$option['store_id']] = $option['label'];
}
return $labels;
}
/**
* Get Attribute IDs
*
* @return array
*/
protected function _getAttributeIds()
{
$attributeIds = array();
foreach ($this->getItems() as $item) {
$attributeIds[] = $item->getAttributeId();
}
$attributeIds = array_unique($attributeIds);
return $attributeIds;
}