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?