Mostrar produtos na página inicial usando a coleção de filtros Magento por atributo, campo

Publicados: 2014-10-07

Hoje, a Magesolution volta com o tutorial Magento sobre alguns métodos eficazes para mostrar produtos na página inicial usando a coleção de filtros Magento por atributo, campo

Última atualização: Acabamos de lançar a versão 2.0 do Claue Multipurpose Magento 2 Theme, com várias melhorias de desempenho e recursos exclusivos. Confira este tema agora: Claue Magento Theme 2. 0

claue2_edited (1)

Demonstração ao vivo

Claue – Clean, Minimal Magento 2&1 Theme é um excelente modelo para uma loja de comércio eletrônico moderna e limpa com mais de 40 layouts de página inicial e toneladas de opções para loja, blog, portfólio, layouts de localizador de lojas e outras páginas úteis. A versão 2.0 do Claue vem com vários recursos exclusivos, incluindo:

  • Sendo baseado no tema Luma.
  • Conheça todos os padrões do tema Magento
  • Melhoria significativa de desempenho
  • Compatível com a maioria das extensões de terceiros.
  • Totalmente compatível com Magento 2.4.x

Esta segunda versão avançada diferencia-se completamente da anterior. Assim, se você estiver usando o Claue versão 1 e quiser atualizar para o Claue versão 2, você só pode reconstruir um novo site em vez de atualizar da versão antiga. Agora, vamos voltar ao assunto principal.

Primeiro, explique como o Magento filtra uma coleção. Use isso para explicar como o Magento filtra uma coleção por atributo, campo em um modelo, para que as pessoas possam aprender a escrever suas próprias coleções.

addAttributeToFilter() é uma função que pode ser chamada em uma coleção no Magento. Dentro
resumindo, ele adiciona uma condição à parte WHERE da consulta MySQL usada para extrair uma coleção do banco de dados.
Por exemplo:

$_products = Mage::getModel ('catalog/product')->getCollection()

->addAttributeToSelect(array('name', 'product_url',

'small_image'))

->addAttributeToFilter('sku', array('like' => 'UX%'))

->load();

O código acima obteria uma coleção de produtos, com cada produto tendo seu nome, url,
preço e pequena imagem carregada em sua matriz de dados. A coleção de produtos seria filtrada e conteria apenas produtos que tivessem um SKU começando com UX.

Filtrando

Podemos filtrar nossas coleções com a função addFieldToFilter(). No SQL, você pode pensar nisso como suas cláusulas WHERE.
Digamos que queremos obter um produto pelo sku PRODUCT001

$products = Mage::getModel('catalog/product')->getCollection();

$products->addAttributeToFilter('sku','PRODUCT001');

$product = $products->getFirstItem();

Vamos tentar a condicional maior que. Basta fornecer uma matriz com o tipo e o valor condicionais.
Produtos acima de US$ 100:

$products = Mage::getModel('catalog/product')->getCollection();

$products->addAttributeToFilter('price', array('gt' => '100'));

O Magento nos dá muitos condicionais de filtro para escolher, veja:

Filtrar Códigos de Condição

Código de atributo Equivalente a SQL Descrição
eq =
neq !=
Como COMO
como NÃO PARECE
dentro DENTRO ()
nin NÃO EM ()
é É
não nulo NÃO É NULO
nulo É NULO
maisq >=
gt >
lt <
gteq >=
lteq <=
finset FIND_IN_SET()
a partir de >= para uso com datas
para <= para uso com datas
encontro sinalizador opcional para uso com from/to para especificar que o valor de comparação deve primeiro ser convertido em uma data
data hora sinalizador opcional para uso com from/to para especificar que o valor de comparação deve primeiro ser convertido em uma data e hora

Se um array for passado, mas nenhum código de atributo for especificado, ele será interpretado como um grupo de condições OR que serão processadas da mesma maneira.

Se nenhum código de atributo for especificado, o padrão será eq.
addAttributeToFilter condicionais

Igual: eq

$_collection-&amp;gt;addAttributeToFilter('status', array('eq' =&amp;gt; 1));

Diferentes – neq

$_collection-&amp;gt;addAttributeToFilter('sku', array('neq' =&amp;gt; 'test-product'));

