foto
Gabriel Z Blog

Gabriel Z Blog

Tecnologia web, Magento & geek stuff

Posts com a Tag ‘Magento’


Magento: Solução para o erro “Allowed memory size exhausted…”

27 de novembro de 2008 Enviar este artigo por e-mail Imprimir este artigo

Algumas dicas para quem está passando pelo problema de memória insuficiente, com o Magento.

Isto ocorre principalmente ao se tentar aplicar promoções a um grande número de produtos, se o seu provedor de hospedagem limita a quantidade de memória (ou se a configuração padrão está muito abaixo do necessário).

Estes comentários são válidos mesmo para quem tem a versão 1.1.8, que deveria ter corrigido o problema. É compreensível, já que independente da versão, você pode ter realmente uma situação de uso maior da memória ou processamento.

Meus agradecimentos ao cliente e amigo Rodiney, da Arte Sacro, que também brigou muito com o problema e nos enviou a solução definitiva para o caso deles, em ambiente “Profissional II” da Locaweb.

1) No arquivo php-cgi.bin:

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

max_execution_time = 3600; Maximum execution time of each script, in seconds // estava 1800
max_input_time = 60; Maximum amount of time each script may spend parsing request data
memory_limit = 512M; Maximum amount of memory a script may consume (8MB) // estava 64Mb

2) No arquivo .htaccess mesma coisa:

#<IfModule mod_php5.c>
php_value memory_limit 512M
php_value max_execution_time 3600

Ufa! Agora vai…

Atualização do Magento: dicas e truques

27 de novembro de 2008 Enviar este artigo por e-mail Imprimir este artigo

Alguns pontos importantes ao se atualizar o Magento:

  • Redundante e óbvio, mas fundamental: faça um backup geral de todo o seu database (full, não pelo admin do Magento) e de todos os arquivos (menos as pastas /var/cache e /var/session, que devem ser apagadas).
  • Guarde backup do /app/etc/config.xml — ele contém as informações necessárias para conexão de banco de dados e assim você não precisará rodar a instalação novamente após o upgrade.
  • Se você estiver migrando de uma versão anterior à 1.1.3, para a 1.1.8 ou posterior, saiba que haverá muito trabalho pela frente. Como várias funções mudaram, se você estiver usando um template próprio, é muito provável que terá que revisar as chamadas das funções e blocos estáticos e aí a dica é comparar com os templates-padrão atualizados. Veja os tópicos relacionados no fórum: http://www.magentocommerce.com/boards/viewforum/11106/.
  • Caso você esteja atualizando a partir de uma versão igual ou superior a 1.1.3 (isso é válido e foi testado até a 1.1.8), basta sobrescrever todos os arquivos de sistema, mantendo sua pasta de template e as extensões onde elas estão, além do arquivo config.xml já citado acima.
  • Se você aplicou uma página inicial personalizada, ou a correção citada aqui para a qualidade das imagens, terá que aplicá-las novamente.

De forma muito simples e resumida, é isso.  :)

Boa sorte!

Magento versão 1.1.7 e versão 1.1.8

27 de novembro de 2008 Enviar este artigo por e-mail Imprimir este artigo

Nem bem estávamos terminando de atualizar alguns clientes para a versão 1.1.7 do Magento, saiu ontem a versão 1.1.8.

Essas versões contêm importantes correções e melhorias, que serão notadas principalmente por lojas com um grande número de produtos ou promoções. Dentre as correções mais importantes, estão a limpeza automática das tabelas de log no banco de dados — algumas por aqui tinham mais de 50 mil registros e deixavam qualquer backup gigantesco — e o erro de estouro de memória (stack overflow) ao se aplicar uma promoção em catálogos com muitos produtos (no caso de um de nossos clientes, mais de 6 mil).

As atualizações continuam constantes, houve uma mudança no tipo de licença (confira aqui) e a comunidade continua crescendo.

Teremos novidades aqui na Indexa até o final da semana, quando devemos lançar mais um e-commerce. Devo ainda publicar um artigo com dicas para o upgrade a partir de versões mais antigas, aqui no blog.

Aguardem…

Imagens dos produtos em baixa qualidade no Magento

6 de outubro de 2008 Enviar este artigo por e-mail Imprimir este artigo

Algo que todos os nossos clientes reparam no Magento, sempre, é a baixa qualidade das imagens dos produtos. Por padrão, o sistema compacta as imagens em JPG com qualidade de 75%. Para isto, ele usa a biblioteca gráfica GD2, do PHP.

Com a compactação, as imagens ficam mais leves, o que pode ser bom para os usuários por deixar o site mais rápido. Porém, na maioria das vezes 75% é muito pouco para que as fotos fiquem com uma boa definição. E fotos ruins não são boas para as vendas.

