SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
Drupal 7 visto a través
 de Drupal Commerce
¿Qué es Drupal Commerce?

   Drupal Commerce es un nuevo
 framework de comercio electrónico
  desarrollado de forma nativa para
Drupal 7 con el objetivo de hacer de
Drupal un referente en el mundo del
     ecommerce open source.
Componentes de Commerce
   Product      Price          Order

   Product
  reference   Line item     Line item   Customer profile
                            reference      reference



  (Node)        Payment             Customer
              transaction            profile
Separación de Producto y Display
Los productos están separados en una parte de
display (nodos) y una nueva entidad “product”
que se relacionan a través de un campo “product
reference”.

Esto supone una gran ventaja de cara a la
arquitectura y flexibilidad pero la usabilidad por
defecto se ve afectada.
Extensiones disponibles
●   Migración: Commerce Feeds, Commerce Migrate
●   Usabilidad: Commerce Product Display Manager.
●   Utilidades: Commerce File, Commerce Coupon,
    Commerce Google Analytics, Commerce Stock,
    Commerce Shipping
●   Pago: Commerce Paypal, Commerce Sermepa

    Más: http://www.drupalcommerce.org/contrib
Ejemplos de tiendas con Commerce




Más: http://www.drupalcommerce.org/showcase
¿Demo?




http://bit.ly/dc-demo-cg
Concepto de Entity
 Las entidades añaden una nueva capa de
 abstracción basada en objetos sobre los datos
 que permite que todo el contenido comparta
 API y workflow
 Nodos, usuarios, términos de taxonomía,
 vocabularios, comentarios, ficheros... son ahora
 entidades
  “Everything is a node” vs “Nodes are entities too”
Ejemplo #1: Entity Controllers
class CommerceProductEntityController extends
DrupalCommerceEntityController {
(..)
  public function create(array $values = array()) {
     return (object) ($values + array(
       'product_id' => '',
       'is_new' => TRUE,
       'sku' => '',
       'title' => '',
       'uid' => '',
       'status' => 1,
       'created' => '',
       'changed' => '',
     ));
  }
(..)
}
Ejemplo #2: EntityFieldQuery
function
commerce_product_reference_commerce_product_can_delete($product) {
  // Use EntityFieldQuery to look for line items referencing this
  // product and do not allow the delete to occur if one exists.
  $query = new EntityFieldQuery();

    $query
      ->entityCondition('entity_type', 'commerce_line_item', '=')
      ->entityCondition('bundle', 'product', '=')
      ->fieldCondition('product', 'product_id',
           $product->product_id, '=')
      ->count();

    return $query->execute() > 0 ? FALSE : TRUE;
}
Entities como base de Commerce
●   Entidades en Drupal Commerce: Orders,
    Products, Line items, Transactions, Profiles.
●   La capacidad de añadir campos a entidades
    (propiedad fieldable) permite extenderlas con
    diferentes datos asociados.
●   Es posible definir otras entidades para casos
    concretos, por ejemplo Commerce Delivery o
    Commerce Shipping
Entity API
●   El módulo Entity API se crea para facilitar el
    acceso a las entidades y para rellenar los
    huecos que le faltan al core de Drupal.
●   Añade elementos muy interesantes como las
    propiedades, exportables, interfaz de
    administración o los metadata wrappers
●   También proporciona un controlador de CRUD
    estándar para la mayoría de entidades.
Ejemplo: Entity Metadata Wrapper
function commerce_line_items_quantity($line_items, $type = '') {
  // Sum up the quantity of all matching line items.
  $quantity = 0;

    foreach ($line_items as $line_item) {
      if (!is_a($line_item, 'EntityMetadataWrapper')) {
        $line_item = entity_metadata_wrapper('commerce_line_item',
            $line_item);
      }

        if (empty($type) || $line_item->type->value() == $type) {
          $quantity += $line_item->quantity->value();
        }
    }

    return $quantity;
}
Field API
●   Parte del módulo de CCK se ha refactorizado y
    es ahora el Field API de Drupal 7.
●   Los nuevos campos generados por Field API se
    pueden adjuntar a cualquier entidad que tenga la
    propiedad fieldable.
●   Se ha facilitado en gran medida la forma de crear
    campos personalizados y se han añadido y
    estandarizado gran cantidad de nuevas
    opciones.