Gosto – gosto

$_collection-&amp;gt;addAttributeToFilter('sku', array('like' =&amp;gt; 'UX%'));

Uma coisa a notar é que você pode incluir caracteres curinga SQL, como o
sinal de porcentagem.
Não gosto - nlike

$_collection-&amp;gt;addAttributeToFilter('sku', array('nlike' =&amp;gt; 'err-prod%'));

Em – em

$_collection-&amp;gt;addAttributeToFilter('id', array('in' =&amp;gt; array(1,4,74,98)));

Ao usar in, o parâmetro value aceita uma matriz de valores.
Não está dentro - nin

$_collection-&amp;gt;addAttributeToFilter('id', array('nin' =&amp;gt; array(1,4,74,98)));

Nulo nulo

$_collection-&amp;gt;addAttributeToFilter('description', 'null');

Não NULL – não nulo

$_collection-&amp;gt;addAttributeToFilter('description', 'notnull');

Maior que – gt

$_collection-&amp;gt;addAttributeToFilter('id', array('gt' =&amp;gt; 5));

Menor que - lt

$_collection-&amp;gt;addAttributeToFilter('id', array('lt' =&amp;gt; 5));

Maior ou igual a to- gteq

$_collection-&amp;gt;addAttributeToFilter('id', array('gteq' =&amp;gt; 5));

Menor ou igual a – lteq

$_collection-&amp;gt;addAttributeToFilter('id', array('lteq' =&amp;gt; 5));

OU condição

$_collection-&amp;gt;addAttributeToFilter(array(
array(
'attribute' =&amp;gt; 'field_name',
'in' =&amp;gt; array(1, 2, 3),
),
array(
'attribute' =&amp;gt; 'date_field',
'from' =&amp;gt; '2010-09-10',
)
));

Mostrar novo produto: usando addAttributeToFilter por atributo

Passo 1: Em app/code/local/Mage/Catalog/Block/Product (se esta pasta não existir, crie-a). Crie um arquivo de bloco (Newproducts.php) que se estenda para

Mage_Catalog_Block_Product_List.

app/code/local/Mage/Catalog/Block/Product/Newproducts.php

&amp;lt;?php

class Mage_Catalog_Block_Product_Newproducts extends Mage_Catalog_Block_Product_List {
protected function _getProductCollection() {
 if (is_null($this-&amp;gt;_productCollection)) {
 $todayDate = Mage::app()-&amp;gt;getLocale()-&amp;gt;date()-&amp;gt;toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
 $collection = Mage::getResourceModel('catalog/product_collection')
 -&amp;gt;addAttributeToSelect(Mage::getSingleton('catalog/config')-&amp;gt;getProductAttributes())
 -&amp;gt;addStoreFilter()
 -&amp;gt;addPriceData()
 -&amp;gt;addTaxPercents()
 -&amp;gt;addUrlRewrite()
 -&amp;gt;addAttributeToFilter('news_from_date', array('date' =&amp;gt; true, 'to' =&amp;gt; $todayDate))
 -&amp;gt;addAttributeToFilter('news_to_date', array('or' =&amp;gt; array(
 0 =&amp;gt; array('date' =&amp;gt; true, 'from' =&amp;gt; $todayDate),
 1 =&amp;gt; array('is' =&amp;gt; new Zend_Db_Expr('null')))
 ), 'left')
 -&amp;gt;addAttributeToSort('news_from_date', 'desc')
 -&amp;gt;setPageSize($this-&amp;gt;get_prod_count())
 -&amp;gt;setCurPage($this-&amp;gt;get_cur_page());
 Mage::getSingleton('catalog/product_status')-&amp;gt;addVisibleFilterToCollection($collection);
 Mage::getSingleton('catalog/product_visibility')-&amp;gt;addVisibleInCatalogFilterToCollection($collection);
 $this-&amp;gt;setProductCollection($collection);
}
return $collection;
}
}

Etapa 2: no arquivo de layout (cms.xml) ou em qualquer página do CMS, adicione o seguinte código:
Para arquivo de layout (cms.xml):

