André Gugliotti
Novatec
© Novatec Editora Ltda. 2015.
Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta
obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora.
Editor: Rubens Prates
Assistente editorial: Priscila A.Yoshimatsu
Revisão técnica: Fábio Rodrigues
Revisão gramatical:Mari Kumagai
Editoração eletrônica: Carolina Kuwabata
Capa: Carolina Kuwabata
ISBN: 978-85-7522-432-8
Histórico de impressões:
Maio/2015
Primeira edição
Novatec Editora Ltda.
Rua Luís Antônio dos Santos 110
02460-000 – São Paulo, SP – Brasil
Tel.: +55 11 2959-6529
Email: [email protected]
Site: www.novatec.com.br
Twitter: twitter.com/novateceditora
Facebook: facebook.com/novatec
LinkedIn: linkedin.com/in/novatec
capítulo 1
Magento Commerce
1.1 O que você verá neste capítulo
Não é possível começar um livro de Magento, mesmo um livro específico de
módulos, sem falar um pouco do Magento e de suas principais características. O objetivo deste primeiro capítulo é apresentar ao leitor alguns detalhes
que, apesar de básicos, muitas vezes não são apresentados corretamente nos
materiais encontrados na internet, como a estrutura de arquivos, hierarquia
dos temas, modularidade e construção de múltiplas lojas.
Não se pode trabalhar com códigos e desenvolvimento de módulos para
Magento sem ter os conceitos básicos realmente frescos na mente. Se você
leu Lojas Virtuais com Magento e Temas em Magento, pode tranquilamente
pular para o capítulo 2 e começar o trabalho propriamente dito. Caso
contrário, ainda que domine o Magento, é interessante que perca alguns
minutos passando os olhos por este capítulo, como forma de garantir que
você segue os mesmos conceitos que são apresentados aqui.
1.2 Histórico do Magento Commerce
Quem trabalha com open source sabe da facilidade que esse modelo de
licença traz para os desenvolvedores. Ao liberar o uso e a modificação de
um software, os criadores de uma plataforma sabem que seu trabalho
poderá ser incrementado e melhorado por desenvolvedores ao redor do
mundo, recebendo em troca os avanços desenvolvidos por essa grande
16
Capítulo 1 ■ Magento Commerce
17
rede e melhorando seu próprio produto. Do outro lado, ao utilizar um
software open source como base para seu trabalho, os desenvolvedores
ganham tempo reaproveitando códigos já escritos e funcionais, sem a
necessidade de reinventar a roda.
Esse foi um dos princípios que guiaram Yoav Kutner e Roy Rubin na
busca por uma plataforma profissional de e-commerce. A empresa que
eles fundaram, a Varien, atendia diferentes clientes a partir de seu escritório na Califórnia, Estados Unidos, fazendo sites institucionais e lojas
virtuais. Em um dado momento, eles perceberam que a demanda por
lojas virtuais aumentaria e que o OS Commerce, software de comércio
eletrônico virtual open source muito em usado naquela época, não daria
conta do serviço, uma vez que a ferramenta era limitada, apresentando
problemas e falhas de construção.
Segundo Roy Rubin conta em uma palestra apresentada no Magento
Imagine em 2011, naquele momento eles precisavam tomar uma decisão:
trabalhar para melhorar o OS Commerce, de modo a sanar suas deficiências, ou partir para uma nova plataforma, construída do zero. Em
qualquer um dos casos, o conceito de open source continuava fresco na
mente. Se fossem trabalhar na melhoria da plataforma líder no momento,
isso seria compartilhado com a comunidade. Se decidissem trabalhar em
uma nova plataforma, ela seria open source.
A partir disso, no final de 2006, uma nova plataforma começou a ser construída. Ela foi concebida como “uma plataforma feita para revolucionar
o comércio eletrônico” e se baseou no Zend Framework 1, utilizando as
bibliotecas e funções nele disponíveis para a construção de um novo
framework – que acabou se transformando depois no Mage, o core do
Magento. Essa primeira versão foi construída por um time próprio e já
englobava as principais funções, como catálogo de produtos completo,
gestão de clientes com segmentação em grupos, o formato de gestão de
pedidos a partir dos estados de pedidos e o mecanismo de promoções
e cupons.
Em abril de 2007, a empresa lançou o Blog do Magento, abrindo o projeto base para a comunidade e começando a se relacionar com diferentes
desenvolvedores ao redor do mundo. No primeiro post, apresentava-se
a ideia do Magento para o mercado (ainda que uma parte expressiva do
18
Módulos para Magento
código já tivesse sido construída, pelo que se entende do texto), previa-se
o lançamento para o “Verão de 2007”, isto é, no hemisfério norte, entre
julho e agosto de 2007, e se pedia o apoio da comunidade de desenvolvedores e usuários para propor ideias e sugestões para a plataforma. Nesse
momento, ainda não se falava de módulos ou mais detalhes sobre a futura
plataforma, mas já se abria a ideia de que os desenvolvedores que quisessem poderiam usar o código inicial e expandi-lo, também compartilhando
seu trabalho com a comunidade.
Em março de 2008, com um ligeiro atraso, foi finalmente lançada a
primeira versão estável do Magento, chamada de Magento Community
Edition (CE), em sua versão 1.0. É interessante notar que essa primeira
versão já trazia a maioria das ferramentas nativas que ainda hoje faz
parte da plataforma. Tirando modificações na estrutura do tema, a introdução dos índices e a melhoria na gestão de alguns elementos como
os status dos pedidos, entre outras que podem ser incluídas na categoria
de pequenas evoluções, as grandes mudanças do Magento vieram na
forma de módulos desenvolvidos por terceiros e na larga oferta de temas
disponível atualmente.
Em 2010, após o crescimento rápido do Magento Commerce, o eBay, site
de leilões e venda de artigos entre pessoas físicas, comprou 50% da Varien,
por meio de sua subsidiária de pagamentos, o PayPal. A ideia era oferecer
um ambiente onde consumidores pudessem fazer compras e, obviamente,
pagar por elas pelo PayPal. Desde então, o método de pagamento já vem
instalado por padrão nas versões do Magento, mas isso não impede que
outras formas de pagamento sejam instaladas e utilizadas em suas lojas.
No ano seguinte, o eBay completou a aquisição da empresa, passando a
deter o capital completo da agora chamada Magento Inc., com a ideia de
utilizá-la como uma das peças de um novo projeto chamado X.Commerce
– que infelizmente não foi adiante.
No momento em que este livro foi revisado, o Magento Community
Edition encontrava-se na versão 1.9.1.0, ainda baseada na versão 1.0 lançada
em 2008 e, como dito, melhorada pouco a pouco nas diversas atualizações. Nessa época, um time dentro da Magento Inc. trabalhava no desenvolvimento do Magento 2, uma nova versão, completamente refeita do
Magento Commerce, trazendo mudanças na estrutura de banco de dados,
deixando de ser baseada intensamente no EAV e incluindo ferramentas
Capítulo 1 ■ Magento Commerce
19
gráficas para facilitar a edição de temas, além de simplificação na estrutura de arquivos e a utilização por padrão do jQuery, em substituição ao
Prototype e Scriptaculous.
A dúvida em relação ao Magento 2 é quando ele será realmente lançado:
o software começou a ser desenvolvido em 2010, com previsão de lançamento para meados de 2011. No entanto, foi rotineiramente postergado,
sempre com novos prazos não cumpridos. Em dezembro de 2014 foi
finalmente liberada a versão beta e em março de 2015 a primeira versão
candidata – Release Candidate – foi liberada para o mercado. A partir daí,
segundo o time da Magento Inc., o Magento 2 terá sua primeira versão
estável lançada ao longo de 2015.
O lançamento do Magento 2 já foi adiado tantas vezes que virou motivo
de piada na comunidade. É comum encontrar posts ironizando o atraso e
até mesmo pregando peças de Primeiro de Abril nos desavisados, dizendo
que a plataforma foi finalmente lançada. Houve até mesmo um site chamado “Is Magento 2 Ready?” – o Magento 2 está pronto? – que apresentava
um contador de dias desde o início do desenvolvimento da plataforma,
como mostrado na figura 1.1, e tranquilizava o visitante dizendo que a
versão 1.X do Magento ainda estava funcionando bem. Atualmente, o site
interrompeu a contagem e, provavelmente, a causa não foi o lançamento
do Magento 2, que ainda não aconteceu.
Figura 1.1 – O site “Is Mage 2 Ready?” brincava com o fato de o Magento 2
ainda não ter sido lançado.
20
Módulos para Magento
A favor da nova versão está uma documentação muito mais extensa que
sua predecessora e um código melhor estruturado, com uma curva de
aprendizado mais rápida. As dificuldades vivenciadas ao longo dos sete anos
de Magento provavelmente trouxeram vários ensinamentos aos desenvolvedores e aos gestores da plataforma e espera-se que entrar no mundo do
Magento 2 seja bem mais simples do que foi entrar no mundo do Magento 1.
1.3 Versões do Magento
O Magento Commerce foi lançado inicialmente em sua versão open source, chamada Community Edition, distribuída gratuitamente e sem custo de
licença para utilização pelas lojas virtuais. Em 2009, a Varien lançou uma
versão fechada, com custo anual de licença, chamada Enterprise Edition, e
contando com o suporte direto do time da Magento, item não disponível
na versão gratuita. Essas duas versões ainda existem e estão disponíveis
para serem instaladas em um servidor próprio.
Atualmente, a Community Edition está na versão 1.9 e a Enterprise
Edition, na 1.14. Suas estruturas básicas são as mesmas, compartilhando
núcleo e principais módulos, processos e rotinas similares. As diferenças
concentram-se nas funcionalidades extras e no suporte prestado pela
Magento Inc. Isso significa que, quando nos referimos ao desenvolvimento
de módulos, o processo é praticamente o mesmo, com pequenas diferenças
apenas na nomenclatura de pastas quando se refere aos arquivos para o
frontend. Um módulo feito para a Community Edition deve funcionar
perfeitamente na Enterprise Edition.
Durante os seis anos de vida do Magento 1, houve outras duas versões,
descontinuadas. A primeira foi a Professional Edition, também instalável,
servindo como versão de entrada para a Enterprise, porém descontinuada pouco tempo depois. A segunda foi o Magento Go, serviço de lojas
virtuais sob demanda, o qual hospedava as lojas virtuais diretamente
pela Magento, permitindo que os lojistas já partissem de um ambiente
pré-configurado, pronto para receber os produtos. Esse serviço cobrava
um valor mensal e oferecia uma gama relativamente completa de funcionalidades, ainda que fornecido como SaaS, Software as a Service ou
Software como Serviço.
Capítulo 1 ■ Magento Commerce
21
O Magento Go foi totalmente desativado no começo de 2015 e não há
previsão de um serviço substituto. Os mais atentos vão se lembrar também
do Magento Mobile, um aplicativo para smartphone por meio do qual
o lojista adquiria o serviço e fornecia a app para o cliente sem custo. O
Magento Mobile não pode ser considerado como uma versão do Magento
já que é apenas uma interface diferente, customizada para celulares. Ele
também foi descontinuado após pouco tempo de vida.
1.4 Como instalar o Magento
Tecnicamente, se você procura desenvolver módulos para Magento, já
deve dominar a instalação da plataforma e a configuração básica dela.
Entretanto, assim como em Temas para Magento, este tópico é mantido
aqui como forma de centralizar as informações e garantir que você não
se esqueça de conceitos importantes como permissões de pastas e o gerenciamento de caches e índices.
Você pode instalar o Magento nos mais diversos ambientes, desde que
tenha um servidor Web, um banco de dados MySQL e o interpretador
de PHP instalados. É possível rodar o Magento em sistemas operacionais
variados – Linux e Windows estão entre eles – independentemente se seu
servidor está na rede local, em sua própria máquina ou em um servidor
em um datacenter na internet. Para a instalação da última versão do
Magento, há três formas disponíveis: Downloader, Pacote Completo e SVN.
Um ponto a chamar a atenção é que a versão 1.9 do Magento já traz nativamente o pacote de tradução para o português. Esse pacote facilitaria
a vida do desenvolvedor se a tradução tivesse sido bem feita. No entanto,
muitos termos perderam completamente o sentido, causando confusão
no usuário, e fazendo com que se recomende a continuidade do uso das
antigas traduções, feitas pela comunidade.
Nota: se você precisar de uma versão mais antiga, é possível obtê-la no
site do Magento, no mesmo lugar onde são oferecidos os arquivos da
última versão. Basta procurar pela aba Release Archives.
Módulos para Magento
22
1.4.1 Instalação via Downloader
A instalação via Downloader é o método mais simples. Você deve visitar o
site www.magentocommerce.com e fazer seu cadastro. Uma vez logado, basta
procurar o menu Products > Opensource/CE, depois View Available Downloads na
página com o título Community Edition, e por fim selecionar a opção Downloader,
como mostrado na figura 1.2.
Figura 1.2 – Tela de seleção dos downloads no site do Magento Commerce.
O Downloader é um arquivo único, chamado downloader.php. Esse arquivo,
uma vez colocado na pasta raiz de seu site e acessado via navegador (no
endereço do tipo www.minhaloja.com.br/downloader.php), encarrega-se de
fazer o download de todos os arquivos necessários, na última versão estável, diretamente do repositório do Magento, e a instalação do software,
nos mesmos passos da instalação completa. Não se preocupe se o número
de versão do Downloader for diferente do da última versão do Magento,
pois essas versões seguem numerações diferentes.
Nota: você também pode querer fazer a instalação dos dados de exemplo.
Não tratamos dessa instalação aqui, mas é relativamente simples. Basta
obter os arquivos na seção Sample Data, nos downloads do Magento, e
fazer a cópia dos arquivos oferecidos e a importação dos dados em seu
DB, antes de fazer a instalação do Magento propriamente dito.
Capítulo 1 ■ Magento Commerce
23
1.4.2 Instalação via pacote completo
Se você quer ter maior controle sobre os arquivos instalados ou se a instalação via Downloader apresentar erros, a instalação via pacote completo é
a mais indicada. Da mesma forma como faria se buscasse o Downloader,
você deve visitar o site www.magentocommerce.com e fazer seu cadastro. Uma
vez logado, basta procurar o menu Products > Opensource/CE, depois View Available
Downloads e por fim selecionar a opção Full Release, como visto na figura 1.2.
A opção Full Release é composta de uma pasta compactada, com todos os
arquivos necessários para fazer o Magento funcionar. Para instalá-lo, é
preciso descompactar a pasta e colocar os arquivos em seu servidor, via
FTP ou SSH, na pasta raiz de seu site. Feito isso, basta acessar o endereço
de sua loja via navegador (em www.minhaloja.com.br) e seguir a instalação
composta de quatro passos:
• Aceitar a licença do Magento.
• Definir as configurações regionais.
• Definir as credenciais de acesso ao banco de dados previamente
criado e a URL da loja.
• Informar os dados de acesso do administrador do sistema.
1.4.3 Instalação via SVN
A instalação via SVN é muito semelhante ao Downloader no que se refere à
obtenção dos arquivos, pois não é preciso fazer o download manualmente.
Para instalação via SVN, você precisa de um software específico como o
Tortoise, que poderá ser encontrado em tortoisesvn.tigris.org e instalado
em sua máquina. Configurando o software com o endereço da última
versão do Magento, você conseguirá obter todos os arquivos da versão
mais recente de forma automática.
1.4.4 Configurações básicas do sistema
Quando se conclui a instalação do Magento, há uma série de configurações
a fazer, especialmente dentro do menu Sistema > Configurações. Neste livro,
não passaremos por elas e espero que você já as domine e consiga deixar
24
Módulos para Magento
sua loja pronta para uso da maneira correta. Falaremos apenas do cache
e dos índices, fontes potenciais de problemas para os desenvolvedores. Se
tiver dúvidas sobre as demais configurações de uma nova loja Magento,
dê uma olhada no livro Lojas Virtuais com Magento.
Uma página do frontend no Magento não é composta de um único arquivo,
mas de uma série de pequenos arquivos, cada um respondendo por um pedaço da página. O carregamento desses arquivos a todo instante faria com que o
Magento ficasse lento, consumindo recursos do servidor desnecessariamente.
Para que isso não ocorra, o Magento utiliza o cache, colocando todos esses
arquivos em conjunto uma única vez e deixando a página pronta para ser
servida, com tempo de carregamento muito menor. O problema é que essas
páginas funcionam como fotografias tiradas em algum lugar do passado. Se
você fizer modificações nos arquivos, elas não serão refletidas na página até
que você atualize o cache. Por isso, enquanto estiver trabalhando no desenvolvimento de módulos para Magento, a regra é que o cache fique desabilitado
(Figura 1.3). Ainda assim, é interessante que você dê uma passada na tela de
gerenciamento do cache se achar que aquelas alterações que você tem certeza
de que foram feitas corretamente não estão aparecendo no frontend.
Figura 1.3 – Tela de gerenciamento de cache.
Capítulo 1 ■ Magento Commerce
25
Já os índices são como um guia, um agrupamento de informações no banco
de dados agilizando a localização de informações importantes e diminuindo
o tempo de resposta das consultas ao banco de dados. Eles também são
considerados como fotografias do passado o que faz com que, em alguns
momentos, estejamos olhando para informações que não correspondem
mais à realidade. Tenha isso em mente quando tiver certeza de que fez as
alterações da forma correta, porém não as vê refletidas em sua loja virtual.
1.5 Múltiplos sites e múltiplas lojas
Apesar de não estar diretamente relacionado à construção de módulos
para Magento, o conceito de múltiplos sites e múltiplas lojas é fundamental
para entender outro conceito relacionado: a hierarquia das configurações.
Ambos serão úteis na compreensão do funcionamento do Magento e
porque este é facilmente escalável.
O Magento nasceu com a funcionalidade de múltiplos sites. Uma única
instalação (um servidor, um banco de dados e um conjunto de arquivos)
pode ser configurada para atender a mais de um endereço web. Cada um
dos endereços web configurados em sua instalação pode ser preparado para
atender a mais de uma loja, e cada loja pode oferecer diferentes visões de loja.
Esse conceito permite que uma empresa que atua em ramos distintos possa
utilizar-se de uma mesma instalação Magento, com duas lojas diferentes,
em endereços diferentes e com produtos diferentes. Da mesma forma, se
uma loja detecta que um público-alvo específico merece um tratamento
diferenciado, é possível construir uma loja segmentada, com design direcionado para esse público, utilizando os mesmos produtos que já estão
cadastrados no sistema e gerenciando os pedidos de maneira centralizada.
Isso também é interessante, pois permite otimizar a manutenção e as
atualizações, centralizando diferentes lojas em um mesmo espaço além
de disponibilizar as melhorias e novas funcionalidades a todas as lojas
virtuais cadastradas na instalação, de maneira fácil e rápida.
Ainda que uma instalação faça uso de uma única URL, uma única loja e
uma única visão de loja, toda a construção do Magento e suas configurações
refletem essa estrutura em formato de pirâmide, como visto na figura 1.4.
Módulos para Magento
26
servidor
(todas as lojas)
instalação
Magento
meusite.com.br
website
Loja
Magento 1
loja
visão de loja
português
inglês
espanhol
meusite.com
Loja
Magento 2
Loja
Magento 3
português
espanhol
Figura 1.4 – Estrutura de múltiplos sites e múltiplas lojas no Magento.
Nota: para evitar qualquer confusão, é preciso que fique claro que três
lojas em uma mesma instalação certamente demandarão mais recursos
de servidor. Não basta incluir novas lojas ou novos endereços web sem
aumentar os recursos disponíveis para tanto. Ainda que o recurso de
multilojas seja realmente prático, é preciso que fique claro que em parte
dos casos, é mais interessante abrir uma nova instalação para atender
a essas novas lojas.
Para que fique mais claro o conceito de múltiplos sites e múltiplas lojas,
você pode pensar no seguinte exemplo. Uma loja de roupas trabalha
com o público infantil, de 0 a 12 anos, tanto meninos como meninas.
Seu endereço principal é www.lojaderoupasinfantis.com.br, e seu design e
seu catálogo de produtos foram pensados para atender os pais e avós
dessas crianças, que comprarão as roupas para seus filhos e netos. Uma
análise de mercado levou a empresa a focar as classes B e C, com preços
e produtos que atinjam essas classes.
Mas, após alguns meses de operação, os gestores da loja começam a
perceber que existem dois novos mercados a explorar: o de roupas para
recém-nascidos e bebês, e o de roupas de maior valor agregado, na faixa de
5 a 12 anos. Para isso, a empresa pode investir em duas novas operações:
• Uma nova loja completa, em um novo endereço web respondendo
no endereço www.lojaderoupasparabebe.com.br e terá um tema e um
catálogo especializado em roupas para recém-nascidos e bebês.
Capítulo 1 ■ Magento Commerce
27
• Uma nova loja dentro da loja principal, oferecendo uma marca
premium, algo como Roupas Infantis Top, contando com um tema
personalizado e produtos de maior valor agregado.
Essas duas novas lojas farão parte da mesma empresa, contando com os
mesmos meios de pagamento e envio, a mesma integração com o sistema
de gestão e o acompanhamento do catálogo, do marketing e dos pedidos
feitos pelo mesmo time. Com isso, ganha-se em otimização dos recursos e é
possível oferecer uma experiência personalizada para cada um desses públicos, sem que seja necessário construir novos catálogos do zero (e enfrentar
os problemas de conciliação de estoque, comuns em múltiplas operações).
Já quando se fala da visão de loja, falamos muito mais dos diversos
idiomas oferecidos em uma loja virtual. No Brasil não são comuns lojas
com múltiplos idiomas, ainda que algumas delas ofereçam seus produtos
também em inglês. Se pensarmos em um país como a Bélgica, os múltiplos
idiomas são praticamente obrigatórios. O país tem três línguas oficiais – o
holandês, o francês e o alemão –, e a maioria dos sites voltados ao público
belga deve trazer ao menos os dois primeiros idiomas.
A seleção do idioma se dá pela visão de loja. Assim, há uma loja principal, com um catálogo de produtos e uma moeda, seguida de duas visões
de loja, uma para o holandês e outra para o francês, como é o caso da
iKitchen, mostrada na figura 1.5.
Figura 1.5 – Tela da iKitchen, loja virtual belga, com a possibilidade de
seleção dos idiomas holandês e francês no canto superior esquerdo.
Módulos para Magento
28
1.6 Hierarquia das configurações
A partir do conceito de múltiplos sites e múltiplas lojas, fica mais fácil
explicar o conceito de hierarquia das configurações. Para quem está
começando no Magento, é um dos conceitos mais complicados de se entender, mas com um pouco de prática percebe-se o quanto ele é simples
e como foi pensado de uma maneira muito inteligente. Esse conceito
só terá sentido se houver mais de um website, loja ou visão de loja na
instalação. Se houver apenas um de cada, a hierarquia das configurações
não tem efeito prático.
No Magento, as configurações podem ser dadas em diferentes níveis. É
essa possibilidade que faz com que a plataforma seja muito flexível, permitindo diversos ajustes ao longo dos níveis: cada website e cada visão de
loja podem ter suas configurações próprias, diferentes entre si e diferentes
em relação ao nível principal do Magento.
Dessa forma, temos três níveis para definição das configurações, como
mostrado na figura 1.6.
instalação
Magento
GLOBAL - G
siteA.com
WEBSITE - W
Loja de sapatos
populares
STORE VIEW - S
português
inglês
siteB.com
Loja de sapatos
finos
português
inglês
Loja de
celulares
português
Figura 1.6 – Esquema de hierarquia das configurações no Magento.
• Todas as Lojas – Configurações em nível mais alto no Magento que
valerão para todos os websites, as lojas e visões de loja da instalação.
• Website – Configurações que valerão apenas para o website específico,
incluindo todas as visões de loja nesse website.
Capítulo 1 ■ Magento Commerce
29
• Visão de Loja – Configurações que valerão apenas para a visão de loja
específica, sem interferir nas demais visões de loja, desse website
ou de outros websites.
Importante: não há a possibilidade de informar as configurações no
nível Loja, apenas no nível abaixo, Visão de Loja. Sempre que você
precisar entrar com uma configuração para uma loja específica, deve
fazê-lo em cada uma das visões de loja abaixo dessa loja. Se há apenas
uma loja dentro do website, provavelmente será mais simples inserir a
configuração no nível de website.
Portanto, quando se faz a configuração do Magento, o primeiro nível a
se trabalhar é Todas as Lojas. As informações definidas aqui serão automaticamente replicadas para os níveis inferiores, a menos que haja uma
configuração nesse nível inferior. Digamos que você trabalhará com um
único Website, uma única Loja e uma única Visão de Loja. Nesse caso,
o único lugar onde você precisa informar as configurações é no nível de
Todas as Lojas, que automaticamente empurrará as configurações para
os demais níveis.
Se você pretende trabalhar com dois endereços web diferentes, é preciso
criar dois websites diferentes e entrar com as configurações particulares
de cada um deles no nível de Website. Normalmente, você escolherá um
deles para herdar as configurações do nível Todas as Lojas e inserirá as
configurações próprias apenas no outro website, como forma de facilitar
o trabalho e a gestão.
Mas, se pretende trabalhar com dois idiomas em uma única loja virtual,
um único endereço web, as configurações devem ser definidas nos níveis
mais baixos, as Visões de Lojas. Como exemplo, uma loja de produtos
brasileiros que quer atender também o público estrangeiro. Pensando
apenas na questão do idioma e deixando de lado moedas e meios de
pagamento específicos para suportar pagamentos do exterior, seria necessário criar um website (por exemplo, produtosbrasileiros.com.br), uma
loja (por exemplo, Produtos Brasileiros) e duas visões de loja (Português e
English). A configuração seria:
• Todas as Lojas – Idioma português.
• Visão de Loja English – Idioma inglês.
30
Módulos para Magento
Para informar uma configuração em um nível abaixo de Todas as Lojas, o
procedimento é bem simples. Como se vê na figura 1.7, o primeiro passo é
selecionar o nível desejado na caixa presente no canto superior esquerdo
da página acessível via Sistema > Configurações. Uma vez selecionado o nível
desejado, a página é recarregada e as configurações disponíveis naquele
nível passam a ser apresentadas com a edição desabilitada. Para habilitar
a edição, é preciso desmarcar a caixa Usar Default ou Usar Website, conforme o
nível selecionado, e informar o valor desejado, clicando depois em Salvar.
Figura 1.7 – Selecionando o nível desejado e informando uma configuração
específica.
Para retornar as configurações ao seu estado original, ou seja, voltar a
utilizar o valor configurado nos níveis superiores, basta marcar a caixa
Usar Padrão ou Usar Website, conforme o nível selecionado, e clicar em Salvar.
Não é necessário se preocupar com o valor informado porque ele será
automaticamente sobrescrito.
Neste caso, a visão de loja Português automaticamente herdaria o idioma português do nível Todas as Lojas, enquanto a visão de loja English
utilizaria o idioma inglês, definido em seu nível.
Por outro lado, se você pretende utilizar dois websites diferentes, como no
exemplo das lojas de roupas infantis, a configuração seria dada em um
nível superior. Todas as lojas e visões de loja utilizarão o idioma português e, portanto, o idioma pode ser dado apenas no nível Todas as lojas.
Capítulo 1 ■ Magento Commerce
31
Já os endereços web devem ser configurados no nível de Website, informando o respectivo endereço em cada um dos websites. Os nomes das
lojas são informados em Website ou em suas Visões de loja, já que, como
dito anteriormente, o nível Loja não aceita configurações.
Um detalhe a se ter em mente, especialmente quando estiver construindo
as opções de configuração de seu módulo, é que nem todas as configurações podem ser definidas de maneira diferente nos três níveis. Uma
configuração em nível global não pode ser alterada em nível diferente
desse, pois não faria sentido ter um valor diferente em níveis diferentes. As
dimensões de um produto, por exemplo, são iguais ainda que vendidas em
lojas diferentes. Não se vende um produto com 40 centímetros de largura
quando o foco é o público das classes B e C, e 70 centímetros de largura se
o público fizer parte da classe A, a menos que seja um produto idêntico.
1.7 Modularidade do Magento
Um exemplo clássico para explicar o conceito de modularidade é o velho
jogo de montar para crianças e jovens – e também aqueles que não são
mais crianças e jovens – chamado Lego. Com as peças de uma caixa de
Lego é possível montar diferentes coisas. Comprando mais caixas de
Lego, com outros formatos e propósitos, podem-se montar outras tantas
coisas diferentes.
O Magento foi pensado dessa forma. Você conta com uma caixa de Lego
inicial, que traz diferentes peças para diferentes objetivos, podendo estas ser
combinadas, retiradas e montadas de forma diferente, de modo a atender
os objetivos básicos de uma loja virtual. Se precisar de novas funções, você
adquire uma nova caixa, com os blocos necessários para a nova função.
Quando faz o download do Magento, você adquire o que chamamos
de core. Este é o conjunto mínimo de módulos, com as funções listadas
no site do Magento, que permitirá ao lojista ter uma loja virtual básica,
ainda que relativamente completa. Dentro desse conjunto básico de módulos, encontra-se o que conhecemos como o “próprio Magento”, com
seu backend, frontend, o tema Base/Default, o catálogo de produtos, o
gerenciador de conteúdo, o cadastro de clientes, o mecanismo de busca,
a gestão das configurações, o sistema de pedidos e outros mais.
32
Módulos para Magento
Cada um desses módulos é encontrado na pasta /app/code/core e pode ser
identificado pelos seus nomes, como checkout, catalog, catalogsearch,
customer e outros. Como já é de conhecimento dos que trabalham com
Magento, esses módulos não devem ser alterados e isso não pode ser esquecido, já que, ao fazer uma atualização, esses arquivos são sobrescritos
pelos novos arquivos, fazendo com que todas as alterações sejam perdidas.
À medida que você ganhar experiência perceberá que isso não é uma verdade absoluta: é possível modificar o core, porém há algumas regras para
isso, tanto para que sua instalação possa ser atualizada sem problemas,
como para garantir a compatibilidade com outros módulos. Independentemente da modificação do core, a regra inicial permanece intocada: você
não deve alterar os arquivos da pasta /app/code/core, em nenhuma hipótese.
O Magento e seu core, no entanto, não são completos e nunca pretenderam ser. A ideia de Yoav Kutner e Roy Rubin era permitir que empresas e
desenvolvedores independentes trabalhassem na construção de módulos
que pudessem estender e complementar as funções originais da plataforma.
Dessa forma, além dos módulos do core, temos outros dois tipos de módulo:
• community – Apesar de haver alguma confusão nisso, são compostos
dos módulos que podem ser compartilhados entre diferentes lojas,
não necessariamente aqueles obtidos via Magento Connect. Esses
módulos podem ser gratuitos ou pagos e são desenvolvidos de modo
a permitir a sua utilização em mais de uma loja. Encontra-se em
/app/code/community.
• local – É uma categoria específica de módulos desenvolvidos para
serem usados em uma única loja. Apesar de não fazer muito sentido, esta categoria engloba módulos que por alguma razão contêm
particularidades de uma instalação específica ou as extensões do
core, quando são necessárias modificações nos módulos originais
do Magento. Encontra-se em /app/code/local.
Nota: a divisão mais comum encontrada no mercado é dada por módulos
do Magento Connect, utilizando a pasta community e módulos que
não estejam no Magento Connect ou módulos pagos utilizando a pasta
local. Porém, mesmo que você não pretenda distribuir seus módulos via
Connect, se for possível instalá-lo em diferentes lojas de maneira fácil e
rápida, você pode usar a pasta community sem problemas.
Capítulo 1 ■ Magento Commerce
33
Um ponto a chamar a atenção em relação à modularidade do Magento
é que, assim como no Lego, as peças precisam seguir um padrão. Se um
módulo não é construído conforme as boas práticas de desenvolvimento, o encaixe entre as peças é sempre difícil, com falhas nos encontros
entre blocos, buracos nas emendas e partes soltas, peças faltantes ou até
mesmo encaixes defeituosos que se soltam com facilidade, estragando a
brincadeira. Para que o Magento funcione corretamente e sem falhas, é
preciso que a construção siga essas boas práticas, como veremos no final
do capítulo 2.
1.8 Magento Connect
Para quem vai desenvolver módulos, o Magento Connect é uma ferramenta essencial, tanto para buscar novas opções de módulos como para
distribuir seus próprios módulos para a comunidade ou anunciá-los lá,
em busca de compradores para seus produtos. Para o usuário médio, ele
não é tão simples de usar como o instalador de plugins do Wordpress
ou o marketplace de apps para Android e IOS – e isso talvez seja uma
benção contra usuários despreparados. Ainda assim, seu uso não é o que
se pode chamar de difícil.
No final deste livro, no apêndice A, falaremos sobre como distribuir seus
módulos e isso incluirá publicá-los no Magento Connect. Neste tópico,
vamos falar um pouco sobre como obter módulos no Magento Connect
e como utilizá-lo como fonte de pesquisa para novos módulos.
Obter módulos no Magento Connect é bem simples: basta acessar o site
do marketplace, em www.magentocommerce.com/magento-connect, e fazer
uma pesquisa pelo módulo desejado. Uma vez logado no site, você deve
selecionar a versão do Magento Connect (normalmente Connect 2.0),
aceitar os termos de licença e obter a chave de instalação do módulo.
Com essa chave, você pode acessar a opção Sistema > Magento Connect >
Gerenciador do Magento Connect. Não se esqueça de que, para acessar a área do
Magento Connect em sua loja, é preciso fazer um novo login e seu usuário
deve ter permissões de administrador.
34
Módulos para Magento
Importante: não se esqueça de duas regras de ouro – sempre fazer backup
antes de instalar qualquer novo módulo e fazer uma avaliação em uma
instalação de testes antes de colocá-lo em produção.
A partir daí, você deve informar a chave de instalação na tela do Magento
Connect e prosseguir com a instalação. Dando tudo certo, o instalador
concluirá a instalação e você poderá utilizar o módulo. Quando voltar ao
painel de controle do Magento, não se esqueça de refazer o cache e sair
do painel, logando novamente antes de acessar a área de administração
do módulo.
Dica: há um serviço oferecido gratuitamente pelo site Top Mage, no
endereço ext.topmage.com, como se vê na figura 1.8, que facilita o
download de qualquer módulo disponível no Magento Connect. Uma
vez que você já saiba o nome do módulo, basta fazer uma busca no site
para ter acesso à ultima versão e fazer o download dos arquivos para
prosseguir com a instalação manual. Versões anteriores dos módulos
também estão disponíveis nesse serviço.
Figura 1.8 – Tela do Magento Direct Download com os módulos do Magento
Connect.
Capítulo 1 ■ Magento Commerce
35
1.9 Certificações em Magento
Assim como em outras plataformas e linguagens, o Magento Commerce
tem seu próprio sistema de certificações, desde 2010, submetendo os
profissionais que querem obter as certificações a testes completos, de
modo a validar seus conhecimentos e oferecer um título diferenciado
aos aprovados.
As certificações em Magento são dadas em dois diferentes níveis:
• Certified Partners – Empresas certificadas em Magento, aptas a trabalhar com instalação, desenvolvimento e manutenção de lojas virtuais. Para se certificar, a empresa passa por um processo de avaliação
e paga um valor anual, conforme a sua categoria. Também deve
atingir metas anuais, como número de licenças Enterprise Edition
vendidas e número de profissionais certificados vinculados a ela.
• Certified Professionals – Profissionais certificados em Magento, submetidos a um teste online, em determinadas áreas do conhecimento. A
prova é aplicada em um centro de certificação, pagando-se um valor
por prova realizada, e a certificação não tem prazo de validade.
As empresas certificadas podem ser avaliadas conforme um ranking que
vai de parceiros Silver a Platinum, além dos Associates. Já para os profissionais certificados não há um ranking, à exceção dos Developers que
têm adicionalmente o grau Plus.
1.9.1 Technology Partners
Technology Partners são uma categoria de Magento Certified Partners
criada para englobar as empresas provedoras de serviços adicionais, ou
seja, aquelas que não trabalham com desenvolvimento e manutenção de
lojas, mas sim como soluções que estendem as funcionalidades nativas
do Magento, campanhas de marketing, meios de pagamento e meios de
envio, sistemas de gestão, entre outras.
36
Módulos para Magento
1.9.2 Hosting Partners
Hosting Partners, como o próprio nome diz, são os parceiros homologados para oferecer serviços de hospedagem para lojas virtuais Magento. É
a menor das categorias de Certified Partners em número de certificados
e chegou a ser descontinuada por um período.
1.9.3 Solution Partners
Fechando as categorias dos Magento Certified Partners, a Solution
Partners é a que tem o maior número de membros e é a de maior visibilidade. Ela reúne as empresas desenvolvedoras de lojas virtuais Magento,
aptas a prestar serviços de instalação, desenvolvimento e manutenção de
lojas Magento ao redor do mundo.
Essa categoria divide-se em níveis, começando em Silver, passando por
Gold e terminando em Platinum, conforme os recursos oferecidos pela
empresa, como número de profissionais certificados e o cumprimento
das metas anuais de vendas. Todas as empresas passam pelos níveis iniciais para se candidatarem ao nível mais alto e pagam valores anuais de
renovação, conforme seu nível.
Apesar de formar uma categoria à parte, os Magento Associates podem ser
incluídos nessa denominação, até mesmo porque antes eram chamados
de Bronze Partners. Os Associates são uma categoria de entrada para
os Solutions Partners, enquanto estes são avaliados e cumprem com os
requisitos mínimos da categoria superior.
1.9.4 Magento Developer e Magento Developer Plus
A certificação de Magento Developer foi a primeira a ser lançada visando certificar os profissionais que trabalham com Magento Commerce.
Ela foca os desenvolvedores de módulos para Magento, avaliando seus
conhecimentos e sua capacidade de construir módulos segundo as boas
práticas, comprovando o conhecimento na estrutura e nas linguagens e
métodos utilizados pela plataforma.
Capítulo 1 ■ Magento Commerce
37
A Magento Developer é a única certificação que apresenta um grau extra,
o de Magento Developer Plus, que avança na avaliação dos conhecimentos e exige um desempenho superior. O profissional pode optar por se
certificar primeiro na Developer ou ir direto para a prova do grau de
Developer Plus.
1.9.5 Frontend Developer
Já a certificação para Frontend Developer foca na construção e manutenção de temas para Magento. O profissional que deseja se certificar nessa
categoria deve comprovar conhecimentos sólidos na construção de um
tema, sempre conforme as boas práticas.
Além de compreender como estruturar um tema para Magento, o candidato precisa ter um nível de conhecimento avançado nas linguagens web,
como HTML, CSS e JavaScript. Configurações de um tema no backend
do Magento certamente fazem parte do pacote de estudos.
1.9.6 Solution Specialist
Última certificação a ser lançada dentro do programa de certificação de
profissionais Magento, a Solution Specialist parece ser a mais complexa de todas. Isso não significa que ela seja a mais difícil em termos de
conhecimento acumulado ou que o profissional precise saber codificar
módulos, desenvolver temas e ainda gerenciar lojas virtuais, mas sim que
ele tenha um conhecimento abrangente sobre as várias áreas do Magento.
A certificação Magento Solution Specialist cobra um entendimento completo de como a arquitetura do Magento funciona, quais as diferenças
entre as versões Community e Enterprise, como trabalhar com os diversos
modelos de negócios de forma a indicar as melhores soluções, estruturar
catálogos de produtos conforme as boas práticas e como preparar o negócio para atingir diferentes objetivos.
38
Módulos para Magento
1.10 A importância da certificação
A importância da certificação é um assunto controverso. Enquanto muitos
dizem que não é possível medir os conhecimentos e a qualificação de
um profissional por uma simples prova, outros acreditam firmemente na
contratação de um percentual significativo de profissionais certificados
para suas empresas, como forma de atestar a qualidade de um time de
desenvolvedores.
No Magento, não é diferente e a polêmica sempre volta à tona. É verdade
que uma simples prova não pode atestar a capacidade de um desenvolvedor, assim como um diploma universitário não representa obrigatoriamente que o seu detentor seja um excelente profissional. Indo mais
além, um diploma de uma universidade de média linha pode esconder
um estudante muito mais dedicado que alguém que tenha cursado uma
universidade de primeira linha de maneira despreocupada.
Portanto, o primeiro ponto que deve ficar claro é que a ausência de uma
certificação não significa de maneira nenhuma que o colaborador seja um
mau desenvolvedor, assim como, na linha oposta, a presença de certificação
não indica que os profissionais certificados sejam deuses supremos, que
nunca erram e sempre fazem a coisa perfeita. Encontram-se desenvolvedores Magento de excelente qualidade que não se certificaram e não se
certificarão por simplesmente acharem que não precisam disso.
Por outro lado, a qualificação em Magento ou mesmo em desenvolvimento
de sites é algo muito genérico. Diferente de um curso de engenharia civil,
com sua faculdade específica e seu registro no Conselho de Engenharia,
de um médico e seu registro no Conselho de Medicina ou um bacharel
em direito e seu registro na Ordem dos Advogados do Brasil, um desenvolvedor pode não cursar uma faculdade, mas aprender por conta própria
ou em diversos cursos técnicos pelo Brasil. Ainda que um desenvolvedor
possa ser formado dentro de um curso de Análise de Sistemas, seu reconhecimento é muito vago, gerando discrepâncias no mercado de trabalho.
Talvez em comércio eletrônico a coisa seja ainda mais complicada. A todo
instante, lojistas decidem que aprenderão a fazer suas lojas – muitas vezes
motivados por problemas com seus antigos desenvolvedores – e passam
a se vender como profissionais Magento, conhecendo muito pouco da
Capítulo 1 ■ Magento Commerce
39
ferramenta e quase nada de desenvolvimento. Profissionais que pouco
sabem sobre desenvolvimento de sites aventuram-se na construção de
sites e entregam trabalhos que desrespeitam quase todas as boas práticas,
resultando em perda de dinheiro e tempo.
Como se diferenciar desses profissionais? O primeiro passo é estudando
muito e se qualificando corretamente nos requisitos que um desenvolvedor Magento precisa ter – compreender perfeitamente a linguagem
HTML, os estilos CSS e os comportamentos JavaScript, para trabalhar
com temas; já ter passado do nível intermediário na linguagem PHP,
dominando Orientação a Objetos, entendendo o conceito de MVC e
tendo conhecimentos técnicos no Zend Framework; compreender como o
banco de dados do Magento é estruturado e como trabalhar com o XML,
usado intensivamente na plataforma e, por fim, compreender a estrutura
do Magento e sua arquitetura.
Todos esses conhecimentos podem ser adquiridos em múltiplos sites
pela internet, por meio de livros e cursos, que são poucos, no Brasil e no
exterior. O problema é que esse material só fornecerá a base pois a maior
parte do aprendizado no Magento vem da prática. Com isso, chegamos
ao segundo passo: para se diferenciar é preciso construir um portfólio
de qualidade, que ateste que você trabalhou em grandes projetos, sendo
que “grandes” não significa seu tamanho, mas sim projetos desafiadores
e que se converteram em realidade, com soluções inovadoras.
O terceiro passo inevitavelmente cai na certificação para a esmagadora
maioria dos profissionais. É muito difícil se destacar em nosso mercado e a
certificação é o caminho mais fácil para, tendo essa base, coroar o trabalho
com um documento que atesta seu conhecimento em Magento, seja em
qualquer uma das três áreas. Na época em que escrevi este livro, o Brasil
tinha menos de 40 profissionais certificados, certamente empregados em
grandes empresas, com salários que se diferenciavam da média salarial
do país. Se pensarmos em quantos desenvolvedores Magento existem no
Brasil, certamente, esses 40 são uma minúscula fração que conseguiu
demonstrar que é diferente e quer ser recompensada por isso.
Um último comentário sobre a certificação e o aumento salarial que ela
certamente acarreta: o profissional não deve imaginar que o aumento
salarial virá sem o correspondente aumento de trabalho. As empresas
Módulos para Magento
40
que mais contratam profissionais certificados costumam ser empresas
de ponta e as exigências são correspondentes ao trabalho que se espera
desses profissionais. Não basta certificar-se e acreditar que o mundo todo
cairá em seu colo por herança. É preciso corresponder a esse novo nível.
1.11 Resumo
Neste capítulo, foi feita uma apresentação geral do Magento Commerce,
especialmente para aqueles que ainda têm dúvidas sobre os fundamentos
do Magento. Os principais conceitos a serem guardados aqui fazem menção à modularidade da plataforma, com a possibilidade de incluir peças
e funcionalidades, por meio da construção de módulos, e à hierarquia
das configurações, com a definição de diferentes configurações dentro
dos três níveis disponíveis.
Foram apresentados também os tipos de certificação no Magento e sua importância. Se você ainda tem dúvidas sobre os fundamentos do Magento,
poderá encontrar mais informações em diversos tutoriais disponíveis na
internet ou então no livro Lojas Virtuais com Magento.
1.12 Testes
1. Explique o conceito de hierarquia das configurações e sua importância para a gestão de lojas no Magento.
2. Quais são os dois principais tipos de certificação no Magento e
como eles estão divididos?
3. Dentro da pasta /app/code, encontramos três pastas. Quais são e
quais suas funções?
4. Um desenvolvedor de temas para Magento deve focar a obtenção de
qual certificação? Quais são os conceitos exigidos para esse exame?
5. Explique o conceito de modularidade no Magento Commerce.
6. Por que o core do Magento não deve ser alterado?
Download

Downloader - Novatec Editora