Magento Commerce Abrindo a caixa preta
Quem sou eu? Desenvolvedor WEB há 9 anos  (passou pela  triste época de ter que renderizar html no Netscape 4 e pro IE5)   Analista Desenvolvedor da Concrete Solutions, holding de TI com foco em Desenvolvimento de Software, atualmente trabalhando com RubyOnRails.  Trabalhou 3 anos no UOL HOST com Magento sendo distribuído no modelo SaS Sócio do Cachaça Express Participou diretamente de mais de 10 projetos “Magento based” Instrutor do curso de Magento da PHPrime
Quem sou eu? marcelolinhares.com https://github.com/marcelolinhares http://www.linkedin.com/in/marcelolinhares
Agenda 1 – Introdução ao Magento e ruminanças sobre o mercado 2 – Conceitos e patterns por trás do Magento 3 -  Dicas e Truques 4 – Bate papo ;-)
Magento pra quem não conhece? Robusta plataforma de  e-commerce  open-source , flexível e extensível desenvolvido em PHP + MySQL - mais de 100.000 lojas em todo mundo -  Feature set compatível com grandes players  fornecedoras de software B2C (Elasticpath, NetSuite, WebSphere Commerce, etc...) no mercado corporativo; - Expansível e modular (mais de 5 mil extensões disponibilizadas) - Comunidade ativa (mais de 600 mil membros no fórum oficial) - Recentemente comprada pela eBay
Há algum tempo já faz barulho!
Modelos de licenciamento - Community - Professional (U$ 3.000,00 ano) - Enterprise (U$ 13.000,00 ano) - Magento Go (PasS – de U$15 a U$125,00)
Quem está usando? - UOL, Buscapé, Dafiti, MundoCorrida, IG, Imprensa Oficial de SP, ChefTV, GlossyBox, CloudRetail, CachaçaExpress, Grudado, FarmaDelivery, MyGeekDay, Roche, Rocket Internet, Mundo Corrida, Concrete Solutions,  iPagare, Moip,  FOX, Nokia, Kipling, Adidas, Olympus, Ford,  Lenovo...
 