Extendiendo el Field API
 Field API incorpora gran cantidad de hooks,
 ejemplos curiosos:
 ●   hook_field_attach_* - controlan los formularios y
     acciones cuando un campo se adjunta a una
     entidad (y operaciones CRUD).
 ●   hook_field_storage_* - controlan la forma en la que
     se almacena el campo (NoSQL?)
 ●   hook_field_extra_fields* - Permiten exponer
     “pseudo campos” en las entidades.
Interfaz de usuario basada en Views


    Drupal Commerce carece de pantallas de
    administración y gestión propias, todos los
 listados se basan en el módulo Views 3 y son
     totalmente configurables... y opcionales.
Novedades de Views 3
    “Todo” se convierte       Interfaz reconstruida
    en un plugin de           totalmente.
    CTools.               ●   Filtros Contextuales.
●   Query Backend.        ●   Semantic Views.
●   Traducción.           ●   Exposed Sorts.
●   Areas: Header,        ●   Más usable.
    Footer, Empty text.
Product References, Prices...
    Drupal Commerce hace un uso extensivo del nuevo
    Field API.
●   Los productos se relacionan con los “Product
    Displays” a través de un campo “Product Reference”
●   Los pedidos se relacionan con las líneas de pedido a
    través de un campo “Line item Reference”.
●   El formulario de añadir al carrito es un Display
    Formatter de un campo de tipo precio.
“Add to cart” como Formatter




    http://demo.commerceguys.com/dc/catalog/wearables/e-commerce-drupal
Perfiles de usuario extensibles
●   Los perfiles de usuario o “Customer Profiles” son
    entidades a las que se les puede añadir campos.
●   Se asocian a cada usuario que hace una compra.
●   La base de los perfiles de usuario es el nuevo tipo de
    campo dirección, AddressField.
●   Además de la dirección, el perfil de usuario puede
    contener cualquier información, NIF, Teléfono, que se
    puede añadir desde interfaz.
Addressfield
    “Este módulo solo hace una cosa, pero la hace bien:
    Almacena direcciones postales internacionales”
●   Provee soporte de direcciones para los
    customer profiles de Commerce.
●   Módulo para Drupal 7 que almacena
    direcciones postales en el formato estándar
    xNAL (Usado por google maps para
    geocoding).
Workflow con Rules
  Si el interfaz de Drupal Commerce está basado
  en Views, todas las opciones de flujo de trabajo
                 se basan en Rules.
  Modificaciones de precios como descuentos o
impuestos están basados en Rules y por ello son
  totalmente configurables, lo mismo pasa con el
 checkout, el proceso de pago y customer profiles
Rules para Drupal 7
    Rules 2.x para Drupal 7 es una reescritura de
    Rules para Drupal 6, tanto en interfaz como en
    proceso, ya que se basa totalmente en Entity
    API.
●   Loops en Rules.
●   Rules scheduler.
●   “Entity agnostic”
Sistema de pagos transaccional
Un ejemplo de Rules y Entities en Drupal
Commerce es el sistema de pagos por
transacciones.
Los pagos quedan registrados en una entidades
llamadas Payment Transactions que registran el
balance de compra a través de Rules, es decir, el
método de pago es una Rule.
Se pueden lanzar acciones de Rules adicionales
antes/después de los pagos.
Novedades de Form API
●   #states                    ●   Vertical Tabs
●   #ajax                      ●   machine_name
●   #attached                  ●   tableselect
●   hook_form_alter()          ●   managed_file
    desde plantilla            ●   Elementos HTML5 a
●   #title_display                 través del módulo
●   #limit_validation_errors       Elements
Commerce “sin” javascript propio
Drupal Commerce apenas tiene unas pocas líneas de js
propio, se apoya en gran medida en #states y #ajax
$form['attributes'][$field_name] = array(
   '#type' => 'select',
   '#title' => check_plain($data['instance']['label']),
   '#options' => array_intersect_key($data['options'],
          drupal_map_assoc($used_options[$field_name])),
   '#default_value' => $default_product_wrapper->{$field_name}
          ->value(),
   '#weight' => $data['instance']['widget']['weight'],
   '#ajax' => array(
       'callback' =>
          'commerce_cart_add_to_cart_form_attributes_refresh',
              ),
);
Capa de abstracción de BBDD
El proyecto DBTNG ha reformado la capa de abstracción
de Drupal para acercarla a un modelo OOP.
 $result = db_query("SELECT n.nid, u.name
                     FROM {node} n
                     WHERE n.type = '%s'
                     AND n.status = %d",
                                            Drupal 6
           array('page', 1));

  $product_count = db_select('commerce_product', 'cp')
    ->fields('cp', array('product_id'))
    ->countQuery()
    ->execute()
                                               Drupal    7
    ->fetchField();
