Mostrar lista de marcas (fabricantes) na página CMS
-
13-12-2019 - |
Pergunta
Como listaria todas as marcas e imagens em uma página CMS?Estou utilizando um atributo chamado ‘marcas’ e gostaria de chamar cada um e exibir a imagem.Estou usando o código a seguir para exibir na página do produto e funciona muito bem.Todas as imagens da minha marca estão localizadas em /media/wysiwyg/brands/.
<div class="brandImage"
<?php $_product = $this->getProduct(); $manufacturerName = $_product->getAttributeText('brands'); $manufacturerId = $_product->getManufacturer(); echo '<a href="/catalogsearch/result/?manufacturer='.$manufacturerId.'&q='.$manufacturerName.'">' ?> <img src="../media/wysiwyg/brands/<?php echo str_replace(' ', '-',strtolower($manufacturerName)); ?>.png" alt="<?php echo $manufacturerName; ?>" title="<?php echo $this->__('to see more from') ?> <?php echo $manufacturerName; ?> <?php echo $this->__('click here') ?>" /></a>
</div>
Também li que deveria criar um módulo personalizado e usei esta página como exemplo, mas não consigo descobrir como inserir o código php.
Solução 2
O código que funcionou para mim no meu modelo personalizado foi:
<?php
/**
* Brand Listing
*
*
*/
?>
<?php
$product = Mage::getModel('catalog/product');
$attributes = Mage::getResourceModel('eav/entity_attribute_collection')
->setEntityTypeFilter($product->getResource()->getTypeId())
->addFieldToFilter('attribute_code', 'brands');
$attribute = $attributes->getFirstItem()->setEntity($product->getResource());
$manufacturers = $attribute->getSource()->getAllOptions(false);
?>
<ul id="manufacturer_list">
<?php foreach ($manufacturers as $manufacturer): ?>
<li><a href="/catalogsearch/advanced/result/?brands[]=<?php echo $manufacturer['value'] ?>">
<img src="/media/wysiwyg/brands/<?php echo str_replace(' ', '-',strtolower($manufacturer['label']))?>.png" alt="<?php echo $manufacturer['label'] ?>" title="<?php echo 'View products from ' . $manufacturer['label'] ?>" /></a></li>
<?php endforeach; ?>
</ul>
E para que a busca funcione, certifique-se que no Magento Admin o atributo está configurado para ser usado na Busca Avançada.
Outras dicas
O que eu faria é criar um modelo de cms específico para a página de marcas.Você pode seguir o exemplo aqui para fazer um modelo: https://stackoverflow.com/questions/31765194/add-layout-identifier-in-magento-admin-panel/31766410#31766410
E por dentro template/page/newlayout.phtml
Você copia o template que normalmente usa, mas faz suas edições, ou seja, insere seu código php:
<div class="brandImage">
<?php
$_product = $this->getProduct();
$manufacturerName = $_product->getAttributeText('brands');
$manufacturerId = $_product->getManufacturer();
?>
<a href="/catalogsearch/result/?manufacturer=<?php echo $manufacturerId.'&q='.$manufacturerName ?>">
<img src="../media/wysiwyg/brands/<?php echo str_replace(' ', '-',strtolower($manufacturerName)); ?>.png" alt="<?php echo $manufacturerName; ?>" title="<?php echo $this->__('to see more from') ?> <?php echo $manufacturerName; ?> <?php echo $this->__('click here') ?>" />
</a>
</div>
Em seguida, vá para a página cms e atribua seu novo layout.