Атрибут множественного выбора
Я работаю над спортивным интернет-магазином , и некоторые туфли принадлежат конкретным специалистам, которые я хотел бы показать в виде изображений
Вот так:
Я подумал о создании атрибута множественного выбора с именем 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, ничего не отображается, если я поставьте один его ок
1
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