&amp;lt;cms_index_index translate=&amp;quot;label&amp;quot;&amp;gt;
 &amp;lt;label&amp;gt;CMS Home Page&amp;lt;/label&amp;gt;
 &amp;lt;reference name=&amp;quot;content&amp;quot;&amp;gt;
 &amp;lt;block type=&amp;quot;catalog/product_newproducts&amp;quot; name=&amp;quot;product_new&amp;quot; template=&amp;quot;catalog/product/list.phtml&amp;quot;&amp;gt;
 &amp;lt;block type=&amp;quot;catalog/product_list_toolbar&amp;quot; name=&amp;quot;product_list_toolbar&amp;quot; template=&amp;quot;catalog/product/list/toolbar.phtml&amp;quot;&amp;gt;
 &amp;lt;block type=&amp;quot;page/html_pager&amp;quot; name=&amp;quot;product_list_toolbar_pager&amp;quot;/&amp;gt;
 &amp;lt;/block&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;empty&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;6&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;one_column&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;5&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;two_columns_left&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;4&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;two_columns_right&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;4&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;three_columns&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;3&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;setToolbarBlockName&amp;quot;&amp;gt;&amp;lt;name&amp;gt;product_list_toolbar&amp;lt;/name&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;/block&amp;gt;
 &amp;lt;/reference&amp;gt;
 &amp;lt;/cms_index_index&amp;gt;

Para qualquer página do CMS (por exemplo: Home Page):
Vá para CMS->Páginas, edite a página inicial assim:
Adicione o seguinte código ao campo Layout Update XML:

&amp;lt;reference name=&amp;quot;content&amp;quot;&amp;gt;
 &amp;lt;block type=&amp;quot;catalog/product_newproducts&amp;quot; name=&amp;quot;product_new&amp;quot; template=&amp;quot;catalog/product/list.phtml&amp;quot;&amp;gt;
 &amp;lt;block type=&amp;quot;catalog/product_list_toolbar&amp;quot; name=&amp;quot;product_list_toolbar&amp;quot; template=&amp;quot;catalog/product/list/toolbar.phtml&amp;quot;&amp;gt;
 &amp;lt;block type=&amp;quot;page/html_pager&amp;quot; name=&amp;quot;product_list_toolbar_pager&amp;quot;/&amp;gt;
 &amp;lt;/block&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;empty&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;6&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;one_column&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;5&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;two_columns_left&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;4&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;two_columns_right&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;4&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;three_columns&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;3&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;setToolbarBlockName&amp;quot;&amp;gt;&amp;lt;name&amp;gt;product_list_toolbar&amp;lt;/name&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;/block&amp;gt;
 &amp;lt;/reference&amp;gt;

Imagem 1

Mostrar produto mais vendido: usando addAtitbuteToFilter por atributo

Semelhante a mostrar um novo produto na página inicial.
Passo 1 : Em app/code/local/Mage/Catalog/Block/Product (se esta pasta não existir, crie-a). Crie um arquivo de bloco (Bestsellers.php) que se estenda para Mage_Catalog_Block_Product_List.
app/code/local/Mage/Catalog/Block/Product/ Bestsellers.php

&amp;lt;?php

class Mage_Catalog_Block_Product_Bestsellers extends Mage_Catalog_Block_Product_List {

protected function _getProductCollection() {
 if (is_null($this-&amp;gt;_productCollection)) {
 $storeId = Mage::app()-&amp;gt;getStore()-&amp;gt;getId();
 $collection = Mage::getResourceModel('reports/product_collection')
 -&amp;gt;addOrderedQty()
 -&amp;gt;addAttributeToSelect('*')-&amp;gt;setStoreId($storeId)
 -&amp;gt;addStoreFilter($storeId)
 -&amp;gt;addUrlRewrite()
 -&amp;gt;setPageSize($this-&amp;gt;get_prod_count())
 -&amp;gt;setCurPage($this-&amp;gt;get_cur_page())
 -&amp;gt;setOrder('ordered_qty', 'desc');
 Mage::getSingleton('catalog/product_status')-&amp;gt;addVisibleFilterToCollection($collection);
 Mage::getSingleton('catalog/product_visibility')-&amp;gt;addVisibleInCatalogFilterToCollection($collection);
 $this-&amp;gt;setProductCollection($collection);
 }
 return $collection;
 }

}

