2015-05-20 2 views
1

Имея проблему с отображением параметров атрибута multi-select: , следующий код, используемый в каталоге/product/list.phtml, отлично работает, чтобы отобразить выбранные атрибуты - но только если выбрана опция БОЛЬШЕ ЧЕМ ONE - , поэтому, если выбран только один параметр из атрибута multi select, он ничего не отображает?Magento multi select attribute - не отображается на интерфейсе, если только один параметр выбран для продукта

<?php 
$targetValues = $_product->getAttributeText('ni_featured_logo_multi'); 
foreach($targetValues as $_target) :?> 
<div class="featuredlogolist"> 
<span class="helper"></span> 
<img src="<?php echo $this->getSkinUrl() ?>FEATURED_LOGOS/<?php echo $_target ?>.png" class="featuredlogo"></img> 
</div> 
<?php endforeach; 
?> 

Это верно для этой страницы, а также (код, используемый в каталоге/продукт/view.phtml)

<?php 
    $multiSelectArray = $this->getProduct()->getAttributeText('ni_featured_logo_multi'); 
    $lastItem = end ($multiSelectArray); 
    foreach ($multiSelectArray as $multiSelectItem) :?> 
    <img src="<?php echo $this->getSkinUrl() ?>FEATURED_LOGOS/<?php echo $multiSelectItem ?>.png" class="featuredlogo"></img> 
    <?php endforeach; 
?> 

любых идеи о том, как настроить звонок для того, чтобы иметь множественный выбор отображение атрибута при выборе только 1 опции? благодаря!

ответ

1

Проблема getAttributeText() фактически возвращает массив только в том случае, если имеется более одного параметра, иначе он просто возвращает единственную опцию в виде строкового литерала. Я думаю, что объявление метода на самом деле неправильно здесь, но я могу подтвердить, что это поведение из опыта.

Вы должны добавить простую проверку, как это:

if ($targetValues = $_product->getAttributeText('ni_featured_logo_multi')) { 
    if (is_string($targetValues)) { 
     $targetValues = array($targetValues); 
    } 
    foreach ($targetValues as $_target) ... 
} 
+0

благодарит за ответ! - Не может ли этот код работать? не могли бы вы рассказать о том, как использовать его в списке продуктов и продуктов? спасибо за помощь – chrismmmmm

+0

@chrismmmmm - Что произойдет, если вы 'var_dump ($ targetValues)' в своем коде? – fantasticrice

+0

Нет, ваш первый ответ был прав! еще раз спасибо! – chrismmmmm

1

хотел отправить рабочий код - с редактированием из fantasticrice: множественного выбор в каталоге/продукт/list.phtml: (это получение изображения имя из папки кожи)

<?php if ($targetValues = $_product->getAttributeText('your_attribute_code')) { 
    if (is_string($targetValues)) { 
     $targetValues = array($targetValues); 
    } 
     foreach($targetValues as $_target) :?> 
     <div class="featuredlogo"> 
     <img src="<?php echo $this->getSkinUrl() ?>FEATURED_LOGOS/<?php echo $_target ?>.png" class="featuredlogo"></img> 
     </div> 
     <?php endforeach; 
       } 
    ?> 

и здесь, в каталоге/продукта/view.phtml:

<?php 
    if ($multiSelectArray = $this->getProduct()->getAttributeText('your_attribute_code')) { 
    if (is_string($multiSelectArray)) { 
     $multiSelectArray = array($multiSelectArray); 
    } 
    foreach ($multiSelectArray as $multiSelectItem) :?> 
    <img src="<?php echo $this->getSkinUrl() ?>FEATURED_LOGOS/<?php echo $multiSelectItem ?>.png" class="featuredlogo"></img> 
    <?php endforeach; 

        } 
    ?> 

спасибо, фантастика!