Вопрос по options, magento, image – Magento - как получить изображения в комплекте опций

5

Я работал над своим первым развертыванием в magento. У вас есть довольно индивидуальная тема, созданная ... для решения некоторых нестандартных настроек:

Один из моих основных типов продуктов - офисный стул, который я установил как комплектный продукт. Есть много вариантов, доступных для этого типа продукта (около 100 вариантов ткани, стиль руки, поясничный, подголовник и т. Д.), И я должен быть в состоянии показать изображение для каждого из них на странице каталога / продукта / просмотра.

Будучи связанным продуктом (а я 'воздержусь от любых дискуссий о том, был ли это правильный тип продукта - мы ходили кругами, обсуждая между настраиваемым и связанным), - каждый продукт собран из ряда простых продуктов (в качестве опций) , На эти простые продукты могут быть загружены изображения, и я это сделал.I now want to retrieve the urls to those from the media folder...

После некоторой охоты - это, кажется, основные элементы:

theme/../template/catalog/product/view/options.phtml

<?php $_options = Mage::helper('core')->decorateArray($this->getOptions()) ?>
<dl>
    <?php foreach($_options as $_option): ?>
        <?php echo $this->getOptionHtml($_option) ?>
    <?php endforeach; ?>
</dl>

theme/../template/bundle/catalog/product/view/type/bundle/option/select.phtml

<?php /* @var $this Mage_Bundle_Block_Catalog_Product_View_Type_Bundle_Option_Select */ ?>
<?php $_option      = $this->getOption(); ?>
<?php $_selections  = $_option->getSelections(); ?>

Я нашел наконец нашелgetSelections() в:

class Mage_Bundle_Model_Resource_Price_Index extends Mage_Core_Model_Resource_Db_Abstract
{ ...


    /**
        * Retrieve bundle options with selections and prices by product
       *
        * @param int $productId
        * @return array
        */
       public function getSelections($productId)
       {
           $options = array();
           $read = $this->_getReadAdapter();
           $select = $read->select()
               ->from(
                   array('option_table' => $this->getTable('bundle/option')),
                   array('option_id', 'required', 'type')
               )
               ->join(
                   array('selection_table' => $this->getTable('bundle/selection')),
                   'selection_table.option_id=option_table.option_id',
                   array('selection_id', 'product_id', 'selection_price_type',
                       'selection_price_value', 'selection_qty', 'selection_can_change_qty')
               )
               ->join(
                   array('e' => $this->getTable('catalog/product')),
                   'e.entity_id=selection_table.product_id AND e.required_options=0',
                   array()
               )
               ->where('option_table.parent_id=:product_id');

           $query = $read->query($select, array('product_id' => $productId));
           while ($row = $query->fetch()) {
               if (!isset($options[$row['option_id']])) {
                   $options[$row['option_id']] = array(
                       'option_id'     => $row['option_id'],
                       'required'      => $row['required'],
                       'type'          => $row['type'],
                       'selections'    => array()
                   );
               }
               $options[$row['option_id']]['selections'][$row['selection_id']] = array(
                   'selection_id'      => $row['selection_id'],
                   'product_id'        => $row['product_id'],
                   'price_type'        => $row['selection_price_type'],
                   'price_value'       => $row['selection_price_value'],
                   'qty'               => $row['selection_qty'],
                   'can_change_qty'    => $row['selection_can_change_qty']
               );
           }

           return $options;
       }

поэтому мы вернемся массив сselection_id, product_id, price_type и т.д ... но ничего не ссылается на URL изображения для этого выбора ...

При условии:

class Mage_Catalog_Helper_Product extends Mage_Core_Helper_Url
{ ...
public function getImageUrl($product)
        {
            $url = false;
            if (!$product->getImage()) {
                $url = Mage::getDesign()->getSkinUrl('images/no_image.jpg');
            }
            elseif ($attribute = $product->getResource()->getAttribute('image')) {
               $url = $attribute->getFrontend()->getUrl($product);
           }
           return $url;
       }

Я пытаюсь создать объект js с ссылками на каждый URL-адрес выбранного изображения, например, такtheme/../template/bundle/catalog/product/view/type/bundle/option/select.phtml

var option_set_<?php echo $_option->getId() ?> = {};
<?php foreach ($_selections as $_selection): ?>
    option_set_<?php echo $_option->getId() ?>._<?php echo $_selection->getSelectionId() ?> = '<?php echo $_selection->getImageUrl(); ?>';
<?php endforeach; ?>

Но$_selection очевидно, неправильно введен, потому что он просто привязывает меня к графическому символу-заполнителю.

Предполагая, что эти параметры могут быть напечатаны как продукт (или каким-либо образом получить простой продукт изselection_idКажется, что-то подобное может работать. Я не уверен, что именно так я и хочу управлять этой функцией, но если я могу просто получить стек URL-адресов - тогда я буду в бизнесе

Как ни странно, в этой теме ничего не говорится. Очевидно, никому не нужно показывать изображения для своих вариантов продукта (или, скорее, единственные решения - это платные расширения - что будет последним средством).

Как я могу понять это?

Иисус тащится от Христа. Может ли маг быть более сложным?

Update

Получил это для работы как таковой:

<?php echo $this->helper('catalog/image')->init($_selection, 'small_image')->resize(40,40); ?>

Ответ, который я выбрал, также будет работать нормально, если кому-то понадобится это исправление.

Ваш Ответ

1   ответ
3

ого продукта. Так что все, что нужно сделать, это:

take the product_id of the $_selections, load the product by this product_id give the resulting product object to Mage_Catalog_Helper_Product::getImageUrl.
Я понял это через пару часов после того, как опубликовал это (см. Обновление). Это довольно близко к вашему ответу - но воздерживается от получения product_id. Это тоже сработало бы. ура Bosworth99

Похожие вопросы