Tests unitarios y de integración
Drupal 7 incorpora el módulo Simpletest en su
núcleo y tiene unit testing e integration testing
en todos los componentes por defecto.
Drupal Commerce incorpora integration testing
para todos sus componentes y empieza a integrar
unit testing.
Tener los elementos verificados proporciona
seguridad y calidad en los componentes.
Recursos Drupal 7
 ●   Artículo sobre Entities: parte 1, 2 y 3.
 ●   Ejemplo de EntityFieldQuery.
 ●   Presentación de Fago sobre Entity API.
 ●   Documentación oficial de Field API.
 ●   Roadmap de Views 3.
 ●   Videocasts sobre Rules de NodeOne.
 ●   Forms API Reference.
Recursos Drupal Commerce
 http://www.drupalcommerce.org
 http://drupal.org/project/commerce
 http://drupal.org/project/commerce_kickstart
 http://www.commerceguys.com/resources
 http://twitter.com/drupalcommerce
¿Preguntas?

●   @pcambra
●   cambrico.net
●   Perfil en Drupal.org
¡Muchas gracias!

Más contenido relacionado

Similar a Drupal 7 a través Drupal Commerce

DOCUMENTACION CDS Y ABAP RAP.docx
DOCUMENTACION CDS Y ABAP RAP.docxDOCUMENTACION CDS Y ABAP RAP.docx
DOCUMENTACION CDS Y ABAP RAP.docxNONES2
 
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)lenny
 
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)INSIGNIA4U
 
IntroduccióN A Sql Server 2005
IntroduccióN A Sql Server 2005IntroduccióN A Sql Server 2005
IntroduccióN A Sql Server 2005oswchavez
 
Framework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netFramework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netAntonio Palomares Sender
 
Ejemplo arquitectura 3 capas con access
Ejemplo arquitectura 3 capas con accessEjemplo arquitectura 3 capas con access
Ejemplo arquitectura 3 capas con accessuniv of pamplona
 
Comercio Electrónico con Drupal y Ubercart
Comercio Electrónico con Drupal y UbercartComercio Electrónico con Drupal y Ubercart
Comercio Electrónico con Drupal y UbercartSEAT, S.A.
 
Exposicion Akelos
Exposicion AkelosExposicion Akelos
Exposicion Akelosdokeosla
 
PROYECTO DE TESIS SISTEMA INTEGRAL DE COMPRA Y VENTA
PROYECTO DE TESIS SISTEMA INTEGRAL DE COMPRA Y VENTAPROYECTO DE TESIS SISTEMA INTEGRAL DE COMPRA Y VENTA
PROYECTO DE TESIS SISTEMA INTEGRAL DE COMPRA Y VENTARoyer Tuesta Salas
 
UBERCART UTVT E4
UBERCART UTVT E4UBERCART UTVT E4
UBERCART UTVT E4IsviLerma
 
6.android introduccion
6.android   introduccion   6.android   introduccion
6.android introduccion guidotic
 
Open erp presentacion_olivier_jornadas_bilbao2010
Open erp presentacion_olivier_jornadas_bilbao2010Open erp presentacion_olivier_jornadas_bilbao2010
Open erp presentacion_olivier_jornadas_bilbao2010openerpsite
 
El universo JavaScript en Drupal 7
El universo JavaScript en Drupal 7El universo JavaScript en Drupal 7
El universo JavaScript en Drupal 7Ymbra
 

Similar a Drupal 7 a través Drupal Commerce (20)

DOCUMENTACION CDS Y ABAP RAP.docx
DOCUMENTACION CDS Y ABAP RAP.docxDOCUMENTACION CDS Y ABAP RAP.docx
DOCUMENTACION CDS Y ABAP RAP.docx
 
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)
 
IntroduccióN A Sql Server 2005
IntroduccióN A Sql Server 2005IntroduccióN A Sql Server 2005
IntroduccióN A Sql Server 2005
 