Etapa 2: no arquivo de layout (cms.xml) ou em qualquer página do CMS, adicione o seguinte código:

Para arquivo de layout (cms.xml):

&amp;lt;cms_index_index translate=&amp;quot;label&amp;quot;&amp;gt;
 &amp;lt;label&amp;gt;CMS Home Page&amp;lt;/label&amp;gt;
 &amp;lt;reference name=&amp;quot;content&amp;quot;&amp;gt;
 &amp;lt;block type=&amp;quot;catalog/product_bestsellers&amp;quot; name=&amp;quot;product_bestseller&amp;quot; template=&amp;quot;catalog/product/list.phtml&amp;quot;&amp;gt;
 &amp;lt;block type=&amp;quot;catalog/product_list_toolbar&amp;quot; name=&amp;quot;product_list_toolbar&amp;quot; template=&amp;quot;catalog/product/list/toolbar.phtml&amp;quot;&amp;gt;
 &amp;lt;block type=&amp;quot;page/html_pager&amp;quot; name=&amp;quot;product_list_toolbar_pager&amp;quot;/&amp;gt;
 &amp;lt;/block&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;empty&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;6&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;one_column&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;5&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;two_columns_left&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;4&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;two_columns_right&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;4&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;three_columns&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;3&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;setToolbarBlockName&amp;quot;&amp;gt;&amp;lt;name&amp;gt;product_list_toolbar&amp;lt;/name&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;/block&amp;gt;
&amp;lt;/reference&amp;gt;
 &amp;lt;/cms_index_index&amp;gt;

Para qualquer página do CMS (por exemplo: Home Page):
Vá para CMS->Páginas, edite a página inicial assim:
Adicione o seguinte código ao campo Layout Update XML:

&amp;lt;reference name=&amp;quot;content&amp;quot;&amp;gt;

&amp;lt;block type=&amp;quot;catalog/product_bestsellers&amp;quot; name=&amp;quot;product_bestseller&amp;quot; template=&amp;quot;catalog/product/list.phtml&amp;quot;&amp;gt;

&amp;lt;block type=&amp;quot;catalog/product_list_toolbar&amp;quot; name=&amp;quot;product_list_toolbar&amp;quot; template=&amp;quot;catalog/product/list/toolbar.phtml&amp;quot;&amp;gt;

&amp;lt;block type=&amp;quot;page/html_pager&amp;quot; name=&amp;quot;product_list_toolbar_pager&amp;quot;/&amp;gt;

&amp;lt;/block&amp;gt;

&amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;empty&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;6&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;

&amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;one_column&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;5&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;

&amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;two_columns_left&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;4&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;

&amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;two_columns_right&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;4&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;

&amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;three_columns&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;3&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;

&amp;lt;action method=&amp;quot;setToolbarBlockName&amp;quot;&amp;gt;&amp;lt;name&amp;gt;product_list_toolbar&amp;lt;/name&amp;gt;&amp;lt;/action&amp;gt;

&amp;lt;/block&amp;gt;

&amp;lt;/reference&amp;gt; 

Imagem2

Mostrar produtos com atributo ou campo personalizado

Criando um atributo – Em destaque

  1. Faça login no painel de administração do Magento
  2. Navegue até “Gerenciar atributos” em Catálogo -> Atributos -> Gerenciar atributos
  3. No canto superior direito, clique em “Adicionar novo atributo”
  4. Agora você está na página de edição do atributo e na guia Propriedades. Se parece com isso:

Guia Propriedades

Figura 3

Guia de front-end

