10. Checklist (II)
✔
Gestionar tiendas.
✔
Configuración [scope]
✔
Conf>Web: urls y usar CDN. Certificados SSL.
✔
Conf>Diseño>Encabezado-> Robots.txt
✔
Conf>Catálogo>SEO
✔
Configuración de divisas, precios (global o website)
✔
Conf->WYSIWYG
✔
Conf->Catálogo (tablas flat)
✔
Buscador y Términos de búsqueda
✔
Inventario
11. Checklist (III)
✔
Clientes-> Scope, impuestos, asignaciones a grupos
✔
Clientes->Carrito persistente
✔
Ventas->Impuestos, FPT
✔
Checkout->Métodos de envío
✔
Checkout->Métodos de pago
✔
Avanzado->Desarrollador
✔
Estados de pedidos
✔
Conjunto de atributos
✔
Categorías
✔
Poner el CRON de Magento
12. Recursos útiles
Guía de uso de GIT con Magento
https://www.sonassi.com/knowledge-base/our-magento-git-guide-and-work-flow/
Mejorar buscador
http://magento.stackexchange.com/questions/1137/search-type-like-full-text-or-combined
http://www.magentocommerce.com/magento-connect/catalog-search-refinement-free.html
Robots.txt para Magento
http://turnkeye.com/blog/optimize-robots-txt-for-magento/
Workflow de pedidos
http://go.magento.com/support/kb/entry/name/order-workflow
Cron en Magento
http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/how_to_setup_a_cron_job
13. Caso práctico
Distribuciones Exclusivas de Vinos de La Rioja, S.A (a.k.a. DEVILAR)
está orientada al mercado Europeo, por lo que tendrá 2 tiendas:
España en castellano y Reino Unido en inglés.
Algún producto sólo se puede vender en UK.
La de UK en libras con tasa de cambio fija (1GBP = 1,2349 EUR)
Los clientes con CIF válido entran al grupo de Clientes VIP.
Clientes VIP con precios especiales en algunos producto.
Para el producto Oferton de día, si te gastas más de 120€,
dicho producto tiene un 80% de descuento.
Filtros por: precio, graduación, municipio, añada.
Buscador busca en nombre, descripción y municipio.
El catálogo se muestra con IVA del 21% incluido.
El email de creación de pedido para usuarios registrados y no
registrados es el mismo y pone sólo “PEDIDO REGISTRADO”.
Crear sitemap.xml para es y uk.
Envío gratis para España con pedidos de >100€ y el resto 10€ de gastos.
Optimizar rendimiento para puesta en producción.
Aceptar Condiciones de compra al hacer el pedido y cumplir con EU Cookie.
22. Comprendiendo el Layout XML
- Etiquetas XML
- Añaden/modifican/eliminan relaciones entre bloques
- Relacionan bloques estructurales con bloques de contenido
- Controlar funciones y añadir contenido HTML
- En app/design/frontend/[package]/[theme]/layout
- Un archivo XML de Layout por cada módulo Magento
23. Handles(manejadores)
- Elementos de primer nivel del nodo <layout>
- Cada uno representa un actualización del layout
- [nombre_modulo][nombre_controller][nombre_accion]
25. Elementos del Layout
Reference
- Referenciar un bloque ya definido.
- Debe coincidir con el atributo name del bloque
Block
- Define un nuevo bloque
- Obligatorios los campos name y type
- <block type="page/html" template="example/view.phtml">
26. Elementos del Layout
Remove
Action
- Define una acción a ejecutar
- Puede ser colocado dentro de reference o block
Update
- Carga un handle dentro de otro. Actualiza un bloque con el
contenido de otro.
30. - Se instancian los bloques.
- Solo los bloques de tipo output son añadidos al response.
- Page.xml.
- Bloque raíz (root)
- Los bloques hijos se renderizan con la llamada getChildHtml()
- Proceso recursivo
32. Tipos de bloques
1. Bloques estructurales
2. Bloques dinámicos
3. Bloques dinámicos con datos personalizados
4. Bloques estáticos
33. Tipos de bloques
1. Bloques estructurales
2. Bloques dinámicos
3. Bloques dinámicos con datos personalizados
4. Bloques estáticos
34. Bloques estructurales
- Encapsulan los bloques de contenido organizando
visualmente los bloques.
- Se pueden crear bloques estructurales personalizados
- Todos los bloques hijos de uno estructural se muestran automáticamente
sin tener que usar el método getChildHtml() para cada uno de ellos.
(Ejemplo: newreference.phtml)
35. Bloques dinámicos (phtml)
- Bloques Magento ( categoría, carrito, usuario,...)
- Representan el contenido y las funcionalidades
1. Vía layout XML (Ejemplo: review_form)
2. Desde el CMS
3. Desde la plantilla
–
36. Bloques dinámicos personalizados
1. Vía layout XML
- Bloques personalizados
- Creamos un bloque y una plantilla asociada a este
personalizada.
2. Desde el CMS (Ejemplo: bestsellers)
37. Bloques estáticos (CMS Blocks)
- Se crean desde el admin. CMS Bloques estáticos→
- Útil para que los clientes.
1. Vía layout XML
2. Desde el CMS
3. Desde la plantilla
43. Paquete
1. Colección de temas relacionados.
2. En Magento por defecto es “base”.
Tema
1. Varios por paquete.
2. Determina el contenido visual de nuestra tienda.
3. Solo puede pertenecer a un paquete.
45. App/design
Layout
Contiene los archivos básicos XML que definen la estructura de bloque para
diferentes páginas.
Template
Archivos que contienen el PHP y el XHTML necesario para la representación
visual.
Locale
Contiene los CSV de traducción organizados por lenguaje.
53. - Cambiar parámetros de los bloques
- Diferentes acciones para logueados/no-logueados
- Añadir imágenes
En plantilla
54. - Diseño personalizable por categoría
Navegación por capas : Display settings Is Anchor→ → yes
Incluir texto estático o imágenes.
- Navegación por capas
Ocultar/Mostrar atributos.
Atributos filtrables con/sin resultados
- Página de producto
Layout de la página de producto
Galería de imágenes
En el administrador
56. Url de la página
<?php echo $this->getUrl('mypage'); ?>
Url de la imagen
<?php echo $this->getSkinUrl('images/button.gif'); ?>
Url del producto
<?php echo $this->getProductData()->getProductUrl(); ?>
Nombre del producto
<?php echo $this->htmlEscape($this->getProductData()->getName()); ?>
Mostrar todos los productos de una categoría
$categories = $_product->getCategoryIds();
foreach($categories as $k => $_category_id):
$_category = Mage::getModel('catalog/category')->load($_category_id);
<a href="<?php echo $_category->getUrl() ?>"><?php echo $_category->getName() ?>
<?php endforeach; ?>
57. Comprobar si un usuario esta logueado
$logged_in = Mage::getSingleton('customer/session')->isLoggedIn();
Cargar producto según su SKU
$_product = Mage::getModel('catalog/product')->loadByAttribute('sku', $product_sku);
Cargar producto según su ID
$_product = Mage::getModel('catalog/product')->load($product_id);
Cargar categoría según su ID
$_category = Mage::getModel('catalog/category')->load($category_id);
Obtener categoría actual
$_category = Mage::getModel('catalog/layer')->getCurrentCategory();
Obtener literal (para traducciones)
$text = $this->__('Content');
59. 1- Añadir enlace de Twitter en el apartado “Company” del pie.
2- Crear página “Condiciones de compra” y añadirla en los enlaces de la cabecera “Mi
Cuenta”.
3- Añadir un bloque estructural encima del pie donde aparezca un eslogan
4- Añadir un imagen (Enpresa Digitala) y que sea un enlace que lleve a su web en la
columna de la izquierda de la vista de categoría
5- Añadir una imagen/slider en nuestra “home”.
6- Modificar el valor “nofollow” al Meta tag robots
60. Recursos útiles
Oficial Magento designer guide
http://www.magentocommerce.com/resources/magento-user-guide
Magento: The right way
http://magentotherightway.com/
Magento Cheat Sheet
http://www.richdynamix.com/mcheat/
65. Registro de Helpers, Bloques y Modelos (I)
app/code/local/On4u/Holamundo/etc/config.xml
66. Registro de Helpers, Bloques y Modelos (II)
app/code/local/On4u/Holamundo/Helper/Data.php
Lo mismo para:
app/code/local/On4u/Holamundo/Block
app/code/local/On4u/Holamundo/Model
La nomenclatura sigue la convención:
<Vendor namespace>_<Modulename>_<Objecttype>_<Classname>
Y para cargarlos:
Mage::getModel(“holamundo/ejemplo”);
Mage::helper(“holamundo/data”);
77. Las entidades flat
La tabla de la base de datos
El objeto Model (lógica negocio)
El objeto Resource Model (conecta con BD p.e. save())
El objeto Resource Collection
105. Para qué sirve un API
Interconectar sistemas para que se
entiendan entre ellos (internet of things)
Aplicaciones distribuidas.
El servidor ofrece unos servicios y el cliente
envía peticiones.
Interfaz abstracta reusable
Marshalling / Unmarshalling
106. REST vs SOAP
● SOAP
– Pros
● Fácil de automatizar
(sobre todo Java y cía)
● Wsdl
– Contras
● Implementaciones
anti-interoperabilidad
● Demasiado verboso
● REST
– Pros:
● Ubicuo
● Estándar
● Caching
● Statleeess (escalabilidad)
● JSON o XML o lo que sea.
– Contras
● Herramientas
● Autodocumentación /
Autogeneracion
● Verbos limitados
109. API+
● Acceso granular (recuperar sólo lo necesario) y filtrado
● Tipos bien definidos
●
“Desnormalizar” (reducir nº de peticiones)
● Multiformato
● Documentación y buenos errores *
● Versionado
● Disponibilidad y velocidad *
*Qué bueno es que haya niños Magentos para echarles la culpa.
110. API REST Magento
● http(s)://magentohost/api/rest
● Clientes, productos, inventario, pedidos(lectura)
● OAuth1.0a
● Métodos: GET, POST, PUT, DELETE
● Filtros: page, order, dir, limit, etc.
● ACL (admin, customer, guest) + roles +attributes
● JSON + XML
111. Elementos del API REST
● Módulo: Mage_Api2
– API SOAP v1 → API SOAP v2 (1.3) != API REST
– No se trata de extenderlo sino de usarlo
● Request Interpreters y response renderers
– URL query, json y xml
● Auth Adapters
– Oauth
● User Types
– Guest, customer, admin
● Route
– entity / collection
● Request → Dispatcher → Response
112. Elementos del API REST
● ACL:
– Global y filter
– Deciden qué roles acceden a qué atributos. Se usa
también como “filtro” para eliminar campos.
● Validator
– Comprueba que los parámetros de entrada sean
correctos.
● Resource
– Implementa la lógica de cada recurso
113. Extendiendo un recurso
● La implementación está en cada módulo
– Model/Api2/
● {Resourcename}.php
● {Resourcename}/
– Rest.php
– Rest/{Admin|Guest|Customer}/
● V{n}.php
– P.ej “CatalogInventory/Model/Api2/Stock”
● Item.php
● Item/Rest.php
● Item/Rest/Admin/V1.php
● Item/Validator/Item.php
114. api2.xml
● El pegamento que une todas las partes
● En /etc de cada módulo
– Resources (modelos)
– Atributos y roles (ACL)
– Rutas
– Validators
– Versiones disponibles
119. Recursos útiles
Guía de uso de GIT con Magento
https://www.sonassi.com/knowledge-base/our-magento-git-guide-and-work-flow/
Scripts para administrar Magento desde consola
https://github.com/classyllama/Wiz
Herramienta para reparar la Base de datos de Magento
http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/db-repair-tool
Trabajar con colecciones
http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/using_collections_in_magento
120. Caso práctico
●
Hola Mundo por pantalla
●
Hola Mundo en un bloque con traducciones
●
Crear bloque de nuevos productos
●
Reescribir model de Product para poner CURSO delante del nombre
●
Instalador que cree un atributo a producto
●
Actualización que cree tabla de suscriptores
●
Colección que muestre los productos que tiene una 'A'
●
Acceso en menú de backend
●
ACL de permisos
●
Gestión de configuración
●
Actualización que cree atributo a cliente