Framework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netFramework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .net
 
MODELO VISTA CONTROLADOR EN PHP
MODELO VISTA CONTROLADOR EN PHPMODELO VISTA CONTROLADOR EN PHP
MODELO VISTA CONTROLADOR EN PHP
 
Ejemplo arquitectura 3 capas con access
Ejemplo arquitectura 3 capas con accessEjemplo arquitectura 3 capas con access
Ejemplo arquitectura 3 capas con access
 
Servicios web
Servicios webServicios web
Servicios web
 
Comercio Electrónico con Drupal y Ubercart
Comercio Electrónico con Drupal y UbercartComercio Electrónico con Drupal y Ubercart
Comercio Electrónico con Drupal y Ubercart
 
Commercio electronico con Drupal
Commercio electronico con DrupalCommercio electronico con Drupal
Commercio electronico con Drupal
 
Exposicion Akelos
Exposicion AkelosExposicion Akelos
Exposicion Akelos
 
Presentación líneas aéreas birchman
Presentación líneas aéreas birchmanPresentación líneas aéreas birchman
Presentación líneas aéreas birchman
 
Angular Conceptos Practicos 1
Angular Conceptos Practicos 1Angular Conceptos Practicos 1
Angular Conceptos Practicos 1
 
PROYECTO DE TESIS SISTEMA INTEGRAL DE COMPRA Y VENTA
PROYECTO DE TESIS SISTEMA INTEGRAL DE COMPRA Y VENTAPROYECTO DE TESIS SISTEMA INTEGRAL DE COMPRA Y VENTA
PROYECTO DE TESIS SISTEMA INTEGRAL DE COMPRA Y VENTA
 
Semana 4 Estructura y componentes SPA
Semana 4  Estructura y componentes SPASemana 4  Estructura y componentes SPA
Semana 4 Estructura y componentes SPA
 
UBERCART UTVT E4
UBERCART UTVT E4UBERCART UTVT E4
UBERCART UTVT E4
 
6.android introduccion
6.android   introduccion   6.android   introduccion
6.android introduccion
 
Open erp presentacion_olivier_jornadas_bilbao2010
Open erp presentacion_olivier_jornadas_bilbao2010Open erp presentacion_olivier_jornadas_bilbao2010
Open erp presentacion_olivier_jornadas_bilbao2010
 
El universo JavaScript en Drupal 7
El universo JavaScript en Drupal 7El universo JavaScript en Drupal 7
El universo JavaScript en Drupal 7
 
Cliente/Servidor
Cliente/ServidorCliente/Servidor
Cliente/Servidor
 

Más de Pedro Cambra

Introduction to drupal
Introduction to drupalIntroduction to drupal
Introduction to drupalPedro Cambra
 
Further Resources - Drupal training
Further Resources - Drupal trainingFurther Resources - Drupal training
Further Resources - Drupal trainingPedro Cambra
 
Contributions: what they are and how to find them
Contributions: what they are and how to find themContributions: what they are and how to find them
Contributions: what they are and how to find themPedro Cambra
 
Drupal Commerce: Presente y futuro del comercio electrónico con Drupal
Drupal Commerce: Presente y futuro del comercio electrónico con DrupalDrupal Commerce: Presente y futuro del comercio electrónico con Drupal
Drupal Commerce: Presente y futuro del comercio electrónico con DrupalPedro Cambra
 
Drupal Commerce: A perfect match for your e-commerce needs
Drupal Commerce: A perfect match for your e-commerce needsDrupal Commerce: A perfect match for your e-commerce needs
Drupal Commerce: A perfect match for your e-commerce needsPedro Cambra
 
Distribuciones drupal
Distribuciones drupalDistribuciones drupal
Distribuciones drupalPedro Cambra
 
Drupal Commerce contributed modules overview
Drupal Commerce contributed modules overviewDrupal Commerce contributed modules overview
Drupal Commerce contributed modules overviewPedro Cambra
 
Import and synchronize Drupal commerce content using Commerce feeds
Import and synchronize Drupal commerce content using Commerce feedsImport and synchronize Drupal commerce content using Commerce feeds
Import and synchronize Drupal commerce content using Commerce feedsPedro Cambra
 
