SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Magento
www.ipascual.com



Ignacio Pascual (www.ipascual.com) - @ignaciopascual
www.ipascual.com



Ignacio Pascual (www.ipascual.com) - @ignaciopascual
www.ipascual.com



Ignacio Pascual (www.ipascual.com) - @ignaciopascual

 Empresas que hemos capacitado
www.ipascual.com



Introducción a Magento

 ¡Definitivamente lo recomendamos!, no hay en el mercado otra
  plataforma eCommerce tan bien estructurada y diseñada como
  Magento. Nos proporciona versatilidad y libertad a un precio muy
  competitivo a la competencia. El hecho de ser Open Source hace
  que muchos desarrolladores a lo largo del planeta conozcamos el
  código y eviten que usted pierda el soporte necesario a diferencia
  de otras compañías de codigo propietario.

 Características
     Más de 90.000 tiendas online y más de 3.500 extensiones.
     Múltiples tiendas virtuales y compartir todo en una sóla administración
     60 idiomas, múltiples divisas e impuestos.
     Navegación por capas
     Magento tiene SEO
     Magento es núcleo, funcionalidad y diseño.
www.ipascual.com



Versiones de Magento

 Community version
   No trae soporte, garantía ni indemnización.
   No es PCI Compliant

 Professional Edition $2,995 USD / año

 Enterprise Edition $10,000 USD / año



  http://www.magentocommerce.com/product/compare
www.ipascual.com



Instalando Magento

 Web servers soportados
   Apache 1.3.x / Apache 2.0.x / Apache 2.2.x

 PHP 5.2.13+
      PDO_MySQL
      simplexml
      mcrypt
      hash
      GD
      DOM
      iconv
      curl

 MySQL 4.1.20 o superior
www.ipascual.com



Magento Walk-through



 Ventas

 Catálogo – Atributos – Productos – Categorías

 Clientes – Grupo de Clientes

 Vouches – Bonos – Promociones

 Informes
www.ipascual.com



Ciclo de vida de una orden


     Pending - orden no ha sido procesada
     Processing - orden ha sido enviada o facturada pero no ambas
     Complete - orden está enviada y facturada
     Cancelled - ordenes canceladas o no pagadas
     Closed - ordenes con devoluciones
     On Hold - ordenes paralizadas a la espera de una acción
www.ipascual.com



Tipos de productos


   Simple
   Agrupado
   Configurable
   Virtual
       Productos que no tienen stock. No se envían. Por ejemplo: 1 año
      soporte web.
   Bundle
       Productos personalizados
   Downloadable
        Productos para descargar, Magento genera un link
      encriptado, de ese modo el cliente cuando compra no conoce la
      situación real del archivo.
www.ipascual.com



Instalando modules / Magento Connect

 ¿Cuáles instalar?, ¿Qué tan fiables son?



 ¿Cómo instalar?



Ejemplos:
   TweetButton
   Quick Contact
   Enhanced Product Grid
www.ipascual.com



Actualizando Magento

 Proceso automático
   ./pear install magento-core/Mage_All_Latest
   ./pear upgrade-all

 Proceso manual
   Desactivar la cache de Magento
   Copia de seguridad base de datos
   Copia de seguridad de todos los archivos (mantenerla cerca)
   Copia de seguridad especial de app/etc/local.xml y media/
   Descargar nueva versión y descomprimir en directorio
   Sobrescribir app/etc/local.xml y media/
   Borrar directorios var/cache y var/session
   Abrir el navegador y apuntar a la tienda
www.ipascual.com



Migrando Magento

 Desactivar cache

 Volcar su información de la base de datos

 Copiar sistema de archivos

 Copiar todo al nuevo servidor

 Asegurar que la tabla core_config_data tenga correctamente
  configurado "web/unsecure/base_url" y "web/secure/base_url"
Magento

Capacitación:

- Administración

- Diseño

- Desarrollo
www.ipascual.com



Estructura general de Magento

 app
   code
   design
   etc
   Locale

 js

 media

 skin

 var
www.ipascual.com



MVC (Modelo Vista Controlador) Magento – introducción
www.ipascual.com



MVC (Modelo Vista Controlador) Magento – introducción
 Programación
   block
   controller
   helper
   model

 Diseño
   layout
   template
www.ipascual.com