Podemos “corrigir” este problema, alterando o nível de compactação aplicado aos arquivos, quando salvos no cache do sistema. Normalmente, uma qualidade entre 85 e 90% será suficiente, mas se o seu projeto exige uma exibição perfeita (e você não está preocupado com o peso das páginas), pode colocar até 100%.

Conforme um thread do fórum, altere o código seguinte no arquivo /lib/Varien/Image/Adapter/Gd2.php (linha 68 para as versões anteriores à 1.1.1 e 80 para 1.1.1 até 1.1.6 1.1.8):

call_user_func($this->_getCallback('output'), $this->_imageHandler, $fileName);

Para:

if (IMAGETYPE_JPEG === $this->_fileType)call_user_func($this->_getCallback('output'), $this->_imageHandler, $fileName,90);
else
call_user_func($this->_getCallback('output'), $this->_imageHandler, $fileName);

Não se esqueça de limpar o cache das imagens para ver o resultado em produtos já cadastrados na sua loja.

Abraço!

Lançada versão 1.1.6 do Magento + 2 novos temas: Blue e Blank

18 de setembro de 2008 Enviar este artigo por e-mail Imprimir este artigo

Está disponível para download desde ontem (17/09/2008) a versão 1.1.6 do Magento.

Esta versão é uma continuação da 1.1.5, com a correção de vários bugs e a inclusão de algumas funcionalidades. A principal delas é uma nova forma de gerenciar categorias, que facilita a vida de quem possui muitas categorias para gerenciar ao mesmo tempo.

Para saber mais informações sobre esta versão, leia o post no blog da ferramenta.

Clique no link abaixo para fazer o download (ou utilize o Magento Connect, para upgrade):
http://www.magentocommerce.com/download.

Uma outra novidade excelente, foi o lançamento simultâneo de 2 novos temas: Blue e Blank. O Blue Skin é o novo tema padrão para a loja demo do Magento. Já o tema Blank foi desenvolvido para ser a melhor alternativa para quem quer fazer o seu próprio tema; ele não possui os estilos de posicionamento, cores e imagens de background dos temas Default e Modern. Show de bola!

Abraço e bom upgrade!

Tipos de relacionamento entre produtos no Magento

10 de setembro de 2008 Enviar este artigo por e-mail Imprimir este artigo

Existem 3 tipos de relacionamento entre os produtos, no Magento. Segue uma breve descrição de cada um, com base na pesquisa do nosso parceiro Guto de Lima, da deLima Design:

1 - Produtos relacionados:
Quando você está comprando algo, são exibidos (normalmente no nado direito da tela), produtos marcados como relacionados àquele.

2 - Vendas agregadas:
Serve para oferecer “produtos nos quais você pode estar interessado”. Por exemplo, se a pessoa está procurando um cachorro e ela entra no cachorro velho, mas nós criamos um mais bonito e mais barato, podemos agregá-los para que a pessoa tenha uma boa indicação de compra, realizada automaticamente pelo sistema. Este tipo de associação deve oferecer preferencialmente algo melhor do que o cliente está visualizando, ou em preço, ou em atualização. Senão, melhor não usar.

3 - Vendas cruzadas:
Para vendas no impulso. Os produtos cruzados são exibidos logo abaixo do carrinho de compras. Eu seja, é o melhor lugar para vender acessórios e coisas que, via de regra, são impossíveis de negar na hora de fechar o pedido. Esta lista só aparece no carrinho quando há, nos produtos selecionados pelo cliente, algum item que tenha sido “cruzado”. Se houver muitos produtos cruzados, o sistema exibirá uma lista de 3 diferentes a cada vez que o cliente acessar o carrinho ou atualizá-lo.

Página inicial no Magento - exibindo produtos

9 de setembro de 2008 Enviar este artigo por e-mail Imprimir este artigo

Uma dúvida bem comum para quem instala o Magento pela primeira vez é: por que a página inicial está em branco?

Bem, o sistema vem com uma página (gerenciável no backend em CMS > Gerenciar Páginas) chamada Home Page. O que você quiser que apareça na home do site, deve colocar nesta página.

Ótimo, mas e se você não quiser colocar um HTML lá, mas simplesmente exibir alguns produtos, p. ex., os mais vendidos, os novos, ou os pertencentes a uma determinada categoria, automaticamente?

Exibindo produtos com “new from date” OU os “mais vistos” (clicados)

O que se faz, em geral, é descomentar o código que já vem por padrão na Home, usando alguns templates que ajudam bastante. Um exemplo comum de código XML de Atualização de Layout (na aba “Design Personalizado”), seria:


