2013-09-27 2 views
0

Я работаю с опциями, чтобы добавить дополнительную информацию, например изображение. и я сохранил эти данные в своей таблице с параметрами option_type_id и option_id. теперь по интерфейсу я хотел бы присоединиться к моим собственным табличным данным к параметрам по умолчанию. поэтому эти параметры поставляются с информацией об изображении.Magento как получить опции с дополнительной информацией

$_option->getValues() 

эта функция возвращает данные опции, теперь я должен достичь при реализации этой функции, где она генерирует запрос таким образом, я мог бы добавить присоединиться, чтобы получить свои собственные данные с.

спасибо

ответ

0

Вот что я получил от этого.

я переопределен сбор ресурсов продукта

class MYC_COPSwatch_Model_Resource_Product_Option_Collection extends Mage_Catalog_Model_Resource_Product_Option_Collection{   

    public function addValuesToResult($storeId = null) 
{ 
    if ($storeId === null) { 
     $storeId = Mage::app()->getStore()->getId(); 
    } 
    $optionIds = array(); 
    foreach ($this as $option) { 
     $optionIds[] = $option->getId(); 
    } 
    if (!empty($optionIds)) { 
     /** @var $values Mage_Catalog_Model_Option_Value_Collection */ 
     $values = Mage::getModel('catalog/product_option_value') 
      ->getCollection()     
      ->addTitleToResult($storeId) 
      ->addPriceToResult($storeId)     

      ->addSwatchToResult($storeId) //USED Join in this function    

      ->setOrder('sort_order', self::SORT_ORDER_ASC) 
      ->setOrder('title', self::SORT_ORDER_ASC); 

     foreach ($values as $value) { 
      $optionId = $value->getOptionId(); 
      if($this->getItemById($optionId)) { 
       $this->getItemById($optionId)->addValue($value); 
       $value->setOption($this->getItemById($optionId)); 
      } 
     } 
    } 

    return $this; 
} 

может быть сэкономить время для кого-то.

0

Я не вижу чистого способа сделать это.

Это грязный способ: Перепишите Mage_Catalog_Model_Resource_Product_Option и добавьте эту функцию ниже. Измените его вместе с вами. однако тогда соединение с вами будет сделано для с опцией. Вам нужно будет проверить somekind флага и добавить только ваше соединение, если этот флаг установлен.

protected function _getLoadSelect($field, $value, $object) 
{ 
    $select = parent::_getLoadSelect($field, $value, $object); 
    if("do your check here"){ 
     $select->join('your table') 
    }  
    return $select; 
} 
+0

В этом классе нет такой функции. и я должен присоединиться к значениям, а не параметрам, если я прав. –

+0

да, потому что 'Mage_Catalog_Model_Resource_Product_Option' расширяет' Mage_Core_Model_Resource_Db_Abstract' там вы найдете функцию, я обновлю свой ответ –

Смежные вопросы