Атрибут множественного выбора


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

Вот так:

enter image description here

Я подумал о создании атрибута множественного выбора с именем techs и расположил значения, как показано ниже, и создал для каждого параметра отдельный блок cms, чтобы я мог вызывать многие из них одновременно

Просмотр.phtml

<?php /* @var $this Mage_Catalog_Block_Product_View_Abstract */?>
<?php $_product = $this->getProduct() ?>


<?php echo $this->getChildHtml('product_type_data_extra') ?>
<?php echo $this->getPriceHtml($_product) ?>
<?php if ($this->displayProductStockStatus()): ?>
    <?php if ($_product->isAvailable()): ?>
            <p class="availability in-stock"><?php echo $this->__('Availability:') ?> <span><?php echo $this->__('In stock') ?></span></p>
    <?php else: ?>
            <p class="availability out-of-stock"><?php echo $this->__('Availability:') ?> <span><?php echo $this->__('Out of stock') ?></span></p>
    <?php endif; ?>
<?php endif; ?>
<!--  Step 1  We need to add this to be able to get the attribute values -->
<?php
    $_helper = $this->helper('catalog/output');
    $_product = $this->getProduct()
?>
<!--  Step 2  Allow for techs attribute to display different images based on value of attribute -->
<?php if ($_product->getAttributeText('tech') == "Pulsor"): ?>
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('tech_pulsor')->toHtml() ?>

<?php elseif ($_product->getAttributeText('tech') == "Flexo"): ?>
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('tech_flexo')->toHtml() ?>
<?php endif; ?>

Однако, когда я ставлю 2 cms, ничего не отображается, если я поставьте один его ок

Author: Muhammad Anas, 2017-02-07

2 answers

Вам нужно использовать его как массив

   $techTypes = explode(",",$_product->getResource() ->getAttribute('tech')->getFrontend() ->getValue($_product));
foreach($techTypes as $key => $value){ 
    if ($_product->getAttributeText('tech') == "Pulsor"):
    echo $this->getLayout()->createBlock('cms/block')->setBlockId('tech_pulsor')->toHtml();

    elseif ($_product->getAttributeText('tech') == "Flexo"):
    echo $this->getLayout()->createBlock('cms/block')->setBlockId('tech_flexo')->toHtml();
    endif;

     }
 2
Author: Jaimin Sutariya, 2017-02-07 15:30:24

Мне удалось сделать это без использования блоков cms

<!-- Display Product Tech Images -->


<div class="techs">
<div class="techs-title">
<span><strong>Technology</strong></span>
</div>
<ul>
<?php
   $multiSelectArray = $this->getProduct ()->getAttributeText('tech');
   $lastItem = end ($multiSelectArray);

   foreach ($multiSelectArray as $multiSelectItem) :?>

   <li>
   <a tabindex="0" role="button" title="" data-toggle="popover" data-trigger="hover" data-placement="top" data-original-title="<? echo $multiSelectItem; ?>">
   <img src="/media/wysiwyg/techs/<?php echo $multiSelectItem ?>.jpg"></img>
   <p class="tech-name"><? echo $multiSelectItem; ?></p>
   <div class="hidden popover-content">

    </div>
   </a>


   <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $.noConflict();
    $('[data-toggle="popover"]').popover();
});
</script>
   </li>

   <?php endforeach;?>

 </ul>

</div>
 1
Author: Marinos, 2017-02-08 07:45:16