Как отобразить настраиваемые параметры продукта на странице списка категорий
-
16-10-2019 - |
Вопрос
Как проверить отображение настраиваемых параметров продукта на странице списка категорий?
Решение
Чтобы просто отобразить все варианты возможности продажи в категории. .../app/design/frontend/[package]/[theme]/template/catalog/product/list.phtml
и место внутри foreach ($_productCollection as $_product)
что-то вроде этого:
<?php if($_product->isConfigurable()): ?>
//get attributes
<?php $attributes = $_product->getTypeInstance(true)->getConfigurableAttributes($_product) ?>
<?php if(count($attributes)): ?>
<ul>
<?php foreach($attributes as $att): ?>
<?php $pAtt=$att->getProductAttribute();
//get the child products
$allProducts = $_product->getTypeInstance(true)->getUsedProducts(null, $_product);
$frontValues =array() ?>
<li><?php echo $pAtt->getFrontendLabel() ?>
<ul>
<?php foreach($allProducts as $p): ?>
//check stock, status, ...
//do not show unsaleable options
<?php if(!$p->isSaleable()) continue; ?>
<?php $out=$p->getAttributeText($pAtt->getName()); ?>
<?php $frontValues[$out]=$out; ?>
<?php endforeach ?>
<li><?php echo implode('</li><li>', $frontValues) ?></li>
</ul>
</li>
<?php endforeach ?>
</ul>
<?php endif ?>
<?php endif ?>
Возможно, вам нравится добавлять несколько классов CSS в <ul>
а также <li>
теги.
Это не увеличит производительность вашего магазина!
Вдохновлен этим постом
http://www.magentocommerce.com/boards/viewthread/73926/#t437146
Другие советы
Вы можете использовать что -то вроде if ($_product->getTypeId() == 'configurable')
Внутри ваших продуктов.
Это может занять значительные ресурсы сервера, так как для каждого продукта может быть много вариантов. Лучший способ - использовать Ajax, чтобы загрузить все варианты только при просьбе. Я нашел это расширение, которое сначала загрузит цвета, тогда, когда вы мышитесь на его мышлениях, даст вам все варианты продукта.
http://www.consofas.com/plugins/options-quickview-for-configigure-products-in-magento/
Попробуйте это один раз
<?php $ptype = $_product->getTypeId();?>
<?php
if($ptype=='configurable'): ?>
<!--get attributes-->
<?php
$attributes = $_product->getTypeInstance(true)->getConfigurableAttributes($_product) ?>
<?php
if(count($attributes)): ?>
<?php
foreach($attributes as $att): ?>
<?php
$pAtt=$att->getProductAttribute();
//get the child products
$allProducts = $_product->getTypeInstance(true)->getUsedProducts($_product,null);
$frontValues =array();
foreach($allProducts as $p):
if($p->isSaleable()):
$attributeExist =$_product->getResource()->getAttribute($pAtt->getName());
?>
<input type="hidden" name="super_attribute[<?php echo $pAtt->getAttributeId() ?>]" value="<?php echo $attributeExist->getSource()->getOptionId($p->getAttributeText($pAtt->getName()));?>">
<?php
break;
endif;
endforeach;
endforeach;
endif;
?>
<?php
endif;
?>
Следующая ссылка может вам помочь.
http://hkpatel201.blogspot.in/2012/09/get-product-custom-option-in-list-page.html
Пройти через код
Спасибо