Magento - настраиваемые изображения опций продукта

В настоящее время я работаю над получением изображений для вариантов продукта, которые будут отображаться в моей первой сборке magento. я имеюЭТОТ разобрался за комплектный товар, вот так:

screenshot

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

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

Например: У стула есть 3 обивки и 2 выбора подлокотника (6 простых продуктов). Для стула 2 / b я загружаю образец обивки 2 и образец подлокотника b и маркирую их соответствующим образом. Когда параметры создаются, я беру URL-адреса изображений, связанных с каждым простым продуктом, по их ярлыку (может быть, все изображения для этого ярлыка удаляются и удаляются дубликаты или что-то другое?) ...

В Magento я вижу:

Вtheme/catalog/product/view/type/option/configurable.phtml

<?php foreach($_attributes as $_attribute): ?>
    ..// 
    <select name="super_attribute[<?php echo $_attribute->getAttributeId() ?>]" id="attribute<?php echo $_attribute->getAttributeId() ?>" class="required-entry super-attribute-select">
        <option><?php echo $this->__('Choose an Option...') ?></option>
    </select>
    ..//
</div>
<?php endforeach; ?>
<script type="text/javascript">
    var spConfig = new Product.Config(<?php echo $this->getJsonConfig() ?>);
</script>

В отличие от комплекта, настраиваемый выбор продукта / опции внедряются на страницу через JavaScript (вjs/varien/configurable.js). Этот класс зависит отgetJsonConfig() предоставить всю информацию после этого.

В этот момент кажется, что я должен быть в состоянии получить информацию об URL простого изображения продукта из этого объекта. То есть я не вижу никакой логики в работе с изображениями в configurable.js.How would I go about obtaining those urls and associating them with the related option selects?

Любой совет о том, как мне поступить, был бы великолепен.

ура

... также: это действительно похоже на офигенно абсолютно необходимую функциональность. Почему бы magento не поддерживать такие вещи из коробки?

update

Я наконец понял это для тех людей, которые заинтересованы в чем-то подобном.

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

Я закончил тем, что использовалбесплатный плагин (с некоторыми изменениями), что предложил @Greg Demetrick. Это довольно солидный небольшой модуль, который позволяет связать URL-адреса изображений с любым параметром атрибута / а также пару методов для их получения.

Мое окончательное решение выглядит примерно так:

catalog/product/view/type/options/configurable.phtml:

<?php foreach($_attributes as $_attribute): ?>

  // markup for the attribute

    <script type="text/javascript">
        //<![CDATA[
        var attribute_data_<?php echo $_attribute->getAttributeId() ?> = {};
            attribute_data_<?php echo $_attribute->getAttributeId() ?>.id = '<?php echo $_attribute->getAttributeId() ?>';
            attribute_data_<?php echo $_attribute->getAttributeId() ?>.title = '<?php echo $_attribute->getLabel() ?>';
            attribute_data_<?php echo $_attribute->getAttributeId() ?>.data = {};
        <?php 
        $a = Mage::getModel('eav/config')->getAttribute('catalog_product', $_attribute->getAttributeId() );
        $helper = Mage::helper('attributeoptionimage');
        foreach ( $a->getSource()->getAllOptions(true) as $option): ?>
            attribute_data_<?php echo $_attribute->getAttributeId() ?>.data.option_<?php echo $option['value'] ?> = {};
            attribute_data_<?php echo $_attribute->getAttributeId() ?>.data.option_<?php echo $option['value'] ?>.val = '<?php echo $option['value'] ?>';
            attribute_data_<?php echo $_attribute->getAttributeId() ?>.data.option_<?php echo $option['value'] ?>.imageurl = '<?php echo $helper->getAttributeOptionImage($option['value']); ?>';
            attribute_data_<?php echo $_attribute->getAttributeId() ?>.data.option_<?php echo $option['value'] ?>.imgtitle = '<?php echo $option['label']; ?>';
        <?php endforeach; ?>
        //]]>
    </script>

    <?php endforeach; ?>

Это печатается в разметке, один набор для каждого атрибута. Который работает хорошо, но возвращает все параметры для атрибута, а не только параметры, выбранные для продукта (данные, которыеgetJsonConfig() объект сохранен). Итак, я просто проверяюattribute_data_xxx возражать противspConfigи отправить уникальные параметры соответствия в мой скрипт контроллера.

простирающийсяgetJsonConfig захватить атрибут URL, вероятно, сработало бы также ...

Как бы то ни было, ключевым моментом здесь было сопоставление URL-адресов изображений с самими параметрами атрибутов (а не с продуктами).

ура

Ответы на вопрос(2)

Ваш ответ на вопрос