Пользовательское изображение Upsell Magento не отображается

У меня возникла проблема, из-за которой я не могу заставить свой пользовательский атрибут с именем upsell отображаться как изображение для дополнительных продаж.

Информация об атрибуте
Код атрибута: upsell
Область применения: Представление магазина
Каталог Тип ввода для владелец магазина: Медиа-изображение
Применить к: Все типы товаров

Я создал миниатюру в skin/frontend/.../images/catalog/product/placeholder/

Вот код для показа изображения

<img src="<?php echo $this->helper('catalog/image')->init($_item, 'upsell')->constrainOnly(FALSE)->keepAspectRatio(TRUE)->keepFrame(FALSE)->resize(150); ?>" alt="<?php echo $this->htmlEscape($_item->getName()) ?>" />

Если я изменю ($_item, 'upsell') на ($_item, 'thumbnail'), он покажет правую миниатюру.

Я что-то пропустил в процессе создания атрибута?


person Kasper Franz    schedule 17.06.2015    source источник
comment
убедитесь, что атрибут виден на странице просмотра продукта во внешнем интерфейсе   -  person Ahmed Elawadi    schedule 17.06.2015
comment
Как мне убедиться, что это именно оно :)?   -  person Kasper Franz    schedule 17.06.2015
comment
Если я var_dump продукта, он не имеет значения (как это происходит с изображением, эскизом и т. д.)   -  person Kasper Franz    schedule 17.06.2015
comment
templatemonster. com/help/ самый важный вариант Visible on Catalog Pages on Front-end вы выбрали yes для этого варианта? У вас включен лат каталог?   -  person kuba_ceg    schedule 23.06.2015
comment
Поскольку это изображение, у меня нет возможности выбрать VIsible на страницах каталога во внешнем интерфейсе. Не знаете, что вы имеете в виду под лат каталогом?   -  person Kasper Franz    schedule 23.06.2015
comment
попробуйте установить глобальную область действия атрибута. убедитесь, что переиндексировали все индексы   -  person Zeedia    schedule 24.06.2015
comment
@Zeedia объем, который я пытался все изменить :)   -  person Kasper Franz    schedule 25.06.2015


Ответы (2)


ayЧтобы вызвать изображение, вы можете использовать: $this->helper('catalog/image')->init($_product, 'product_details_image')->resize()

и полный скрипт:

<?php
$_detailsImg = $this->helper('catalog/image')->init($_product,'product_details_image')->resize(); 

if ($_detailsImg != 'no_selection'):
    $_detailsImg ='<img src="'.$this->helper('catalog/image')->init($_product, 'product_details_image')->resize().'" alt="'.$this->htmlEscape($this->getImageLabel()).' "/>';
    echo $_helper->productAttribute($_product, $_detailsImg , 'product_details_image');
endif;

?>

Измените product_details_image на код изображения вашего атрибута.

Если у вас нет изображения, назначенного продукту, вы получите эту ошибку: Файл изображения не найден. в (var/reports), чтобы исправить это, создайте изображение с тем же именем, что и код атрибута (product_details_image.jpg), чтобы действовать как заполнитель, и добавьте его в: skin/frontend/base/default/images/catalog/product/placeholder/ Также вы можете добавить его в папку со скинами. это все.

ИЗМЕНИТЬ:

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

ИЗМЕНИТЬ:

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

Я попытался вызвать одну коллекцию и отфильтровать ее, используя идентификаторы продуктов (идентификаторы продуктов для продажи), но это не сработало.

<?php if(count($this->getItemCollection()->getItems())): 
    $items = $this->getItemCollection()->getItems();
    ?>
<div class="box-up-sell">
    <ul class="products-grid up-sell-grid">
        <?php foreach ($items as $item):  ?>
            <li class="item">
                <?php $product = Mage::getModel('catalog/product')->load($item->getId()); ?>
                <span><?php echo $product->getName(); ?></span>
                <img src="<?php echo Mage::helper('catalog/image')->init($product, 'measurements_guide_image')->resize(200, 200); ?>" alt="">
            </li>
        <?php endforeach ?>
    </ul>
</div>
<?php endif ?>
person Ahmed Elawadi    schedule 17.06.2015
comment
Моя проблема в том, что я сделал то же самое, что и вы, но он по-прежнему не отображается в моем интерфейсе, он показывает мою миниатюру вместо изображения, выбранного на backedn/adminpanel - person Kasper Franz; 17.06.2015
comment
И на что ссылается $_detailsImg? - person Kasper Franz; 17.06.2015
comment
Вы можете использовать это: $_product = Mage::getModel('catalog/product')-›load($_link-›getId()); echo $_product-›getMeasurementsGuideImage(); - person Ahmed Elawadi; 24.06.2015
comment
У меня уже есть объект модели, но изображение мне ничего не возвращает :( - person Kasper Franz; 24.06.2015
comment
вечером сделаю и отправлю - person Ahmed Elawadi; 24.06.2015
comment
Теперь он работает, решение было, как вы сказали, снова загрузить продукты. Это немного глупо, но теперь это работает, и это самая важная часть :) - person Kasper Franz; 26.06.2015

Вам нужно добавить этот медиа-атрибут в настройку продукта:

    <frontend>
    <product>
        <collection>
            <attributes>
                  <upsell/>
            </attributes>
        </collection>
    </product>
</frontend>

В этом коде в моем модуле config.xml, а затем вам нужно переиндексировать из управления индексами.

person Amit Bera    schedule 24.06.2015
comment
Изображение не отображалось, оно по-прежнему показывает изображение по умолчанию. - person Kasper Franz; 24.06.2015