Figura 4

  • Identificador de Atributo: Este é o nome do atributo usado pelo sistema. Espaços não podem ser usados ​​neste campo. Vamos digitar destaque.
  • Escopo: determina o nível de loja no qual esse atributo será salvo para todos os produtos. Se você escolher Global e editar Destaque para o produto 123 na loja A para Sim, os produtos 123 apresentados na loja B (e quaisquer outras lojas) também serão atualizados para Sim.
  • Tipo de entrada do catálogo: descreve que tipo de dados o atributo armazenará. O que é definido aqui determina como a entrada de dados para este atributo ocorrerá. Usaremos Sim/Não, pois queremos selecionar o valor para.
  • Valor padrão: você pode selecionar um valor que será preenchido automaticamente para novos produtos.
  • Valor Único: Se “sim”, os dados salvos neste atributo devem ser únicos para cada produto. Neste caso, diremos “não”, pois vários destaques podem ter o mesmo destaque.
  • Valores Requeridos: Se “sim”, você será solicitado a selecionar dados neste campo de atributo ao salvar um produto que o utiliza. Validação de Entrada:
  • Aplicar a: determina para quais tipos de produto esse atributo será exibido. Por exemplo, preço não faria sentido em um produto agrupado, pois cada Produto Simples associado ao Produto Agrupado terá seu próprio preço. Portanto, você pode definir o preço para não se aplicar ao produto agrupado e não ficará coçando a cabeça sobre quais números escrever lá.
  • Use na pesquisa rápida/avançada: Se “sim”, os dados salvos neste atributo serão pesquisáveis ​​no front-end na pesquisa rápida e na pesquisa avançada, respectivamente.
  • Comparável no front-end: Se "sim", esse atributo será exibido em uma comparação de produtos, desde que pelo menos um produto na Lista de comparação contenha um valor para esse atributo.
  • Uso na navegação em camadas: Se “filtrável”, esses dados estarão disponíveis como um filtro na navegação em camadas do Magento. Filtrável (com resultados) significa que apenas os valores associados a produtos específicos em uma determinada página de categoria serão listados no menu Navegação em camadas. Filtrável (sem resultados) significa que todos os valores existentes para um atributo serão exibidos no menu, mesmo se usar isso como um filtro não produzirá resultados. Há uma condição para usar atributos na navegação em camadas – o Tipo de entrada deve ser Dropdown, Multiple Select ou Price.
  • Posição: Determina a posição deste atributo no menu Layered Nav.
  • Visível nas Páginas do Catálogo no Front-end: Se “não”, este atributo não será exibido na página de informações do produto. A “visibilidade” apenas controla se o atributo é exibido ou não no front-end. Tenha em mente - se você definir um atributo como "Visível: Não" e deixá-lo como "Comparável: Sim", esse atributo ainda aparecerá em comparação

Gerenciar rótulo/opções

Figura 5

Nesta guia, você pode inserir o rótulo do atributo no front-end. Se você controlar lojas em vários idiomas, poderá inserir o rótulo em cada idioma nessa guia. Se a etiqueta de uma loja estiver em branco, esta loja procurará a etiqueta padrão e usará esta. Aqui entraremos em “Destaque” em “Padrão”.

Aplicar um atributo para conjuntos de atributos – Padrão

  1. Faça login no painel de administração do Magento
  2. Navegue até “Gerenciar atributos” em Catálogo -> Atributos -> Gerenciar conjuntos de atributos
  3. Clique em “Padrão” ou em qualquer conjunto de atributos.
  4. Você está agora na página de edição do Conjunto de Atributos e move Destaque para o Grupo Geral ou qualquer grupo. Se parece com isso:

Figura 6

Aplicando a um produto

Agora, para aplicar este atributo selecionável a um produto, basta adicioná-lo a um conjunto de atributos e criar um novo produto usando este conjunto. Abaixo está um exemplo simplificado da guia Geral de criação de um novo produto no admin:

Imagem 7

Semelhante a mostrar um novo produto na página inicial.

Passo 1: Em app/code/local/Mage/Catalog/Block/Product (se esta pasta não existir, crie-a). Crie um arquivo de bloco (Featured.php) que se estenda para Mage_Catalog_Block_Product_List.

app/code/local/Mage/Catalog/Block/Product/ Featured.php

Neste código a seguir, usando addAttributeToFilter para o atributo de filtro Featured e usando addFieldToFilter para o campo de filtro SKU do produto com valor de sku como “PROD0003”.

&amp;lt;?php

