O Magento é uma solução estável, segura e totalmente personalizável, além de ser uma plataforma de e-commerce com muitos recursos, o que o torna uma das principais e mais completas ferramentas de desenvolvimento. Construído sobre uma tecnologia de código aberto, essa linguagem fornece aos desenvolvedores uma flexibilidade sem precedentes e um controle total sobre a aparência, conteúdo e funcionalidade de sua loja de comércio eletrônico.

Essa ferramenta é projetada de maneira escalável que conta com um painel de controle intuitivo e robusto, ou seja, além de possuir uma enorme gama de recursos, os mesmos são apresentados de maneira clara e eficiente o que garante sua usabilidade.

Outros pontos importantes para destaque são as ferramentas de marketing, SEO (search engine optimization) e ferramentas de gerenciamento de catálogo que possibilitam a criação de sites totalmente adaptáveis às suas necessidades ou de seus clientes.

O que é o Magento?

Quando falamos em plataforma de e-commerce com sistema de gestão altamente personalizável, estamos falando de Magento. Com sua utilização é possível desenvolver lojas virtuais de qualquer segmento e usufruir de diversos recursos como carrinhos de compras, gestão de inventário, forma de pagamento entre outros.

Os princípios essenciais da arquitetura do produto da Magento incluem OOP e princípios de programação. A Programação orientado a objetos permite a máxima flexibilidade e capacidade de expansão de componentes de software, permitindo que você projete e implemente web sites totalmente personalizados. As vantagens dos princípios OOP incluem incorporação de padrões de projeto conhecidos e uma estrita separação de lógica de negócios da apresentação. Além disso, fornece componentes do núcleo com funcionalidade básica que pode ser herdado por componentes personalizados para um site ou aplicativo específico.

Vantagens e desvantagens

O Magento tem muitas vantagens como facilidade no seu gerenciamento, facilidades para importar e extrair informações. Contamos com uma infinidade de com diversas aplicações, desde uma simples integração com os correios até a integração com sistemas de ERP, como SAP. Tudo isso a apenas um clique da instalação, já que as grandes empresas enxergaram um potencial muito grande na plataforma Magento, e por conta disso muitas empresas desenvolvem seus próprios módulos e disponibilizam no Magento Connect, que é uma galeria de módulos de todos os tipos, como módulos de layout, módulos de otimização de vendas, módulos que melhoram a experiência do usuário na loja virtual, módulos de marketing entre muitos outros.

Mas há pontos de melhorias que ainda precisam ser feitos no Magento. Diante das diversas possibilidades de integrações e funcionalidades, ele precisa de um ambiente bem robusto e bem configurado para rodar corretamente. Daí a necessidade de servidores dedicados, clouds e algumas ferramentas que potencializam sua otimização em termos de processamento e de renderização.

Além disso, precisamos de um Apache bem configurado, incluindo a desativação de módulos desnecessários, tratamento de conexões e requisições, configurar o .htaccess, olhar para o cache com carinho, entre outras ações são as chaves para garantir um melhor desempenho.

Arquitetura em camadas

Existe uma separação do Design e da lógica de negócios, simplificando a personalização da loja, aparência e comportamento. Camadas de arquitetura também podem fornecer um modelo de alto nível para entender o posicionamento mais eficiente de recursos e código em um sistema complexo. O Magento belisca o modelo MVC, no entanto, arquivos dentro de módulos são tipicamente agrupados por funcionalidade em vez de tipo de arquivo.

O Magento define os conceitos fundamentais e regras de como os componentes do web site podem se comportar. Além disso, contém bibliotecas de módulos de acesso, mas não há componentes de lógica de negócios. Essa linguagem aceita solicitações HTTP e os encaminha para o módulo apropriado.

  • Facilidade de extensão: a tecnologia Magento usa injeção de dependência e contratos de serviços para simplificar o processo de fornecimento de nova implementação de uma API definida. Os benefícios de injeção de dependência incluem conhecer o módulo ou serviço sem conhece-los propriamente, além de poder modificá-los sem alterar o cliente de qualquer lugar, desde que você utilize o quadro de injeção de dependência para a lógica da aplicação. Além disso, contratos de serviços fornecem uma nova maneira de acessar terminais de API pública através de interfaces PHP.
  • Modularidade: módulos formam a unidade funcional da base do sistema Magento, que contêm a lógica para executar ações e funções específicas.
  • Altamente personalizável:Podemos personalizar de forma simples e funcional os temas: HTML, CSS, JavaScript e etc. e, baseando-se nos temas padrão e pacotes de idiomas, podemos criar nossos temas também.

O diagrama da Figura 1 mostra os componentes do Magento e suas camadas para todos os componentes, como camada de apresentação, camada de serviço, camada de domínio e camada de persistência.

