Magento - cómo recuperar imágenes de opciones agrupadas

He estado trabajando en mi primer despliegue de magento. Se construyó un tema bastante personalizado ... abordando algunas de las personalizaciones no estándar ahora:

Uno de mis tipos de productos principales es una silla de oficina que he configurado como un producto empaquetado. Hay muchas opciones disponibles para este tipo de producto (aproximadamente 100 opciones de tejido, estilo de brazo, apoyo lumbar, reposacabezas, etc.) y necesito poder mostrar una imagen de cada una de ellas en el catálogo / producto / página de visualización.

Al ser un producto empaquetado (y me abstendré de cualquier discusión acerca de si este fue el tipo de producto correcto; fuimos en círculos debatiendo entre un configurable y un paquete empaquetado): cada producto se ensambla a partir de varios productos simples (como opciones) . Estos productos simples pueden tener imágenes subidas a ellos, y lo he hecho.Ahora quiero recuperar las URL de la carpeta de medios ...

Después de un poco de caza, estos parecen ser los elementos esenciales:

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 /../ 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(); ?>

Encontré finalmente encontradogetSelections() en:

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

por lo que volvemos una matriz conselection_id, product_id, price_type etc ... pero nada se refiere a la url de la imagen para esa selección ...

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

Estoy tratando de construir un objeto js con referencias a la url de imagen de cada selección.tema /../ 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; ?>

Pero$_selection obviamente, no se ha escrito correctamente porque simplemente me rebota en el gráfico de marcador de posición.

Asumiendo que estas opciones se pueden escribir como un Producto (u obtener de alguna manera el producto simple de laselection_id, parece que algo así puede funcionar. No estoy seguro de si es exactamente así como quiero administrar esta función, pero si puedo obtener una pila de direcciones URL, estaré en el negocio.

Extrañamente, los interwebs son básicamente silenciosos sobre este tema. Al parecer, nadie necesita mostrar imágenes para sus opciones de productos (o, más bien, las únicas soluciones son extensiones pagas, lo que será un último recurso).

¿Cómo puedo resolver esto?

Jesus tapdancing cristo ¿Podría ser mago más complicado?

Actualizar

Consiguió que esto funcione como tal:

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

La respuesta que seleccioné también funcionará bien, si alguien necesita esta solución.

Respuestas a la pregunta(1)

Su respuesta a la pregunta