DrupalCommerce Lisbon presentation
DrupalCommerce Lisbon presentationDrupalCommerce Lisbon presentation
DrupalCommerce Lisbon presentationPedro Cambra
 
Introduccion técnica a Drupal
Introduccion técnica a DrupalIntroduccion técnica a Drupal
Introduccion técnica a DrupalPedro Cambra
 
Introducción general a Drupal
Introducción general a DrupalIntroducción general a Drupal
Introducción general a DrupalPedro Cambra
 
Programacion basica de módulos
Programacion basica de módulosProgramacion basica de módulos
Programacion basica de módulosPedro Cambra
 
Comercio electrónico con drupal
Comercio electrónico con drupalComercio electrónico con drupal
Comercio electrónico con drupalPedro Cambra
 
Presentacion Drupal Ccrtv
Presentacion Drupal CcrtvPresentacion Drupal Ccrtv
Presentacion Drupal CcrtvPedro Cambra
 

Más de Pedro Cambra (16)

Introduction to drupal
Introduction to drupalIntroduction to drupal
Introduction to drupal
 
Further Resources - Drupal training
Further Resources - Drupal trainingFurther Resources - Drupal training
Further Resources - Drupal training
 
Contributions: what they are and how to find them
Contributions: what they are and how to find themContributions: what they are and how to find them
Contributions: what they are and how to find them
 
Drupal Themes
Drupal ThemesDrupal Themes
Drupal Themes
 
Drupal Commerce: Presente y futuro del comercio electrónico con Drupal
Drupal Commerce: Presente y futuro del comercio electrónico con DrupalDrupal Commerce: Presente y futuro del comercio electrónico con Drupal
Drupal Commerce: Presente y futuro del comercio electrónico con Drupal
 
Drupal Commerce: A perfect match for your e-commerce needs
Drupal Commerce: A perfect match for your e-commerce needsDrupal Commerce: A perfect match for your e-commerce needs
Drupal Commerce: A perfect match for your e-commerce needs
 
Distribuciones drupal
Distribuciones drupalDistribuciones drupal
Distribuciones drupal
 
Drupal Commerce contributed modules overview
Drupal Commerce contributed modules overviewDrupal Commerce contributed modules overview
Drupal Commerce contributed modules overview
 
Import and synchronize Drupal commerce content using Commerce feeds
Import and synchronize Drupal commerce content using Commerce feedsImport and synchronize Drupal commerce content using Commerce feeds
Import and synchronize Drupal commerce content using Commerce feeds
 
DrupalCommerce Lisbon presentation
DrupalCommerce Lisbon presentationDrupalCommerce Lisbon presentation
DrupalCommerce Lisbon presentation
 
Drupal commerce
Drupal commerceDrupal commerce
Drupal commerce
 
Introduccion técnica a Drupal
Introduccion técnica a DrupalIntroduccion técnica a Drupal
Introduccion técnica a Drupal
 
Introducción general a Drupal
Introducción general a DrupalIntroducción general a Drupal
Introducción general a Drupal
 
Programacion basica de módulos
Programacion basica de módulosProgramacion basica de módulos
Programacion basica de módulos
 
Comercio electrónico con drupal
Comercio electrónico con drupalComercio electrónico con drupal
Comercio electrónico con drupal
 
Presentacion Drupal Ccrtv
Presentacion Drupal CcrtvPresentacion Drupal Ccrtv
Presentacion Drupal Ccrtv
 

Último

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
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 JUNITMaricarmen Sánchez Ruiz
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 

Último (15)

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.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
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 