<reference name="content">
<block type="catalog/product_new" name="home.catalog.product.new" alias="product_new" template="catalog/product/new.phtml" after="cms_page"/>
<!-- <block type="reports/product_viewed" name="home.reports.product.viewed" alias="product_viewed" template="reports/home_product_viewed.phtml" after="product_new"/>
<block type="reports/product_compared" name="home.reports.product.compared" template="reports/home_product_compared.phtml" after="product_viewed" /> -->
</reference>
<reference name="right">
<action method="unsetChild"><alias>right.reports.product.viewed</alias></action>
<action method="unsetChild"><alias>right.reports.product.compared</alias></action>
</reference>


right.reports.product.viewed
right.reports.product.compared

Sendo também necessário referenciar o template no campo Conteúdo, na guia Informações Gerais:

{{block type="catalog/product_new" name="home.catalog.product.new" alias="product_homepage" template="catalog/product/new.phtml"}}

Esta combinação de códigos mostraria os produtos novos, ou os que possuírem o campo “new from date” preenchidos. Se você descomentar o código que vem logo abaixo, vai poder também mostrar os produtos mais vistos (home_product_viewed.phtml).

Se você optar por utilizar os novos, verá que há ainda alguns problemas na formatação do arquivo new.phtml. A listagem fica meio bagunçada, só 5 produtos são exibidos e os thumbnails saem desproporcionais. A solução que eu encontrei foi substituir o código original do catalog/product/new.phtml pelo seguinte (a partir da linha 21):


<?php if (($_products = $this->getProductCollection()) && $_products->getSize()): ?>
<div class="listing-type-grid  catalog-listing">
<h3>Vitrine de Produtos</h3>
<?php $_collectionSize = $_products->getSize() ?>
<table cellspacing="0" class="generic-product-grid" id="product-list-table">
<?php $i=0; foreach ($_products as $_product): ?>
<?php if ($i++%3==0): ?>
<tr>
<?php endif ?>
<td>
<p class="product-image">
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>">
<img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135, 135); ?>" width="135" height="135" alt="<?php echo $this->htmlEscape($_product->getName()) ?>" />
</a>
</p>
<h5><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>"><?php echo $this->htmlEscape($_product->getName()) ?></a></h5>
<?php if($_product->getRatingSummary()): ?>
<?php echo $this->getReviewsSummaryHtml($_product, 'short') ?>
<?php endif; ?>
<?php echo $this->getPriceHtml($_product, true) ?>
<?php if($_product->isSaleable()): ?>
<button class="form-button" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><?php echo $this->__('Add to Cart') ?></span></button>
<?php else: ?>
<div class="out-of-stock"><?php echo $this->__('Out of stock') ?></div>
<?php endif; ?>
<div class="clear"></div>
<p class="add-to">
<?php if ($this->helper('wishlist')->isAllow()) : ?>
<a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-cart"><?php echo $this->__('Add to Wishlist') ?></a>
<?php endif; ?>
<?php if($_compareUrl=$this->getAddToCompareUrl($_product)): ?><br/>
<a href="<?php echo $_compareUrl ?>"><?php echo $this->__('Add to Compare') ?></a>
<?php endif; ?>
</p>
</td>
<?php if ($i%3==0 && $i!=$_collectionSize): ?>
</tr>
<?php endif ?>
<?php endforeach ?>
<?php for($i;$i%3!=0;$i++): ?>
<td class="empty-product"> </td>
<?php endfor ?>
<?php if ($i%3==0): ?>
</tr>
<?php endif ?>
</table>
<script type="text/javascript">decorateTable('product-list-table')</script>
</div>
<?php endif; ?>

Além disso, se todos os produtos estiverem aparecendo como “Esgotados”, inclua a seguinte linha no arquivo app\code\core\Mage\Catalog\Product\New.php (provavelmente na linha 47):

$products->addAttributeToSelect('status');

Se quiser, também pode colocar as seguintes linhas, antes de $this->setProductCollection($products):

// alterado para 9 produtos, ao inves de 5
$products->setOrder('news_from_date')->setPageSize(9)->setCurPage(1);

// randomizar os resultados
$products->getSelect()->order('rand()');

Exibindo produtos de uma categoria

Se por acaso você quiser exibir os produtos de uma determinada categoria nesta página, coloque o seguinte código no campo Conteúdo (na guia Informações Gerais):

{{block type="catalog/product_list" category_id="5" template="catalog/product/new.phtml"}}

Neste caso, estou pegando os produtos da categoria 5, mas você pode substituir pelo ID de qualquer categoria existente na sua loja.

O mais interessante é que você pode mexer na página inicial sempre que quiser e, usando estes exemplos como modelo, pode criar diversas combinações de recursos, conforme as suas necessidades.

Aguardo comentários, com seus códigos para a home do Magento!

Como instalar o Magento na Locaweb (arquivo .htaccess)

29 de agosto de 2008 Enviar este artigo por e-mail Imprimir este artigo

Algumas pessoas me escreveram perguntando se era possível instalar o Magento na Locaweb e, conforme prometido, seguem alguns comentários sobre este provedor.

