magento-logoUm grande problema para quem começa a usar o magento é a dificuldade de trabalhar com os recursos progamaticamente.  Magento usa a framework ZEND do PHP e alem disso trabalha com um banco de dados em EAV. Isso dificulta muito para quem quer usar uma busca crua em SQL para trazer os produtos, pedidos ou clientes.

Na verdade isso não é um problema, e sim uma solução. O uso da biblioteca ZEN na verdade facilita as coisas. Em vez de usar aquelas SQLs complicadas cheia de JOINS, basta usar as COLLECTIONS do Magento.

O BASICO

Para o nosso teste, vamos fazer o seguinte, criaremos o arquivo block.phtml dentro do diretorio template do seu tema atual. Ex : app/frontend/design/default/SEU_TEMA/template/test/block.phtml.  Dentro do arquivo colaremos o seguinte codigo em PHP.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php 
        /* Chama o model , essa linha na verdade é uma forma diferente de falar $model = new Mage_Catalog_Model Product();*/
	$model = Mage::getModel('catalog/product');
 
        /* Prepara a coleção que será chamada do modelo  CATALOG */
	$collection = $model->getCollection();
 
        /* Escolhe quais atributos vão ser chamados (Como se fossem as colunas de uma tabela sql comum) */
	$collection->addAttributeToSelect('name');
        $collection->addAttributeToSelect('price');
	$collection->addAttributeToSelect('image_url');
        $collection->setPage(1,3);	
 
        /* Carrega a Coleção (Collection) */
	$collection->load();
?>
<ul>
<?php foreach($collection as $product) : ?>
	<li><img src="<?php echo $product->getImageUrl(); ?>" /><a href="<?php echo $product->getProductUrl() ?>"><?php echo $product->getName() ?></a>- <?php echo number_format($product->getPrice(),2,",","."); ?></li>		
<?php endforeach; ?>
</ul>

Agora vamos criar uma chamada do nosso bloco em uma nova pagina CMS, Esse bloco tem o tipo mais basico do magento que é o modulo core/template.

1
{{block type="core/template" template="test/block.phtml"}}

Ao rodar a pagina CMS recém criada você vera a lista completa de produtos do seu catalogo.

Vamos entender a ultima parte do codigo onde nós fazemos um foreach e listamos nossos produtos. Você pode reparar que usamos os metodos que começam com “get” .
no href do link e chamamos pelo metodo getProductUrl(), e na ancora usamos o termo getName.

Esses métodos que começam com get, na verdade, são metodos mágicos do Magento, para usa-los basta escolher o atributo que você quer usar e tirar o underscore (se tiver) e colocarm em maiúscula toda primeira letra. Se você quiser por exemplo o preço do produto você escreve. getPrice(); se quiser o preço especial você colocar getSpecialPrice(); Mas tem que colocar esses atributos na lista da Collection, senão você estará tentando pegar atributos que não foram selecionados anteriormente.

No final da lista de Atributos a serem selecionados eu coloquei um Metodo de paginação que limita a quantidade de itens a serem chamados pela collection. O primeiro parametro diz a quantidade de paginas que você quer que tenha sua lista e no segundo você coloca a quantidade de itens que você quer em cada pagina.

Essa foi uma explicação bem breve, mas tenho certeza que vai ajudar muitas pessoas na hora de colocarem produtos na pagina principal ou em blocos por todo o site. Vou voltar a falar sobre esse Collection em um futuro bem próximo, pois ainda falta muito a ser discutido.

Abraço a todos

Post to Twitter

4 Responses to “Collections – Magento”

  1. Luis Chaves
    15:49, 28.06.2010

    Olá leonardo!

    Parabéns pelo seu Blog está muito legal e riquisimo em conteudo.

    Venho trabalhando com Magento a pouco tempo, mas já conseguir entender muito do seu funcionamento apesar de ser leigo no assunto programação. O que acontece é o seguinte estou querendo colocar 4 novos campos no cadastro de clientes. Seguir alguns tutoriais bem explicativos e já até conseguir fazer um modulo para cadastrar esses novos campos e estou tendo sucesso no cadastro em registrer e edit porem quando tento fazer o cadastro pelo checkout não está indo para a tabela customer. Já fiz todos os testes possíveis e nada.
    Você teria alguma ideia de onde posso alterar para que seja possível fazer o cadastro destes novos campos no checkout?

    Desde já agradeço pela sua atenção

    Luis Chaves


  2. Pillspot.org. Canadian Health&Care.Special Internet Prices.Best quality drugs.No prescription online pharmacy. No prescription drugs. Buy pills online

    Buy:Nymphomax.Zocor.Advair.Acomplia.Ventolin.Benicar.Prozac.Amoxicillin.Lasix.Female Pink Viagra.SleepWell.Cozaar.Zetia.Wellbutrin SR.Lipitor.Lipothin.Aricept.Buspar.Seroquel.Female Cialis….

  3. Eu acho que no Blog do Mario Sam tem alguma coisa sobre isso. http://magento.mariosam.com/dicas/campo-cliente-personalizado

Leave a Reply