class Mage_Catalog_Block_Product_Featured extends Mage_Catalog_Block_Product_List {

protected function _getProductCollection() {
 if (is_null($this-&amp;gt;_productCollection)) {
 $collection = Mage::getResourceModel('catalog/product_collection')
 -&amp;gt;addAttributeToSelect(Mage::getSingleton('catalog/config')-&amp;gt;getProductAttributes())
 -&amp;gt;addStoreFilter()
 -&amp;gt;addPriceData()
 -&amp;gt;addTaxPercents()
 -&amp;gt;addUrlRewrite()
 -&amp;gt;addAttributeToFilter('featured', array('eq' =&amp;gt; 1))
 -&amp;gt;addFieldToFilter('sku', array('like', 'PROD0003'))
 -&amp;gt;setPageSize($this-&amp;gt;get_prod_count())
 -&amp;gt;setCurPage($this-&amp;gt;get_cur_page());
 Mage::getSingleton('catalog/product_status')-&amp;gt;addVisibleFilterToCollection($collection);
 Mage::getSingleton('catalog/product_visibility')-&amp;gt;addVisibleInCatalogFilterToCollection($collection);
 $this-&amp;gt;setProductCollection($collection);
 }
 return $collection;
 }

}
Step 2: In layout file(cms.xml) or any CMS Page add following code:
For layout file(cms.xml):
&amp;lt;cms_index_index translate=&amp;quot;label&amp;quot;&amp;gt;
 &amp;lt;label&amp;gt;CMS Home Page&amp;lt;/label&amp;gt;
 &amp;lt;reference name=&amp;quot;content&amp;quot;&amp;gt;
 &amp;lt;block type=&amp;quot;catalog/product_featured&amp;quot; name=&amp;quot;product_featured&amp;quot; template=&amp;quot;catalog/product/list.phtml&amp;quot;&amp;gt;
 &amp;lt;block type=&amp;quot;catalog/product_list_toolbar&amp;quot; name=&amp;quot;product_list_toolbar&amp;quot; template=&amp;quot;catalog/product/list/toolbar.phtml&amp;quot;&amp;gt;
 &amp;lt;block type=&amp;quot;page/html_pager&amp;quot; name=&amp;quot;product_list_toolbar_pager&amp;quot;/&amp;gt;
 &amp;lt;/block&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;empty&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;6&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;one_column&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;5&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;two_columns_left&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;4&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;two_columns_right&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;4&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;three_columns&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;3&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;setToolbarBlockName&amp;quot;&amp;gt;&amp;lt;name&amp;gt;product_list_toolbar&amp;lt;/name&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;/block&amp;gt;
&amp;lt;/reference&amp;gt;
 &amp;lt;/cms_index_index&amp;gt;

Para qualquer página do CMS (por exemplo: Home Page):
Vá para CMS->Páginas, edite a página inicial assim:
Adicione o seguinte código ao campo Layout Update XML:

&amp;lt;reference name=&amp;quot;content&amp;quot;&amp;gt;
 &amp;lt;block type=&amp;quot;catalog/product_featured&amp;quot; name=&amp;quot;product_featured&amp;quot; template=&amp;quot;catalog/product/list.phtml&amp;quot;&amp;gt;
 &amp;lt;block type=&amp;quot;catalog/product_list_toolbar&amp;quot; name=&amp;quot;product_list_toolbar&amp;quot; template=&amp;quot;catalog/product/list/toolbar.phtml&amp;quot;&amp;gt;
 &amp;lt;block type=&amp;quot;page/html_pager&amp;quot; name=&amp;quot;product_list_toolbar_pager&amp;quot;/&amp;gt;
 &amp;lt;/block&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;empty&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;6&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;one_column&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;5&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;two_columns_left&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;4&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;two_columns_right&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;4&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;addColumnCountLayoutDepend&amp;quot;&amp;gt;&amp;lt;layout&amp;gt;three_columns&amp;lt;/layout&amp;gt;&amp;lt;count&amp;gt;3&amp;lt;/count&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;action method=&amp;quot;setToolbarBlockName&amp;quot;&amp;gt;&amp;lt;name&amp;gt;product_list_toolbar&amp;lt;/name&amp;gt;&amp;lt;/action&amp;gt;
 &amp;lt;/block&amp;gt;
&amp;lt;/reference&amp;gt;

Imagem 8

Por favor, compartilhe suas impressões e idéias nos comentários abaixo!