Diagrama de Arquitetura
Figura 1. Diagrama de Arquitetura

  • Camada de Apresentação: quando você interage com a interface web Magento, está trabalhando diretamente com o código dessa camada, que contém elementos como layouts, blocos, templates, e controladores que comandam o processo da interface do usuário. O código de apresentação controla a interação do usuário web com o produto e sua aparência. Podemos personalizar a interface de usuário usando HTML, CSS e arquivos .phtml para modificar elementos da camada de apresentação;
  • Camada de Serviços: fornece uma ponte entre a camada de apresentação e a camada de lógica de domínio e dados específicos de recursos. Isso é implementado usando contratos de serviços, que são definidos usando interfaces PHP. Sobre a camada de serviços temos:o Reside abaixo da camada de apresentação e acima da camada de domínio;o Contém contratos de serviços, que definem como a implementação irá se comportar;o Fornece uma maneira fácil de acessar o REST/SOAP através do código do framework API (que também reside acima dos contratos de serviços). Você pode vincular os contratos de serviço para APIs de serviços web em arquivos de configuração sem necessidade de codificação;o Fornece uma API estável para outros módulos.
  • Camada de Domínio: mantém a camada de lógica de negócios de um módulo Magento. Ele normalmente não contém informações específicas do recurso ou específicos de banco de dados. Suas funções principais incluem:o Define os objetos genéricos de dados Magento, ou modelos que contêm a lógica de negócios. Esta lógica define operações que podem ser executadas em tipos particulares de dados, tal como um objeto ao cliente. Estes modelos contêm apenas informações genéricas. Os aplicativos também podem usar SOAP ou endpoints RESTful para solicitar dados de modelos;o (Opcionalmente) Inclui a implementação de contratos de serviços, embora não seja sua definição;o Como melhores práticas podemos usar contratos de serviços para se comunicar com a camada de domínio, passando tipos de dados através de objetos com rigidez de tipos. Esta prática pode ajudar a evitar a substituição de código de camada de apresentação ao substituir a lógica camada de negócios;
  • Camada de Persistência:o Magento usa uma estratégia ativa por padrão de registro de persistência. Neste sistema o modelo objeto contém um modelo de recursos que mapeia um objeto a uma ou mais linhas da base de dados. Um modelo de recursos é responsável por executar funções tais como:o Execução de todos os CRUD pedidos, ou seja, o modelo de recursos contém o código SQL para completar essas solicitações;o Execução de lógica de negócios adicionais, por exemplo, um modelo de recurso poderia executar a validação de dados, iniciar processos antes ou após os dados serem salvos, ou realizar outras operações de banco de dados;o Se você retornará vários itens de uma consulta de banco de dados, então você poderá implementar um tipo especial de modelo de recurso conhecido como coleção, que é uma classe que carrega vários modelos em uma estrutura de array-like baseado em um conjunto de regras. Isso é semelhante a uma cláusula SQL WHERE.o Um modelo de recurso simples define e interage com uma única tabela. No entanto, alguns objetos têm um grande número de atributos ou eles poderiam ter um conjunto relacionando objetos que têm número variável de atributos. Nestes casos, os objetos são construídos usando atributo de entidade Valor (EAV). Como resultado, qualquer modelo que usa um recurso EAV tem seus atributos distribuídos ao longo de uma série de tabelas do MySQL. Os modelos do cliente e Catálogo de recursos usam atributos EAV.

Tecnologias envolvidas

O Magento fornece um conjunto de ferramentas robustas para a implantação de grandes lojas, e para personalizar o produto para suas necessidades particulares. As tecnologias envolvidas são populares e de código aberto, como o sistema operacional Linux, além das seguintes tecnologias:

  • PHP (5.5 e 5.6);
  • HTML5;
  • CSS3 (LESS CSS pre-processor);
  • jQuery;
  • RequireJS (biblioteca que ajuda com recursos JavaScript para carga sob demanda);
  • Zend Framework 1, Zend Framework 2 e Symfony;
  • Apache 2.2, 2.4;
  • Nginx 1.7;
  • MySQL 5.6;
  • Composer (pacote de gerenciamento de dependência para PHP);

Além disso conta com componentes de pilha opcionais:

  • Varnish (caching);
  • Redis (usado para a sessão ou cache da página);
  • Solr (motor de busca).

Configurações do servidor para comportar o Magento.

O ambiente de desenvolvimento deve contar com o Apache (versões 2.2.x, 2.0.x, 1.3.x) e o Nginx 1.7.x (para CE1.7 ou EE 1.12 ou superior). Como host precisamos de capacidade para executar tarefas agendadas (crontab), por isso usamos o PHP 5 para substituir as opções em arquivos .htaccess.

O PHP instalado precisa contar o safe_mode no modo off e o memory_limit com não menos que 256 MB (512 MB é o recomendado). Além disso, as seguintes extensões devem estar instaladas:

  • PDO_MySQL-DOM, para trabalhar com banco de dados;
  • simplexml -iconv, para manipulação de XML;
  • mcrypt -curl, para criptografar e descriptografar;
  • hash -SOAP (for Webservices API), também para criptografar e descriptografar;
  • GD, para trabalhar com imagens.

Além disso, um certificado de segurança válido é necessário para HTTPS. Lembre-se que certificados auto assinados não são suportados. É altamente recomendado executar tanto no Site como no Admin o HTTPS.