Faltando mão de obra? - Média de duas propostas de trabalho por mês :-( -  Só no Brasil existem vagas abertas atualmente na Rocket Internet, Concrete Solutions, Buscapé, UOL  HOST... - 24 vagas abertas no Linkedin Brasil - 26 vagas abertas no fórum oficial (internacional)
Principais features - Cross-sell / Up-sell - Robusta engine de promoções - Suporta a comercialização de vários tipos de produtos; - Gestão completa de catálogos e estoque; - Otimizado para SEO - CMS - Multiloja e Multilayouts - Extensa variedade de relatórios nativos - Webmobile nativo - UGC, internacionalização, folksonomia, multi-usuários...
Abrindo a   Caixa Preta
Um aviso O Magento foi pensado desde o início para ser flexível o suficiente para que programadores escrevessem módulos e extensões sem que alterasse as funcionalidades básicas do software (core) CUSTO? - O Magento tem um alto grau de complexidade, muitas vezes assustando designers e frontends (habituados com códigos PHP com apenas um arquivo) - Excesso de configuração e código para coisas aparentemente simples (tudo mapeado em XML);
O que tem por baixo? Magento roda na plataforma LAMP, utilizando Zend Framework  como base class Varien_Cache_Core extends Zend_Cache_Core Varien_Db_Adapter_Pdo_Mysql class Varien_Filter_Object extends Zend_Filter
Arquitetura MVC - Magento utiliza padrão MVC baseado em configuração; - Necessidade explicita de adicionar todas as informações em arquivos de configuração;  - Model View ViewModel ?
Créditos:  http://www.matthias-zeis.com/archiv/tipps-entwicklung-mit-magento-teil-2
Créditos:  http://www.matthias-zeis.com/archiv/tipps-entwicklung-mit-magento-teil-2
Créditos:  http://www.matthias-zeis.com/archiv/tipps-entwicklung-mit-magento-teil-2
Modelo - EAV - Pra suportar um crescimento vertical, Magento precisou utilizar “modelos ricos” e extensíveis! - solução?  EAV (Entity Attribute Value)
Modelo - EAV -  EAV  é um modelo de dados “aberto”  que é usado em situações onde o número de atributos  de uma entidade pode crescer elasticamente. Também conhecido como modelo de dados vertical - Em um modelo tradicional, entidades possuem um número fixo de atributos, no EAV, o número de atributos é elástico - No EAV, cada entidade que está sendo modelada tem um conjunto diferente de atributos
EAV – Modelo Tradicional - +------------------+ | produtos  |  +------------------+ | product_id  |  | nome  |  | preco  |  | cor  | | peso  |
EAV – Modelagem EAV - +------------------+ | eav_entidade  |  +------------------+ |entidade_id  |  | tipo  |  | codigo  | - +------------------+ | eav_atributo  |  +------------------+ |atributo_id  |  | entidade_id  |  | attributo_codigo |  | nome  | |  tipo  | - +------------------+ | eav_valor  |  +------------------+ | id  | | atributo_id  | entidade_id  | | valor  |  - +------------------+ | entidades  |  +------------------+ |id  |  | eav_entidade_id  |
EAV – Modelagem EAV Modelando uma entidade produto, com 3 atributos (cor, descricao, tamanho), e inserindo 2 registros : Produto (cor => “azul”, descricao => “Camisa cor azul gola V”, tamanho => “P”) Produto (cor => “verde”, descricao => “Camisa cor verde gola rolê”, tamanho => “GG”)
EAV – Modelagem EAV eav_entidade 1 | "produto" | "produto" | "Produto" eav_atributo 1 | 1 | "cor" | "Cor do do produto " | 2 | 1 | "descricao" | "Descricao do Produto" | 3 | 1 | "tamanho" | "Tamanho do Produto" | entidades entidades |  eav_entidade_id | usuario_id | 1  | 1  |  1 2  | 1  |  2 eav_value 1 | 1 | 1 | "azul" 2 | 2 | 1 | "Camisa cor azul gola V" 3 | 3 | 1 | "Tamanho P" -- 4 | 1 | 2 | "verde" 5 | 2 | 2 | "Camisa cor Verde gola V" 6 | 3 | 2 | "Tamanho GG" -
EAV – Modelagem EAV
Actions - Responsável pelo roteamento e  dispatch pra action correta - Cada action irá instanciar um objeto de layout - Ao contrário dos sistemas MVC padrão, NÃO passa estrutura de dados pra VIEW
Views - Camada de views no Magento é de certa forma complexa - Composta por Layouts, Blocks, Templates e Helpers
Views - Layouts – Chamada pelas actions, responsável por “carregar” os blocos - Os blocos são responsáveis por acessar os dados do Model (contém alguma regra de negócio) e carregam o template (arquivos .php)  - Templates – Responsável pelo output dos dados (extensão .phtml) - Layouts – Chamada pelas actions, responsável por “carregar” os blocos - Os blocos são responsáveis por acessar os dados do Model (contém alguma regra de negócio) e carregam o template (arquivos .php)  - Templates – Responsável pelo output dos dados (extensão .phtml)
Views - Exemplos Listagem de produtos - Listagem de produtos app/design/frontend/base/default/template/catalog/product/list.phtml <?php $_productCollection=$this->getLoadedProductCollection() ?>  <?php if(!$_productCollection->count()): ?> <div class=&quot;note-msg&quot;> <?php echo $this->__(&quot;There are no products matching the selection.&quot;) ?>  </div> <?php else: ?> File: app/code/core/Mage/Catalog/Block/Product/List.php ... public function getLoadedProductCollection() { return $this->_getProductCollection(); }
Módulos - O Magento suporta a criação de módulos, sem que que altere o “core” da aplicação - Flexibilidade, Customização, sem perder a capacidade de upgrade -
Módulos - Community: Disponibilizado para a comunidade (via Magento Connect – ou não) - Core: Módulos do release oficial do Magento, recomenda não alterar - Local: Módulos específicos da loja -
Toda configuração fica no XML <config> <modules> < PedroTeixeira _ Correios > <active>true</active> <codePool>community</codePool> </PedroTeixeira_Correios> </modules> </config> PedroTeixeira – Namespace / Fabricante Correios – Nome do Módulo -
Magento Connect Magento connect funciona como um gerenciador de pacotes (tipo apt, yum) - Permite baixar pacotes e temas da comunidade em poucos cliques - Atualmente existem mais de 5000 extensões  -
Magento Connect -
Hands on - Dicas e Truques - Caches, Índices e catálogo flat - Debug para edição de layout - Otimizando a loja (caching de  JS e CSS, habilizar gzip, memcache) -
Hands on - Dicas e Truques - Caches, Índices e catálogo flat - Debug para edição de layout - Otimizando a loja (caching de  JS e CSS, habilizar gzip, memcache) - “Compilação” dos arquivos - Alterando rota do administrador  - Debugando errors -
Onde obter mais informações? - Beba direto da fonte:  magentocommerce.com Magento U - Comunidademagento.com.br - Escolamagento.com.br (Mário Sam) - Gooogle ? - Treinamento de Magento na PHPrime em Belo Horizonte no início de Janeiro  -
Notas e referências Este webinar não é oficial do Magento - Referências magentocommerce.com escolamagento.com.br alanstorm.com/ -
Até breve... Perguntas, dúvidas,  bate papo? -

Webinar Magento Commerce

  • 1.
  • 2.
    Quem sou eu?Desenvolvedor WEB há 9 anos (passou pela triste época de ter que renderizar html no Netscape 4 e pro IE5) Analista Desenvolvedor da Concrete Solutions, holding de TI com foco em Desenvolvimento de Software, atualmente trabalhando com RubyOnRails. Trabalhou 3 anos no UOL HOST com Magento sendo distribuído no modelo SaS Sócio do Cachaça Express Participou diretamente de mais de 10 projetos “Magento based” Instrutor do curso de Magento da PHPrime
  • 3.
    Quem sou eu?marcelolinhares.com https://github.com/marcelolinhares http://www.linkedin.com/in/marcelolinhares
  • 4.
    Agenda 1 –Introdução ao Magento e ruminanças sobre o mercado 2 – Conceitos e patterns por trás do Magento 3 - Dicas e Truques 4 – Bate papo ;-)
  • 5.
    Magento pra quemnão conhece? Robusta plataforma de e-commerce open-source , flexível e extensível desenvolvido em PHP + MySQL - mais de 100.000 lojas em todo mundo - Feature set compatível com grandes players fornecedoras de software B2C (Elasticpath, NetSuite, WebSphere Commerce, etc...) no mercado corporativo; - Expansível e modular (mais de 5 mil extensões disponibilizadas) - Comunidade ativa (mais de 600 mil membros no fórum oficial) - Recentemente comprada pela eBay
  • 6.
    Há algum tempojá faz barulho!
  • 7.
    Modelos de licenciamento- Community - Professional (U$ 3.000,00 ano) - Enterprise (U$ 13.000,00 ano) - Magento Go (PasS – de U$15 a U$125,00)
  • 8.
    Quem está usando?- UOL, Buscapé, Dafiti, MundoCorrida, IG, Imprensa Oficial de SP, ChefTV, GlossyBox, CloudRetail, CachaçaExpress, Grudado, FarmaDelivery, MyGeekDay, Roche, Rocket Internet, Mundo Corrida, Concrete Solutions, iPagare, Moip, FOX, Nokia, Kipling, Adidas, Olympus, Ford, Lenovo...
  • 9.
  • 10.
    Faltando mão deobra? - Média de duas propostas de trabalho por mês :-( - Só no Brasil existem vagas abertas atualmente na Rocket Internet, Concrete Solutions, Buscapé, UOL HOST... - 24 vagas abertas no Linkedin Brasil - 26 vagas abertas no fórum oficial (internacional)
  • 11.
    Principais features -Cross-sell / Up-sell - Robusta engine de promoções - Suporta a comercialização de vários tipos de produtos; - Gestão completa de catálogos e estoque; - Otimizado para SEO - CMS - Multiloja e Multilayouts - Extensa variedade de relatórios nativos - Webmobile nativo - UGC, internacionalização, folksonomia, multi-usuários...
  • 12.
    Abrindo a Caixa Preta
  • 13.
    Um aviso OMagento foi pensado desde o início para ser flexível o suficiente para que programadores escrevessem módulos e extensões sem que alterasse as funcionalidades básicas do software (core) CUSTO? - O Magento tem um alto grau de complexidade, muitas vezes assustando designers e frontends (habituados com códigos PHP com apenas um arquivo) - Excesso de configuração e código para coisas aparentemente simples (tudo mapeado em XML);
  • 14.
    O que tempor baixo? Magento roda na plataforma LAMP, utilizando Zend Framework como base class Varien_Cache_Core extends Zend_Cache_Core Varien_Db_Adapter_Pdo_Mysql class Varien_Filter_Object extends Zend_Filter
  • 15.
    Arquitetura MVC -Magento utiliza padrão MVC baseado em configuração; - Necessidade explicita de adicionar todas as informações em arquivos de configuração; - Model View ViewModel ?
  • 16.
  • 17.
  • 18.
  • 19.
    Modelo - EAV- Pra suportar um crescimento vertical, Magento precisou utilizar “modelos ricos” e extensíveis! - solução? EAV (Entity Attribute Value)
  • 20.
    Modelo - EAV- EAV é um modelo de dados “aberto” que é usado em situações onde o número de atributos de uma entidade pode crescer elasticamente. Também conhecido como modelo de dados vertical - Em um modelo tradicional, entidades possuem um número fixo de atributos, no EAV, o número de atributos é elástico - No EAV, cada entidade que está sendo modelada tem um conjunto diferente de atributos
  • 21.
    EAV – ModeloTradicional - +------------------+ | produtos | +------------------+ | product_id | | nome | | preco | | cor | | peso |
  • 22.
    EAV – ModelagemEAV - +------------------+ | eav_entidade | +------------------+ |entidade_id | | tipo | | codigo | - +------------------+ | eav_atributo | +------------------+ |atributo_id | | entidade_id | | attributo_codigo | | nome | | tipo | - +------------------+ | eav_valor | +------------------+ | id | | atributo_id | entidade_id | | valor | - +------------------+ | entidades | +------------------+ |id | | eav_entidade_id |
  • 23.
    EAV – ModelagemEAV Modelando uma entidade produto, com 3 atributos (cor, descricao, tamanho), e inserindo 2 registros : Produto (cor => “azul”, descricao => “Camisa cor azul gola V”, tamanho => “P”) Produto (cor => “verde”, descricao => “Camisa cor verde gola rolê”, tamanho => “GG”)
  • 24.
    EAV – ModelagemEAV eav_entidade 1 | &quot;produto&quot; | &quot;produto&quot; | &quot;Produto&quot; eav_atributo 1 | 1 | &quot;cor&quot; | &quot;Cor do do produto &quot; | 2 | 1 | &quot;descricao&quot; | &quot;Descricao do Produto&quot; | 3 | 1 | &quot;tamanho&quot; | &quot;Tamanho do Produto&quot; | entidades entidades | eav_entidade_id | usuario_id | 1 | 1 | 1 2 | 1 | 2 eav_value 1 | 1 | 1 | &quot;azul&quot; 2 | 2 | 1 | &quot;Camisa cor azul gola V&quot; 3 | 3 | 1 | &quot;Tamanho P&quot; -- 4 | 1 | 2 | &quot;verde&quot; 5 | 2 | 2 | &quot;Camisa cor Verde gola V&quot; 6 | 3 | 2 | &quot;Tamanho GG&quot; -
  • 25.
  • 26.
    Actions - Responsávelpelo roteamento e dispatch pra action correta - Cada action irá instanciar um objeto de layout - Ao contrário dos sistemas MVC padrão, NÃO passa estrutura de dados pra VIEW
  • 27.
    Views - Camadade views no Magento é de certa forma complexa - Composta por Layouts, Blocks, Templates e Helpers
  • 28.
    Views - Layouts– Chamada pelas actions, responsável por “carregar” os blocos - Os blocos são responsáveis por acessar os dados do Model (contém alguma regra de negócio) e carregam o template (arquivos .php) - Templates – Responsável pelo output dos dados (extensão .phtml) - Layouts – Chamada pelas actions, responsável por “carregar” os blocos - Os blocos são responsáveis por acessar os dados do Model (contém alguma regra de negócio) e carregam o template (arquivos .php) - Templates – Responsável pelo output dos dados (extensão .phtml)
  • 29.
    Views - ExemplosListagem de produtos - Listagem de produtos app/design/frontend/base/default/template/catalog/product/list.phtml <?php $_productCollection=$this->getLoadedProductCollection() ?> <?php if(!$_productCollection->count()): ?> <div class=&quot;note-msg&quot;> <?php echo $this->__(&quot;There are no products matching the selection.&quot;) ?> </div> <?php else: ?> File: app/code/core/Mage/Catalog/Block/Product/List.php ... public function getLoadedProductCollection() { return $this->_getProductCollection(); }
  • 30.
    Módulos - OMagento suporta a criação de módulos, sem que que altere o “core” da aplicação - Flexibilidade, Customização, sem perder a capacidade de upgrade -
  • 31.
    Módulos - Community:Disponibilizado para a comunidade (via Magento Connect – ou não) - Core: Módulos do release oficial do Magento, recomenda não alterar - Local: Módulos específicos da loja -
  • 32.
    Toda configuração ficano XML <config> <modules> < PedroTeixeira _ Correios > <active>true</active> <codePool>community</codePool> </PedroTeixeira_Correios> </modules> </config> PedroTeixeira – Namespace / Fabricante Correios – Nome do Módulo -
  • 33.
    Magento Connect Magentoconnect funciona como um gerenciador de pacotes (tipo apt, yum) - Permite baixar pacotes e temas da comunidade em poucos cliques - Atualmente existem mais de 5000 extensões -
  • 34.
  • 35.
    Hands on -Dicas e Truques - Caches, Índices e catálogo flat - Debug para edição de layout - Otimizando a loja (caching de JS e CSS, habilizar gzip, memcache) -
  • 36.
    Hands on -Dicas e Truques - Caches, Índices e catálogo flat - Debug para edição de layout - Otimizando a loja (caching de JS e CSS, habilizar gzip, memcache) - “Compilação” dos arquivos - Alterando rota do administrador - Debugando errors -
  • 37.
    Onde obter maisinformações? - Beba direto da fonte: magentocommerce.com Magento U - Comunidademagento.com.br - Escolamagento.com.br (Mário Sam) - Gooogle ? - Treinamento de Magento na PHPrime em Belo Horizonte no início de Janeiro -
  • 38.
    Notas e referênciasEste webinar não é oficial do Magento - Referências magentocommerce.com escolamagento.com.br alanstorm.com/ -
  • 39.
    Até breve... Perguntas,dúvidas, bate papo? -