Estructura de archivos para diseño


 app/design/frontend/{$interfaz}/{$theme}/template folder.

 app/design/frontend/{$interfaz}/{$theme}/layout folder.

 app/code/{core,local,com…}/{$compañía}/{$modulo}/Block

   ¿Qué es interfaz?
  Colección themes, Ej.: iPascual, Colombia, México…
   ¿Qué es theme?
  Grupo de layout y templates. Ej.: Navidades, día de la madre…
   ¿Qué es módulo?
  Parte de Magento (requerida o no) Ej.: Cliente, bonos, catálogo…
                 ** Ver estructura de diseño más en profundidad **
www.ipascual.com



Diseños y tiendas
www.ipascual.com
www.ipascual.com



Jerarquía de uso
Módulo: Mage_Catalog / Layout: catalog.xml

 app/design/frontend/ipascual/diamadre/layout

 app/design/frontend/ipascual/default/layout

 app/design/frontend/base/default/layout

¿ Templates, css, js…?
 app/design/frontend/ipascual/diamadre/template/catalog/product/view.phtml

 app/design/frontend/ipascual/default/template/catalog/product/view.phtml

 app/design/frontend/base/default/template/catalog/product/view.phtml
www.ipascual.com



Control de diseño
www.ipascual.com



Situaciones especiales de diseño



 CMS

 Categorías

 Productos
www.ipascual.com



Nuestra gran ayuda
www.ipascual.com



Nuestra gran ayuda
www.ipascual.com



 Layout
<checkout_cart_index translate="label">
   <label>Shopping Cart</label>
   <remove name="right"/>
   <remove name="left"/>
   <reference name="root">
      <action method="setTemplate"><template>page/1column.phtml</template></action>
   </reference>
   <reference name="content">

      <block type="checkout/cart" name="checkout.cart">
             <action method="setCartTemplate"><value>checkout/cart.phtml</value></action>
       </block>

       <block type="checkout/cart_coupon" name="checkout.cart.coupon" as="coupon"
template="checkout/cart/coupon.phtml"/>

        <block type="checkout/cart_shipping" name="checkout.cart.shipping" as="shipping"
template="checkout/cart/shipping.phtml"/>

        <block type="checkout/cart_crosssell" name="checkout.cart.crosssell" as="crosssell"
template="checkout/cart/crosssell.phtml"/>

    <block type="checkout/cart_totals" name="checkout.cart.totals" as="totals" template="checkout/cart/totals.phtml"/>

      </block>
    </reference>

</checkout_cart_index>
www.ipascual.com



 Template / funciones comunes
<?php echo $this->_(“Carrito de compra”); ?>