Entendendo a estrutura de pasta do Magento

A estrutura de pastas foi desenvolvida por divisão de grupos de módulos, ou seja, cada módulo é separado por funcionalidade, minimizando assim as dependências entre outros módulos, como mostra a Figura 2.

Estrutura de pastas
Figura 2.Estrutura de pastas

Vamos entender as pastas mais importantes:

  • Core - Aqui encontramos a base do Magento e existem vários arquivos de configurações, esquema de banco de dados, renderização de objetos, modelos de dados, ações de controle e etc.. Esta pasta é o coração do Magento, nunca altere uma virgula nesta pasta, isso porque a alteração pode comprometer novas atualizações de melhorias e de segurança;
  • Community - Aqui encontramos os módulos instalados via "magento connect" a partir do painel de controle do Magento. Caso essa instalação seja feita de forma manual é recomendado usar esse diretório;
  • Local - Esta pasta é dedicada aos módulos de customização desenvolvida para uma loja específica, ou seja, aqui é onde devemos adicionar nossos módulos;
  • Design - Encontramos arquivos de manipulação da estrutura do design do painel de administração e do front-end, como template, layout, etc.;
  • Etc - Alguns arquivos de configuração global do Magento ficam aqui, como acesso a banco de dados, chave de criptografia, caminho de algumas áreas do sistema, entre outras;
  • Locale - Nesta pasta encontramos os arquivos CSV, que são responsáveis pela configuração das linguagens. O padrão é en_US, mas as últimas versões do Magento já vêm com o pt_BR. Caso não goste de algum termo é só editar esses arquivos;
  • Skin - Essa é a pasta onde encontramos os arquivos de manipulação do design, como CSS, JavaScript, Imagens e bibliotecas de UI.

Instalando o Magento

Podemos instalar o Magento de duas maneiras: por linha de comando ou usando o assistente de instalação, que é o que vamos utilizar neste artigo.

Primeiramente faça o cadastro no site do Magento (vide seção Links). Baixe a última versão estável framework. Até a escrita desse artigo a versão mais estável era a "1.9.2.1", como mostra a Figura 3.

Download Magento
Figura 3. Download Magento

Escolha um diretório dentro da sua hospedagem e faça o upload do arquivo baixado para o seu servidor usando um cliente FTP. Descompacte o arquivo em um diretório public_html. Por exemplo, vamos utilizar o seguinte diretório /public_html/devmedia_magento para descompactar o arquivo usando o acesso SSH ao servidor:


            tar -xzf magento-1.9.2.1.tar.gz
                

Assim, após a descompactação, o nosso diretório ficará assim: /public_html/devmedia_magento/magento.

Certifique-se que o banco MySQL e o PHP estejam instalados e configurados em sua hospedagem para que a instalação seja efetuada sem problemas.

Agora acesse o seu domínio, seguido do diretório onde se encontra a pasta do Magento. No nosso caso, http://seusite.com.br/devmedia_magento/magento/. Uma mensagem de bem-vindo é exibida, além dos termos e condições de uso. Confirme e clique em "Continue", conforme mostra a Figura 4.

Tela de termos e condições
Figura 4. Tela de termos e condições

Em seguida iremos configurar a localização e, conforme mostra a Figura 5.

Tela de Configuração de Localização
Figura 5. Tela de Configuração de Localização

Ao clicar em continue, uma nova tela aparecerá com as configurações de acesso ao banco de dados. Preencha da seguinte maneira:

  • O campo Database type já vem preenchido com " MySQL";
  • No campo Host devemos preencher com o endereço do banco de dados que usaremos;
  • No campo Database Name devemos preencher com o nome do banco de dados;
  • No campo User Name devemos preencher o usuário do BD;
  • No campo User password devemos preencher a senha;
  • O campo Tables Prefix é opcional caso queira colocar um prefixo nas tabelas do Magento;

Existem outras configurações e devemos preencher como está na Figura 6.

Configuração do banco de dados
Figura 6. Configuração do banco de dados do Magento:

Agora vamos cadastrar as nossas informações de acesso, conforme mostra a Figura 7.

Tela de Criação da conta de acesso
Figura 7. Tela de Criação da conta de acesso

Finalizando a instalação com sucesso, podemos acessar a loja ou o painel de controle clicando nos links "Go to Frontend" ou "Go to Backend", conforme mostra a Figura 8.

Tela de finalização da instalação
Figura 8. Tela de finalização da instalação

Ao acessar o Front-end do site já nos deparamos com o tema padrão do Magento, conforme mostra a Figura 9. O Painel de controle está presente na Figura 10.

Front-end do Magento
Figura 9. Front-end do Magento
Backend do Magento
Figura 10. Backend do Magento

Essa plataforma é uma das soluções mais completas existentes no mercado hoje este artigo demonstrou como essa ferramenta pode ser útil no seu dia a dia do desenvolvedor.

Links

Site oficial do Magento
http://magento.com/

Página de download
https://www.magentocommerce.com/download

Documentação do Magento
http://magento.com/help/documentation

Magento Connect
http://www.magentocommerce.com/magento-connect/