<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Leomangione Web Developer &#187; collections</title>
	<atom:link href="http://www.leomangione.com.br/tag/collections/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.leomangione.com.br</link>
	<description>CMS Especialist, PHP developer, Magento &#38; Drupal</description>
	<lastBuildDate>Tue, 25 May 2010 00:27:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Collections &#8211; Magento</title>
		<link>http://www.leomangione.com.br/2010/02/16/collections-magento/</link>
		<comments>http://www.leomangione.com.br/2010/02/16/collections-magento/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 18:32:45 +0000</pubDate>
		<dc:creator>Leonardo</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[collections]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.leomangione.com.br/?p=413</guid>
		<description><![CDATA[Um 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 [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Magento Logo" href="http://www.magentocommerce.com"><img class="size-full wp-image-416 alignleft" style="margin: 10px;" title="magento-logo" src="http://www.leomangione.com.br/wp-content/uploads/2010/02/magento-logo.png" alt="magento-logo" width="200" height="63" /></a>Um 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.</p>
<p>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.</p>
<p><strong>O BASICO</strong></p>
<p>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.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> 
        <span style="color: #666666; font-style: italic;">/* Chama o model , essa linha na verdade é uma forma diferente de falar $model = new Mage_Catalog_Model Product();*/</span>
	<span style="color: #000088;">$model</span> <span style="color: #339933;">=</span> Mage<span style="color: #339933;">::</span><span style="color: #004000;">getModel</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'catalog/product'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">/* Prepara a coleção que será chamada do modelo  CATALOG */</span>
	<span style="color: #000088;">$collection</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$model</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getCollection</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">/* Escolhe quais atributos vão ser chamados (Como se fossem as colunas de uma tabela sql comum) */</span>
	<span style="color: #000088;">$collection</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addAttributeToSelect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$collection</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addAttributeToSelect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'price'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$collection</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addAttributeToSelect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'image_url'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$collection</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setPage</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	
&nbsp;
        <span style="color: #666666; font-style: italic;">/* Carrega a Coleção (Collection) */</span>
	<span style="color: #000088;">$collection</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&lt;ul&gt;
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$collection</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$product</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;li&gt;&lt;img src=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$product</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getImageUrl</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&quot; /&gt;&lt;a href=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$product</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getProductUrl</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&quot;&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$product</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/a&gt;- <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #990000;">number_format</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$product</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getPrice</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;,&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/li&gt;		
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">endforeach</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
&lt;/ul&gt;</pre></td></tr></table></div>

<p>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.</p>
<p></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#123;</span>block type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;core/template&quot;</span> template<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;test/block.phtml&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Ao rodar a pagina CMS recém criada você vera a lista completa de produtos do seu catalogo.</p>
<p>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 &#8220;get&#8221; .<br /> no href do link e chamamos pelo metodo getProductUrl(), e na ancora usamos o termo getName. </p>
<p>
<p>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. </p>
<p>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.</p>
<p>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.</p>
<p>Abraço a todos </p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Collections+%E2%80%93+Magento+http://tinyurl.com/3kaktlu" title="Post to Twitter"><img class="nothumb" src="http://www.leomangione.com.br/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.leomangione.com.br/2010/02/16/collections-magento/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