$this->getChildHtml("bloque_nombre”)
<?php echo $this->getChildHtml('breadcrumbs') ?>

$this->getChildHtml()
<?php echo $this->getChildHtml() ?>

- Carga un static block CMS
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId("identificador")-
>toHtml() ?>

$this->getUrl('') Devuelve http://127.0.0.1/magento/

$this->getUrl('module/controller/action', array('param'=>$value))

$this->getSkinUrl("images/logo.png");
http://127.0.0.1/skin/frontend/your_theme/default/images/logo.png
Magento

Capacitación:

- Administración

- Diseño

- Desarrollo
www.ipascual.com



Frameworks en Magento
www.ipascual.com



Organización en módulos

 A diferencia de un MVC común, Magento organiza el código en
  una clase superior llamada módulo
   app/code/core/Mage/Newsletter
   app/code/core/Mage/Checkout

 Cuando creamos o modificamos secciones en Magento lo
  haremos en
   app/code/local/Paquete/Modulo
  (Paquete es llamado también como Namespace o nombre compañía)


 Hacemos saber al sistema de la existencia de un módulo a través
  de un archivo XML en
   app/etc/modules
  Este archivo se nombrará
   Paquete_Modulo.xml
   Paquete_All.xml
www.ipascual.com



Estructura de un módulo

 /app/code/local/Paquete
   Modulo
      Block
      controllers
      etc
        config.xml
        system.xml
      Helper
      Model
      Sql

 /etc/modules
www.ipascual.com



Controladores
 http://tutienda.com/catalog/category/view/id/25
  1. Front Name: catalog
  2. Controlador:
     app/code/core/Mage/Catalog/controllers/CategoryController.php
  3. Acción – vista: public function viewAction() { … }
  4. Parámetros: id/25


 Jerarquía de llamada
  1.   Busca un controlador especificado en frontend
  2.   Busca un controlador especificado en admin
  3.   Busca en categorías / productos
  4.   Busca una coincidencia en Mage_Cms_IndexController
  5.   Devuelve el CMS especificado para 404
www.ipascual.com



Configurando un controlador para frontend

 etc/config.xml

<frontend>
   <routers>
     <catalog>

      <use>standard</use>

      <args>
        <module>Mage_Catalog</module>
        <frontName>catalog</frontName>
      </args>

     </catalog>
  </routers>
</frontend>
www.ipascual.com



Creando un controlador

 app/controllers/CategoryController.php

class Mage_Catalog_CategoryController extends Mage_Core_Controller_Front_Action
{

    public function viewAction()
    {

        // …

    }

}
www.ipascual.com



Block

 config.xml

<global>
  <blocks>
       <alquiler>
                <class>Ipascual_Alquiler</class>
       </alquiler>
  </blocks>
  …

 Clase PHP
  class Ipascual_Alquiler_Block_Alquiler extends Mage_Core_Block_Template
  {
  …
  }
www.ipascual.com



Configurando un Model

 etc/config.xml

<global>

      <models>
           <alquiler>
                   <class>Ipascual_Alquiler_Model</class>
           </alquiler>
      </models>

      …
www.ipascual.com



Creando un Model

 app/controllers/CategoryController.php

Class Ipascual_Alquiler_Model_Novedades extends Mage_Core_Model_Abstract
{

    public function getNovedades()
    {

        // …

    }

}
www.ipascual.com



Creando y configurando un Helper

 etc/config.xml

<global>
       <helpers>
              <alquiler>
                      <class>Ipascual_Alquiler_Helper</class>
              </alquiler>
       </helpers>
       …

 Helper/Data.php
class Ipascual_Alquiler_Helper_Data extends Mage_Core_Helper_Abstract

{

…

}
www.ipascual.com



Usando un Helper



 Desde template *.phtml

<?php $this->helper(”alquiler")->myMethod(); ?>

 Desde un block / model / controller…

Mage::helper("alquiler/data")->myMethod();
www.ipascual.com


Sobreescribiendo código de Magento



        <global>

          <blocks>

                <catalog>

<rewrite><product_view>Ipascual_Mymodule_Block_Product_View</product_
view></rewrite>

        <rewrite><product_list_toolbar>Ipascual_Mymodule_Block_Product_Lis
t_Toolbar</product_list_toolbar></rewrite>

                        </catalog>

                </blocks>

        </global>
www.ipascual.com



Javascript
<form action=“/customer/account/loginPost/" method="post" id="login-form">

<label for="email" class="required"><em>*</em>Dirección de correo
electrónico</label>

<input type="text" name="login[username]" value="" id="email" class="input-text
required-entry validate-email" title="Dirección de correo electrónico" />

…

<script type="text/javascript">

    //<![CDATA[

      var dataForm = new VarienForm('login-form', true);

    //]]>

    </script>
www.ipascual.com



Base de datos
Modelos Entidad-Relación & EAV (Entidad Atributo Valor)
www.ipascual.com



Base de datos
Modelo EAV (Entidad Atributo Valor)
www.ipascual.com

 Blog personal: unexpected [ it ]
  www.unexpectedit.com



 Twitter: @ignaciopascual



 Facebook: www.facebook.com/ipascualcom

Weitere ähnliche Inhalte

Was ist angesagt? (6)

Joomla! 1.5 Para Principiantes
Joomla! 1.5 Para PrincipiantesJoomla! 1.5 Para Principiantes
Joomla! 1.5 Para Principiantes
 
Grails: Framework para el desarrollo de aplicaciones Web No 3
Grails: Framework para el desarrollo de aplicaciones Web No 3Grails: Framework para el desarrollo de aplicaciones Web No 3
Grails: Framework para el desarrollo de aplicaciones Web No 3
 
Estructura básicas de plantillas en joomla!
Estructura básicas de plantillas en joomla!Estructura básicas de plantillas en joomla!
Estructura básicas de plantillas en joomla!
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 
#JoomlaIO - Desarrollo de Plantillas para Joomla!
#JoomlaIO - Desarrollo de Plantillas para Joomla!#JoomlaIO - Desarrollo de Plantillas para Joomla!
#JoomlaIO - Desarrollo de Plantillas para Joomla!
 
Prestashop introducción
 Prestashop introducción Prestashop introducción
Prestashop introducción
 

Ähnlich wie Magento, uso, desarrollo y diseño

Presentación extensiones interesantes joomla
Presentación extensiones interesantes joomlaPresentación extensiones interesantes joomla
Presentación extensiones interesantes joomla
MadBlake
 
Exposicion Akelos
Exposicion AkelosExposicion Akelos
Exposicion Akelos
dokeosla
 
Programas para ecommerce
Programas para ecommerceProgramas para ecommerce
Programas para ecommerce
Alejandro Ruiz
 
Web 2.0 ajax con SharePoint
Web 2.0 ajax con SharePointWeb 2.0 ajax con SharePoint
Web 2.0 ajax con SharePoint
goreorti
 
Joomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensionesJoomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensiones
deivit86
 

Ähnlich wie Magento, uso, desarrollo y diseño (20)

Presentación extensiones interesantes joomla
Presentación extensiones interesantes joomlaPresentación extensiones interesantes joomla
Presentación extensiones interesantes joomla
 
Exposicion Akelos
Exposicion AkelosExposicion Akelos
Exposicion Akelos
 
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
 
UBERCART UTVT E4
UBERCART UTVT E4UBERCART UTVT E4
UBERCART UTVT E4
 
Salesforce Bilbao Elevate '15 - 4th developer workshop
Salesforce Bilbao Elevate '15 - 4th developer workshopSalesforce Bilbao Elevate '15 - 4th developer workshop
Salesforce Bilbao Elevate '15 - 4th developer workshop
 
Practica integradora
Practica integradoraPractica integradora
Practica integradora
 
JqueryMobile
JqueryMobile JqueryMobile
JqueryMobile
 
Joomla
JoomlaJoomla
Joomla
 
Magento
MagentoMagento
Magento
 
Magento
MagentoMagento
Magento
 
Programas para ecommerce
Programas para ecommerceProgramas para ecommerce
Programas para ecommerce
 
Como Acelerar La Carga De Joomla
Como Acelerar La Carga De JoomlaComo Acelerar La Carga De Joomla
Como Acelerar La Carga De Joomla
 
Diseño en la web
Diseño en la webDiseño en la web
Diseño en la web
 
Tema 3
Tema 3Tema 3
Tema 3
 
Web 2.0 ajax con SharePoint
Web 2.0 ajax con SharePointWeb 2.0 ajax con SharePoint
Web 2.0 ajax con SharePoint
 
Joomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensionesJoomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensiones
 
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
 
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
 
Curso Java Avanzado 6 Struts
Curso Java Avanzado   6 StrutsCurso Java Avanzado   6 Struts
Curso Java Avanzado 6 Struts
 

Kürzlich hochgeladen

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Kürzlich hochgeladen (12)

Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 

Magento, uso, desarrollo y diseño

  • 4. www.ipascual.com Ignacio Pascual (www.ipascual.com) - @ignaciopascual  Empresas que hemos capacitado
  • 5. www.ipascual.com Introducción a Magento  ¡Definitivamente lo recomendamos!, no hay en el mercado otra plataforma eCommerce tan bien estructurada y diseñada como Magento. Nos proporciona versatilidad y libertad a un precio muy competitivo a la competencia. El hecho de ser Open Source hace que muchos desarrolladores a lo largo del planeta conozcamos el código y eviten que usted pierda el soporte necesario a diferencia de otras compañías de codigo propietario.  Características  Más de 90.000 tiendas online y más de 3.500 extensiones.  Múltiples tiendas virtuales y compartir todo en una sóla administración  60 idiomas, múltiples divisas e impuestos.  Navegación por capas  Magento tiene SEO  Magento es núcleo, funcionalidad y diseño.
  • 6. www.ipascual.com Versiones de Magento  Community version  No trae soporte, garantía ni indemnización.  No es PCI Compliant  Professional Edition $2,995 USD / año  Enterprise Edition $10,000 USD / año http://www.magentocommerce.com/product/compare
  • 7. www.ipascual.com Instalando Magento  Web servers soportados  Apache 1.3.x / Apache 2.0.x / Apache 2.2.x  PHP 5.2.13+  PDO_MySQL  simplexml  mcrypt  hash  GD  DOM  iconv  curl  MySQL 4.1.20 o superior
  • 8. www.ipascual.com Magento Walk-through  Ventas  Catálogo – Atributos – Productos – Categorías  Clientes – Grupo de Clientes  Vouches – Bonos – Promociones  Informes
  • 9. www.ipascual.com Ciclo de vida de una orden  Pending - orden no ha sido procesada  Processing - orden ha sido enviada o facturada pero no ambas  Complete - orden está enviada y facturada  Cancelled - ordenes canceladas o no pagadas  Closed - ordenes con devoluciones  On Hold - ordenes paralizadas a la espera de una acción
  • 10. www.ipascual.com Tipos de productos  Simple  Agrupado  Configurable  Virtual  Productos que no tienen stock. No se envían. Por ejemplo: 1 año soporte web.  Bundle  Productos personalizados  Downloadable  Productos para descargar, Magento genera un link encriptado, de ese modo el cliente cuando compra no conoce la situación real del archivo.
  • 11. www.ipascual.com Instalando modules / Magento Connect  ¿Cuáles instalar?, ¿Qué tan fiables son?  ¿Cómo instalar? Ejemplos:  TweetButton  Quick Contact  Enhanced Product Grid
  • 12. www.ipascual.com Actualizando Magento  Proceso automático  ./pear install magento-core/Mage_All_Latest  ./pear upgrade-all  Proceso manual  Desactivar la cache de Magento  Copia de seguridad base de datos  Copia de seguridad de todos los archivos (mantenerla cerca)  Copia de seguridad especial de app/etc/local.xml y media/  Descargar nueva versión y descomprimir en directorio  Sobrescribir app/etc/local.xml y media/  Borrar directorios var/cache y var/session  Abrir el navegador y apuntar a la tienda
  • 13. www.ipascual.com Migrando Magento  Desactivar cache  Volcar su información de la base de datos  Copiar sistema de archivos  Copiar todo al nuevo servidor  Asegurar que la tabla core_config_data tenga correctamente configurado "web/unsecure/base_url" y "web/secure/base_url"
  • 15. www.ipascual.com Estructura general de Magento  app  code  design  etc  Locale  js  media  skin  var
  • 16. www.ipascual.com MVC (Modelo Vista Controlador) Magento – introducción
  • 17. www.ipascual.com MVC (Modelo Vista Controlador) Magento – introducción  Programación  block  controller  helper  model  Diseño  layout  template
  • 18. www.ipascual.com Estructura de archivos para diseño  app/design/frontend/{$interfaz}/{$theme}/template folder.  app/design/frontend/{$interfaz}/{$theme}/layout folder.  app/code/{core,local,com…}/{$compañía}/{$modulo}/Block  ¿Qué es interfaz? Colección themes, Ej.: iPascual, Colombia, México…  ¿Qué es theme? Grupo de layout y templates. Ej.: Navidades, día de la madre…  ¿Qué es módulo? Parte de Magento (requerida o no) Ej.: Cliente, bonos, catálogo… ** Ver estructura de diseño más en profundidad **
  • 21. www.ipascual.com Jerarquía de uso Módulo: Mage_Catalog / Layout: catalog.xml  app/design/frontend/ipascual/diamadre/layout  app/design/frontend/ipascual/default/layout  app/design/frontend/base/default/layout ¿ Templates, css, js…?  app/design/frontend/ipascual/diamadre/template/catalog/product/view.phtml  app/design/frontend/ipascual/default/template/catalog/product/view.phtml  app/design/frontend/base/default/template/catalog/product/view.phtml
  • 23. www.ipascual.com Situaciones especiales de diseño  CMS  Categorías  Productos
  • 26. www.ipascual.com Layout <checkout_cart_index translate="label"> <label>Shopping Cart</label> <remove name="right"/> <remove name="left"/> <reference name="root"> <action method="setTemplate"><template>page/1column.phtml</template></action> </reference> <reference name="content"> <block type="checkout/cart" name="checkout.cart"> <action method="setCartTemplate"><value>checkout/cart.phtml</value></action> </block> <block type="checkout/cart_coupon" name="checkout.cart.coupon" as="coupon" template="checkout/cart/coupon.phtml"/> <block type="checkout/cart_shipping" name="checkout.cart.shipping" as="shipping" template="checkout/cart/shipping.phtml"/> <block type="checkout/cart_crosssell" name="checkout.cart.crosssell" as="crosssell" template="checkout/cart/crosssell.phtml"/> <block type="checkout/cart_totals" name="checkout.cart.totals" as="totals" template="checkout/cart/totals.phtml"/> </block> </reference> </checkout_cart_index>
  • 27. www.ipascual.com Template / funciones comunes <?php echo $this->_(“Carrito de compra”); ?> $this->getChildHtml("bloque_nombre”) <?php echo $this->getChildHtml('breadcrumbs') ?> $this->getChildHtml() <?php echo $this->getChildHtml() ?> - Carga un static block CMS <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId("identificador")- >toHtml() ?> $this->getUrl('') Devuelve http://127.0.0.1/magento/ $this->getUrl('module/controller/action', array('param'=>$value)) $this->getSkinUrl("images/logo.png"); http://127.0.0.1/skin/frontend/your_theme/default/images/logo.png
  • 30. www.ipascual.com Organización en módulos  A diferencia de un MVC común, Magento organiza el código en una clase superior llamada módulo  app/code/core/Mage/Newsletter  app/code/core/Mage/Checkout  Cuando creamos o modificamos secciones en Magento lo haremos en  app/code/local/Paquete/Modulo (Paquete es llamado también como Namespace o nombre compañía)  Hacemos saber al sistema de la existencia de un módulo a través de un archivo XML en  app/etc/modules Este archivo se nombrará  Paquete_Modulo.xml  Paquete_All.xml
  • 31. www.ipascual.com Estructura de un módulo  /app/code/local/Paquete  Modulo  Block  controllers  etc  config.xml  system.xml  Helper  Model  Sql  /etc/modules
  • 32. www.ipascual.com Controladores  http://tutienda.com/catalog/category/view/id/25 1. Front Name: catalog 2. Controlador: app/code/core/Mage/Catalog/controllers/CategoryController.php 3. Acción – vista: public function viewAction() { … } 4. Parámetros: id/25  Jerarquía de llamada 1. Busca un controlador especificado en frontend 2. Busca un controlador especificado en admin 3. Busca en categorías / productos 4. Busca una coincidencia en Mage_Cms_IndexController 5. Devuelve el CMS especificado para 404
  • 33. www.ipascual.com Configurando un controlador para frontend  etc/config.xml <frontend> <routers> <catalog> <use>standard</use> <args> <module>Mage_Catalog</module> <frontName>catalog</frontName> </args> </catalog> </routers> </frontend>
  • 34. www.ipascual.com Creando un controlador  app/controllers/CategoryController.php class Mage_Catalog_CategoryController extends Mage_Core_Controller_Front_Action { public function viewAction() { // … } }
  • 35. www.ipascual.com Block  config.xml <global> <blocks> <alquiler> <class>Ipascual_Alquiler</class> </alquiler> </blocks> …  Clase PHP class Ipascual_Alquiler_Block_Alquiler extends Mage_Core_Block_Template { … }
  • 36. www.ipascual.com Configurando un Model  etc/config.xml <global> <models> <alquiler> <class>Ipascual_Alquiler_Model</class> </alquiler> </models> …
  • 37. www.ipascual.com Creando un Model  app/controllers/CategoryController.php Class Ipascual_Alquiler_Model_Novedades extends Mage_Core_Model_Abstract { public function getNovedades() { // … } }
  • 38. www.ipascual.com Creando y configurando un Helper  etc/config.xml <global> <helpers> <alquiler> <class>Ipascual_Alquiler_Helper</class> </alquiler> </helpers> …  Helper/Data.php class Ipascual_Alquiler_Helper_Data extends Mage_Core_Helper_Abstract { … }
  • 39. www.ipascual.com Usando un Helper  Desde template *.phtml <?php $this->helper(”alquiler")->myMethod(); ?>  Desde un block / model / controller… Mage::helper("alquiler/data")->myMethod();
  • 40. www.ipascual.com Sobreescribiendo código de Magento <global> <blocks> <catalog> <rewrite><product_view>Ipascual_Mymodule_Block_Product_View</product_ view></rewrite> <rewrite><product_list_toolbar>Ipascual_Mymodule_Block_Product_Lis t_Toolbar</product_list_toolbar></rewrite> </catalog> </blocks> </global>
  • 41. www.ipascual.com Javascript <form action=“/customer/account/loginPost/" method="post" id="login-form"> <label for="email" class="required"><em>*</em>Dirección de correo electrónico</label> <input type="text" name="login[username]" value="" id="email" class="input-text required-entry validate-email" title="Dirección de correo electrónico" /> … <script type="text/javascript"> //<![CDATA[ var dataForm = new VarienForm('login-form', true); //]]> </script>
  • 42. www.ipascual.com Base de datos Modelos Entidad-Relación & EAV (Entidad Atributo Valor)
  • 43. www.ipascual.com Base de datos Modelo EAV (Entidad Atributo Valor)
  • 44. www.ipascual.com  Blog personal: unexpected [ it ] www.unexpectedit.com  Twitter: @ignaciopascual  Facebook: www.facebook.com/ipascualcom