Возникла проблема с отображением параметров выбора нескольких атрибутов:
следующий код, используемый в catalog / product / list.phtml, отлично работает для отображения выбранных атрибутов — но только если выбрана опция MORE THAN ONE —
таким образом, если выбран только один параметр из атрибута multi select, он ничего не отображает?
<?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;
?>
Это верно и для страницы продукта (код, используемый в catalog / product / 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 вариант? Спасибо!
Проблема в getAttributeText()
фактически возвращает массив только в том случае, если имеется более одной опции, в противном случае он просто возвращает единственную опцию в виде строкового литерала. Я думаю, что объявление метода здесь на самом деле неверно, но я могу подтвердить, что это поведение из опыта.
Вы должны добавить простую проверку как это:
if ($targetValues = $_product->getAttributeText('ni_featured_logo_multi')) {
if (is_string($targetValues)) {
$targetValues = array($targetValues);
}
foreach ($targetValues as $_target) ...
}
хотел опубликовать рабочий код — с правкой от fantasticrice:
мульти выбор в каталоге / product / 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;
}
?>
и вот в каталоге / product / 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;
}
?>
спасибо fantasticrice!