Magento - como recuperar imagens de opções empacotadas

Eu tenho trabalhado no meu primeiro deploy do magento. Tem um tema bastante personalizado criado ... lidando com algumas das personalizações fora do padrão agora:

Um dos meus principais tipos de produtos é uma cadeira de escritório que eu configurei como um produto incluído. Há muitas opções disponíveis para este tipo de produto (cerca de 100 opções de tecido, estilo de braço, lombar, encosto de cabeça, etc) e eu preciso ser capaz de mostrar uma imagem para cada um deles na página de catálogo / produto / visualização.

Sendo um produto empacotado (e vou me abster de qualquer discussão sobre se este era o tipo certo de produto - nós andamos em círculos debatendo entre um configurável e um empacotado) - cada produto é montado a partir de um número de produtos simples (como opções) . Esses produtos simples podem ter imagens carregadas para eles, e eu fiz isso.Agora quero recuperar os URLs para aqueles da pasta de mídia ...

Depois de alguma caça - estes parecem ser os elementos essenciais:

tema /../ 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>

tema /../ modelo / pacote / catálogo / produto / visualização / tipo / pacote / opção / select.phtml

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

Eu encontrei finalmente encontradogetSelections() em:

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;
       }

então voltamos uma matriz comselection_id, product_id, price_type etc ... mas nada referente ao URL da imagem para essa seleção ...

Dado que:

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;
       }

Eu estou tentando construir um objeto js com refs para cada tipo de imagem de url de seleção de assim emtema /../ modelo / pacote / catálogo / produto / visualização / tipo / pacote / opção / 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; ?>

Mas$_selection obviamente não é digitado corretamente porque apenas me leva ao gráfico de espaço reservado.

Supondo que essas opções podem ser digitadas como um Produto (ou, de alguma forma, obter o produto simplesselection_id, parece que algo assim pode funcionar. Eu não tenho certeza se é exatamente assim que eu quero gerenciar esse recurso, mas se eu puder obter uma pilha de URLs - então eu estarei no negócio

Estranhamente, as interwebs são basicamente silenciosas sobre esse assunto. Aparentemente, ninguém precisa mostrar imagens para suas opções de produtos (ou melhor, as únicas soluções são extensões pagas - o que será um último recurso).

Como eu posso descobrir isso?

Jesus batendo em cristo. Mage poderia ser mais complicado?

Atualizar

Tenho isso para funcionar como tal:

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

A resposta que eu selecionei também funcionará bem, se alguém precisar dessa correção.

questionAnswers(1)

yourAnswerToTheQuestion