Drupal 7 a través Drupal Commerce

  • 1. Drupal 7 visto a través de Drupal Commerce
  • 2. ¿Qué es Drupal Commerce? Drupal Commerce es un nuevo framework de comercio electrónico desarrollado de forma nativa para Drupal 7 con el objetivo de hacer de Drupal un referente en el mundo del ecommerce open source.
  • 3. Componentes de Commerce Product Price Order Product reference Line item Line item Customer profile reference reference (Node) Payment Customer transaction profile
  • 4. Separación de Producto y Display Los productos están separados en una parte de display (nodos) y una nueva entidad “product” que se relacionan a través de un campo “product reference”. Esto supone una gran ventaja de cara a la arquitectura y flexibilidad pero la usabilidad por defecto se ve afectada.
  • 5. Extensiones disponibles ● Migración: Commerce Feeds, Commerce Migrate ● Usabilidad: Commerce Product Display Manager. ● Utilidades: Commerce File, Commerce Coupon, Commerce Google Analytics, Commerce Stock, Commerce Shipping ● Pago: Commerce Paypal, Commerce Sermepa Más: http://www.drupalcommerce.org/contrib
  • 6. Ejemplos de tiendas con Commerce Más: http://www.drupalcommerce.org/showcase
  • 8. Concepto de Entity Las entidades añaden una nueva capa de abstracción basada en objetos sobre los datos que permite que todo el contenido comparta API y workflow Nodos, usuarios, términos de taxonomía, vocabularios, comentarios, ficheros... son ahora entidades “Everything is a node” vs “Nodes are entities too”
  • 9. Ejemplo #1: Entity Controllers class CommerceProductEntityController extends DrupalCommerceEntityController { (..) public function create(array $values = array()) { return (object) ($values + array( 'product_id' => '', 'is_new' => TRUE, 'sku' => '', 'title' => '', 'uid' => '', 'status' => 1, 'created' => '', 'changed' => '', )); } (..) }
  • 10. Ejemplo #2: EntityFieldQuery function commerce_product_reference_commerce_product_can_delete($product) { // Use EntityFieldQuery to look for line items referencing this // product and do not allow the delete to occur if one exists. $query = new EntityFieldQuery(); $query ->entityCondition('entity_type', 'commerce_line_item', '=') ->entityCondition('bundle', 'product', '=') ->fieldCondition('product', 'product_id', $product->product_id, '=') ->count(); return $query->execute() > 0 ? FALSE : TRUE; }
  • 11. Entities como base de Commerce ● Entidades en Drupal Commerce: Orders, Products, Line items, Transactions, Profiles. ● La capacidad de añadir campos a entidades (propiedad fieldable) permite extenderlas con diferentes datos asociados. ● Es posible definir otras entidades para casos concretos, por ejemplo Commerce Delivery o Commerce Shipping
  • 12. Entity API ● El módulo Entity API se crea para facilitar el acceso a las entidades y para rellenar los huecos que le faltan al core de Drupal. ● Añade elementos muy interesantes como las propiedades, exportables, interfaz de administración o los metadata wrappers ● También proporciona un controlador de CRUD estándar para la mayoría de entidades.
  • 13. Ejemplo: Entity Metadata Wrapper function commerce_line_items_quantity($line_items, $type = '') { // Sum up the quantity of all matching line items. $quantity = 0; foreach ($line_items as $line_item) { if (!is_a($line_item, 'EntityMetadataWrapper')) { $line_item = entity_metadata_wrapper('commerce_line_item', $line_item); } if (empty($type) || $line_item->type->value() == $type) { $quantity += $line_item->quantity->value(); } } return $quantity; }
  • 14. Field API ● Parte del módulo de CCK se ha refactorizado y es ahora el Field API de Drupal 7. ● Los nuevos campos generados por Field API se pueden adjuntar a cualquier entidad que tenga la propiedad fieldable. ● Se ha facilitado en gran medida la forma de crear campos personalizados y se han añadido y estandarizado gran cantidad de nuevas opciones.
  • 15. Extendiendo el Field API Field API incorpora gran cantidad de hooks, ejemplos curiosos: ● hook_field_attach_* - controlan los formularios y acciones cuando un campo se adjunta a una entidad (y operaciones CRUD). ● hook_field_storage_* - controlan la forma en la que se almacena el campo (NoSQL?) ● hook_field_extra_fields* - Permiten exponer “pseudo campos” en las entidades.
  • 16. Interfaz de usuario basada en Views Drupal Commerce carece de pantallas de administración y gestión propias, todos los listados se basan en el módulo Views 3 y son totalmente configurables... y opcionales.
  • 17. Novedades de Views 3 “Todo” se convierte Interfaz reconstruida en un plugin de totalmente. CTools. ● Filtros Contextuales. ● Query Backend. ● Semantic Views. ● Traducción. ● Exposed Sorts. ● Areas: Header, ● Más usable. Footer, Empty text.
  • 18. Product References, Prices... Drupal Commerce hace un uso extensivo del nuevo Field API. ● Los productos se relacionan con los “Product Displays” a través de un campo “Product Reference” ● Los pedidos se relacionan con las líneas de pedido a través de un campo “Line item Reference”. ● El formulario de añadir al carrito es un Display Formatter de un campo de tipo precio.
  • 19. “Add to cart” como Formatter http://demo.commerceguys.com/dc/catalog/wearables/e-commerce-drupal
  • 20. Perfiles de usuario extensibles ● Los perfiles de usuario o “Customer Profiles” son entidades a las que se les puede añadir campos. ● Se asocian a cada usuario que hace una compra. ● La base de los perfiles de usuario es el nuevo tipo de campo dirección, AddressField. ● Además de la dirección, el perfil de usuario puede contener cualquier información, NIF, Teléfono, que se puede añadir desde interfaz.
  • 21. Addressfield “Este módulo solo hace una cosa, pero la hace bien: Almacena direcciones postales internacionales” ● Provee soporte de direcciones para los customer profiles de Commerce. ● Módulo para Drupal 7 que almacena direcciones postales en el formato estándar xNAL (Usado por google maps para geocoding).
  • 22. Workflow con Rules Si el interfaz de Drupal Commerce está basado en Views, todas las opciones de flujo de trabajo se basan en Rules. Modificaciones de precios como descuentos o impuestos están basados en Rules y por ello son totalmente configurables, lo mismo pasa con el checkout, el proceso de pago y customer profiles
  • 23. Rules para Drupal 7 Rules 2.x para Drupal 7 es una reescritura de Rules para Drupal 6, tanto en interfaz como en proceso, ya que se basa totalmente en Entity API. ● Loops en Rules. ● Rules scheduler. ● “Entity agnostic”
  • 24. Sistema de pagos transaccional Un ejemplo de Rules y Entities en Drupal Commerce es el sistema de pagos por transacciones. Los pagos quedan registrados en una entidades llamadas Payment Transactions que registran el balance de compra a través de Rules, es decir, el método de pago es una Rule. Se pueden lanzar acciones de Rules adicionales antes/después de los pagos.
  • 25. Novedades de Form API ● #states ● Vertical Tabs ● #ajax ● machine_name ● #attached ● tableselect ● hook_form_alter() ● managed_file desde plantilla ● Elementos HTML5 a ● #title_display través del módulo ● #limit_validation_errors Elements
  • 26. Commerce “sin” javascript propio Drupal Commerce apenas tiene unas pocas líneas de js propio, se apoya en gran medida en #states y #ajax $form['attributes'][$field_name] = array( '#type' => 'select', '#title' => check_plain($data['instance']['label']), '#options' => array_intersect_key($data['options'], drupal_map_assoc($used_options[$field_name])), '#default_value' => $default_product_wrapper->{$field_name} ->value(), '#weight' => $data['instance']['widget']['weight'], '#ajax' => array( 'callback' => 'commerce_cart_add_to_cart_form_attributes_refresh', ), );
  • 27. Capa de abstracción de BBDD El proyecto DBTNG ha reformado la capa de abstracción de Drupal para acercarla a un modelo OOP. $result = db_query("SELECT n.nid, u.name FROM {node} n WHERE n.type = '%s' AND n.status = %d", Drupal 6 array('page', 1)); $product_count = db_select('commerce_product', 'cp') ->fields('cp', array('product_id')) ->countQuery() ->execute() Drupal 7 ->fetchField();
  • 28. Tests unitarios y de integración Drupal 7 incorpora el módulo Simpletest en su núcleo y tiene unit testing e integration testing en todos los componentes por defecto. Drupal Commerce incorpora integration testing para todos sus componentes y empieza a integrar unit testing. Tener los elementos verificados proporciona seguridad y calidad en los componentes.
  • 29. Recursos Drupal 7 ● Artículo sobre Entities: parte 1, 2 y 3. ● Ejemplo de EntityFieldQuery. ● Presentación de Fago sobre Entity API. ● Documentación oficial de Field API. ● Roadmap de Views 3. ● Videocasts sobre Rules de NodeOne. ● Forms API Reference.
  • 30. Recursos Drupal Commerce http://www.drupalcommerce.org http://drupal.org/project/commerce http://drupal.org/project/commerce_kickstart http://www.commerceguys.com/resources http://twitter.com/drupalcommerce
  • 31. ¿Preguntas? ● @pcambra ● cambrico.net ● Perfil en Drupal.org