Se você tentar rodar a instalação, provavelmente não terá problemas quanto às extensões do PHP, tanto nos planos Profissionais quanto (finalmente!) nos planos de Revenda. O problema está na configuração do mod_rewrite e algumas outras diretivas do .htaccess.

Com o arquivo que vem com o Magento, ele não rodará bem. Utilize as linhas abaixo (consegui isso causando erros e corrigindo cada item incompatível, através do relatório de erros do Apache):

DirectoryIndex index.php

SecFilterEngine Off
SecFilterScanPOST Off
SSLOptions StdEnvVars
#(em caso de plano Revenda, apague as 3 últimas linhas)

RewriteEngine on
RewriteBase /

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteCond %{REQUEST_URI} !^/(media|skin|js)/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule .* index.php [L]

AddDefaultCharset Off
ExpiresDefault "access plus 1 year"

Order allow,deny
Allow from all

Magento versão 1.1.3 - novidades e problemas

28 de agosto de 2008 Enviar este artigo por e-mail Imprimir este artigo

Com o lançamento da versão 1.1.3 do Magento, temos novas funcionalidades e correções no sistema:

Funcionalidades/correções

  • Corrigidos erros no PayPal direct/express/standard e cálculo de envio quando apenas produtos virtuais estão no carrinho
  • Corrigida validação de redirecionamentos internos para secure URLs
  • Corrigido salvar produto com custom options em múltiplas lojas (Bugs #5833 and #6269)
  • Adicionada saída HTML em termos de busca no painel do admin
  • Adicionado exibir tamanho máximo de arquivo DataFlow para upload de acordo com configurações do servidor
  • Corrigida dedução de estoque de Produtos Configuráveis
  • Corrigida checagem de versão mínima de MySQL no wizard de instalação
  • Corrigido estorno de pedido no admin - valor base de imposto não era gravado após estorno
  • Corrigidos problemas de checkout em uma única página no tema modern
  • Melhorias no tema iPhone para suporte ao PayPal e Produtos Virtuais

Problemas da versão

Tradução dos templates de e-mail: O primeiro problema que eu notei foi com os templates de e-mail. Agora, existem novos arquivos, o que quer dizer que não adianta tentar usar o pacote traduzido que eu estava disponibilizando aqui. Solução: Fazer toda a tradução diretamente pelo sistema, em Sistema > E-mails transacionais. Se preferir, pode traduzir os arquivos phtml também, dentro da pasta locale, mas este não é o jeito mais correto (e ainda pode causar problemas em uma nova versão).
SKU do pedido em produtos configuráveis: Agora, na descrição de um pedido de um produto configurável, o Magento exibe o código (SKU) do produto “pai”, ao invés do SKU da seleção exata que o usuário marcou no site, como sempre funcionou. Isto é um problema para quem depende deste código em algum procedimento interno de controle e, na minha opinião, trata-se de um erro da versão. Implementei uma solução, baseada em um post no fórum. Em breve, devo postar aqui.

Claro que, como toda nova versão, surgem pequenos itens com os quais temos que lidar. Mas, neste caso, os benefícios continuam valendo a pena. Faça o upgrade, mas não esqueça de fazer pelo menos 2 backups completos (dos arquivos e do banco da dados).

Abraço!

Geração de sitemap (sitemap.xml) no Magento

22 de agosto de 2008 Enviar este artigo por e-mail Imprimir este artigo

Bem, mais uma funcionalidade que ainda não está completamente concluída no Magento é a criação automática de sitemap — pelo menos a primeira criação do arquivo.

O sitemap é o primeiro passo para o SEO da sua loja e, portanto, é fundamental para que ela seja visível nos principais motores de busca da internet.

Se você for pelo admin, em Catálogo > Google Sitemap, vai ver que é possível cadastrar um novo sitemap no sistema, mas o arquivo sitemap.xml não é gerado no caminho físico indicado.

A solução é bem simples. Primeiro, cadastre o sitemap, colocando o diretório (p. ex. /sitemap/) e o nome do arquivo a ser gerado (p. ex. sitemap.xml). Em seguida, você será redirecionado à listagem, onde aparecerá o ID do sitemap recém cadastrado. Para gerar o arquivo para o ID 1, digite “http://urldosite/admin/sitemap/generate/sitemap_id/1″ na barra de endereço do seu navegador. Basta colocar o número do ID desejado no final da URL.

É interessante dar uma revisada nas configurações de geração automática e prioridade em Sistema > Configuração > Catálogo > Google Sitemap, após a geração do arquivo XML.

Pronto! Agora é só informar o sitemap ao Google e aguardar a indexação da sua loja. Normalmente, demora uns dias, ou uma semana, para seus produtos estarem corretamente indexados.



© 2008 - Indexa Ltda. Todos os direitos reservados.