foto
Gabriel Z Blog

Gabriel Z Blog

Tecnologia web, Magento & geek stuff

Arquivo da Categoria ‘Programação’


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):

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!

Tradução do Wordpress 2.6.2 para Português do Brasil (pt_br)

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

WP

Saiu dia 09 de setembro a tradução brasileira do Wordpress 2.6.2.

Se você não conhece, o Wordpress é considerado como a melhor plataforma de blog que existe, para a maioria dos tipos de blogs que temos por aí. É o que uso aqui!

Na minha avaliação, o pessoal da comunidade BR do WP está mandando muito bem e, a cada nova atualização, a tradução fica mais apurada.

A última versão pode sempre ser baixada neste link: http://br.wordpress.org/releases/#latest

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.

Envio de newsletter pelo Magento

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

Se você já tentou utilizar a funcionalidade de envio de newsletter pelo Magento (na versão 1, pelo menos), deve ter tido problemas. Simplesmente, porque não existe um botão “Enviar” e, além disso, o envio automático — através do cron — não funciona.

Pesquisando no fórum do Magento, descobri que há basicamente 3 alternativas para enviar os e-mails:

1) Criar um link “Enviar”, que manda imediatamente todas as news com envios programados para a hora atual (ou antes), ao ser clicado:

Abra o template /app/design/adminhtml/default/default(ou seu template)/template/newsletter/queue/list.phtml

e adicione o seguinte link após a última linha (33 para mim):

<h3 class="icon-head head-newsletter-queue"><strong><a href="/urldosite/index.php/admin/newsletter_queue/sending">Enviar Newsletter</a></strong></h3>

Salve e dê um refresh no admin.

2) Acessar a URL diretamente, a cada vez que quiser enviar

urldosite/index.php/admin/newsletter_queue/sending

3) Editar o crontab do servidor, incluindo a linha
(faz com que os envios sejam feitos automaticamente conforme a data programada)

*/5 * * * * /absolute/path/to/php5 -f /absolute/path/to/magento/cron.php

Na minha opinião, assim como de alguns desenvolvedores do fórum, o ideal seria fazer a programação pelo crontab e também o link; desta forma, você pode programar envios ou enviar quando quiser, clicando no link.

Erro “imagecreatefromjpeg” no EasyPHP

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

Bem, é claro que na Indexa temos um servidor FreeBSD, com o PHP rodando maravilhosamente bem (e nunca deu problema!). Mas, como muita gente que eu conheço, tenho um notebook com tudo instalado, para o caso de uma necessidade urgente, ou um atendimento no cliente. E no note, uso uma solução prática e que atende às minhas necessidades quase sempre: o easyPHP.

Tenho a versão 1.8 — que não é a última –, por motivos que outra hora posso comentar. E um problema bem comum que eu sempre tenho ao instalar novamente o pacote AMP (que inclui Apache, PHP e mySQL), é uma mensagem de erro ao tentar criar um thumbnail com a biblioteca GD2:

Fatal error: Call to undefined function: imagecreatefromjpeg()

O problema, que seria rapidamente solucionado ativando-se a biblioteca GD2 no php.ini, tem que ser resolvido de uma forma diferente no easyPHP. Só descomentar a .dll correspondente no php.ini não funciona!

Para ativar a biblioteca gráfica, clique com o botão direito no ícone do easyPHP no systray, selecione “extensões” e ative a GD2 na janela que se abre. É só isso.



© 2008 - Indexa Ltda. Todos os direitos reservados.