SlideShare una empresa de Scribd logo
Entities en D7
MADs about Drupal   07/02/2013
Resumen



● ¿Qué es una entidad?

● ¿Cómo trabajar con entidades?

● ¿Cómo crear nuevas entidades?
Resumen



● ¿Qué es una entidad?

● ¿Cómo trabajar con entidades?

● ¿Cómo crear nuevas entidades?


         Entity API
Entities
● Unidades de información

● Definidas en el core de Drupal

● Pueden permitir el uso de fields

● En el core:
nodes, users, taxonomy terms, vocabularies,
comments, files
Además...
● Ofrecen métodos básicos
  entity_load(), entity_label(), entity_uri()

● View modes
  Diferentes visualizaciones (full, teaser...)
● Varios hooks:
  hook_entity_load(), hook_entity_presave(),
  hook_entity_insert(), hook_entity_update(),
  hook_entity_delete(), hook_entity_prepare_view(),
  hook_entity_view().
Fields
● Entities pueden contener fields


● Es posible definir bundles y revisions

   ○ Default bundle == entity type
   ○ Tipos de contenido para nodes, vocabularios para
     terms
● Un bundle define que fields contiene una
  entity
EntityFieldQuery
● API para hacer queries sobre entities
  ○ Acepta condiciones tanto a nivel de entity como a
    nivel de field
  ○ Acepta queries que afecten a distintos tipos de entity

  entityCondition()
  propertyCondition()
  fieldCondition()
  fieldLanguageCondition()
  ...
Entity API
● Módulo casi indispensable

● Añade nuevos hooks y funcionalidades
  ○ Facilita el manejo de entities
  ○ Facilita la creación de nuevos entity types
funciones
● entity_load(), entity_save(), entity_create(),
  entity_delete()
● entity_view(), entity_access(), entity_label(),
  entity_uri()
● entity_id(), entity_extract_ids()
● entity_export(), entity_import()
● entity_get_info(), entity_get_property_info()


  core
funciones
● entity_load(), entity_save(), entity_create(),
  entity_delete()
● entity_view(), entity_access(), entity_label(),
  entity_uri()
● entity_id(), entity_extract_ids()
● entity_export(), entity_import()
● entity_get_info(), entity_get_property_info()


  core              Entity API
hook_entity_property_info
● Permite definir a los módulos propiedades
  de las entities
● Se utiliza para posteriormente utilizar los
  metadatos correspondientes
● Incluye métodos como setter, getter, o
  permisos de acceso
Entity metadata wrappers
● Clases realmente útiles que permiten un acceso
   sencillo y unificado a las entities y sus fields o
   properties
   $wrapper = entity_metadata_wrapper('node', $node);
   $wrapper = entity_metadata_wrapper('node', $nid);
   $wrapper->author->profile->field_name->value();
   $wrapper->author->profile->field_name->set('New name');
   $wrapper->language('de')->body->summary->value();
   $wrapper->author->mail->access('edit') ? TRUE : FALSE;
   $wrapper->author->roles->optionsList();
   $wrapper->field_files[0]->description = 'The first file';
   $wrapper->save();
   $node = $wrapper->value();
Crear nuevos entity types (Entity API)
● Implementar hook_entity_info()

● Especificar clase controller
   ○ Usar EntityAPIController ahorra trabajo
   ○ Definir schema mediante hook_schema()

● Buenas prácticas:
   ○ Crear {entity_type}_load(), {entity_type}_create(),
     {entity_type}_delete(), {entity_type}_save()
EntityAPIController
● Invoca los hooks CRUD de forma
  automática

● Soporta entities basadas en clases
● Usar clases facilita las cosas:
  ○ Personalizando etiquetas, URLs, guardando...
  ○ Resulta útil:
    ■ $entity->entityType();
    ■ $entity->identifier();
    ■ $entity->view();
    ■ $entity->delete();
    ■ $entity->save();
    ■ ...
Entity API & Fields
● Sólo es necesario declarar la entity como "fieldable"
● entity_view() ya incluye los fields
● Facilita la gestión de bundles
  ○ Generear nuevo entity type para los bundles
  ○ Indicar que la nueva entity es "bundle of" la principal
  ○ Field API es invocada e incluida de forma
     automática

Ej: Módulo Profile proporciona 2 tipos Profile y Profile type
Entity API & Export
● Especificar el entity type como exportable

● $export = entity_export($entity_type,
  $entity);
● $entity = entity_import($entity_type,
  $export);

● Por defecto exporta en formato JSON
Integración con otros módulos
● Entity API permite integrar con otros
  módulos
  ○ Features gracias a los exportables

  ○ Integración básica con Views

  ○ Rules events

  ○ Token support mediante el módulo Entity tokens
Entity API Admin UI
● Se activa mediante hook_entity_info()


● Se puede personalizar sobreescribiendo el
  Controller


● Se adapta bien para gestionar bundle
  entities
Recursos
● Código fuente con los ejemplos
    ○ https://github.com/plopesc/entity_workshop
●   Código original del módulo example_task
    ○ http://www.trellon.com/content/blog/creating-own-entities-entity-api
●   Presentaciones relacionadas
    ○ http://bxl2011.drupaldays.org/bxl2011.drupaldays.org/node/313.html
    ○ http://www.slideshare.net/jdleonard/drupal-7-entities
●   Documentación Drupal.org
    ○ http://drupal.org/node/1260694
    ○ http://drupal.org/node/1343708
Recursos
Módulos contrib comentados en la sesión
● Entity API
    ○ http://drupal.org/project/entity
●   Entity View Modes
    ○ http://drupal.org/project/entity_view_mode
●   EntityFieldQuery Views Backend
    ○ http://drupal.org/project/efq_views
●   Entity Construction Kit
    ○ http://drupal.org/project/eck
Gracias

Más contenido relacionado

PDF
Intro aplicaciones web con php
ODP
Introduccion a j_query
PPTX
programacion para la web (Dom)
PDF
Procesar estado
PDF
Drupal7 para desarrolladores
ODP
JSR354: Moneda y Dinero
PDF
jQuery
PPT
Mv vol2 ver5.0(corregido)
Intro aplicaciones web con php
Introduccion a j_query
programacion para la web (Dom)
Procesar estado
Drupal7 para desarrolladores
JSR354: Moneda y Dinero
jQuery
Mv vol2 ver5.0(corregido)

La actualidad más candente (6)

PPTX
Objetos implícitos
PPTX
Entity Framework Core - Mappings
PPTX
Constructores
 
ODP
Introducción a JQuery
PPT
Charla Jquery
PPT
2.android java
Objetos implícitos
Entity Framework Core - Mappings
Constructores
 
Introducción a JQuery
Charla Jquery
2.android java
Publicidad

Destacado (6)

PDF
1970 systematic of the lizards of the gekkonid genus phyllodactylus
PDF
Get on with Field API
PPTX
Ejercicio numeración y viñetas
PDF
Drupal 8: Fields reborn
PPT
Lin_Dennis observing
1970 systematic of the lizards of the gekkonid genus phyllodactylus
Get on with Field API
Ejercicio numeración y viñetas
Drupal 8: Fields reborn
Lin_Dennis observing
Publicidad

Similar a MADs about Drupal: Programación de entities para D7 (20)

PDF
Drupal 7 a través Drupal Commerce
PPTX
Entidades en drupal 8
PDF
Entidades en drupal 8
PPTX
Arquitectura de una Apis Rest en C.pptx
PDF
Introduccion a Doctrine 2 ORM
PDF
Drupal8 : novedades y nuevas funcionalidades
PDF
Drupal 7: mucho más que una nueva versión (para desarrolladores)
PPTX
Capitulo_3_1.pptx
DOCX
Modelo de clientes en MDM s, CRMs y ERPs
PPTX
Germán Peraferrer: Cormo Framework
PPTX
Cormo Framework
PPTX
Unience para Isban 23/04/2009
PDF
xAPI + LRS + Drupal - Midiendo para mejorar
PPTX
PDF
Qué puede aprender Drupal de Plone
PPT
CursoFundeweb2-basico (1).ppt
PPT
CursoFundeweb2-basico.ppt
PDF
Todo lo que necesitas saber sobre Drupal 8
ODP
Documertar APIs - Meetup.js
ODP
Desarrollo de aplicaciones Web con PHP - Flisol 2011
Drupal 7 a través Drupal Commerce
Entidades en drupal 8
Entidades en drupal 8
Arquitectura de una Apis Rest en C.pptx
Introduccion a Doctrine 2 ORM
Drupal8 : novedades y nuevas funcionalidades
Drupal 7: mucho más que una nueva versión (para desarrolladores)
Capitulo_3_1.pptx
Modelo de clientes en MDM s, CRMs y ERPs
Germán Peraferrer: Cormo Framework
Cormo Framework
Unience para Isban 23/04/2009
xAPI + LRS + Drupal - Midiendo para mejorar
Qué puede aprender Drupal de Plone
CursoFundeweb2-basico (1).ppt
CursoFundeweb2-basico.ppt
Todo lo que necesitas saber sobre Drupal 8
Documertar APIs - Meetup.js
Desarrollo de aplicaciones Web con PHP - Flisol 2011

Más de Pablo López Escobés (9)

PPTX
When Drupal met CARTO
PDF
API como SaaS
PDF
Poniendo a drupal en el mapa
PDF
Integración de APIs políglotas de mapas en Google Web Toolkit: IDELabMapstrac...
PDF
Definición e implementación de soluciones basadas en APIs universales para la...
PDF
Geohabilitación de gestores contenidos: CMSMap
PDF
IDELab MapstractionInteractive: API Universal y Políglota
PDF
Drupal & GIS: Convirtiendo Drupal en un GeoCMS
When Drupal met CARTO
API como SaaS
Poniendo a drupal en el mapa
Integración de APIs políglotas de mapas en Google Web Toolkit: IDELabMapstrac...
Definición e implementación de soluciones basadas en APIs universales para la...
Geohabilitación de gestores contenidos: CMSMap
IDELab MapstractionInteractive: API Universal y Políglota
Drupal & GIS: Convirtiendo Drupal en un GeoCMS

Último (20)

PPTX
Administración se srevidores de apliaciones
PDF
Temas y subtemas de las fichas 1 y 2.pdf
PDF
SAP Transportation Management para LSP, TM140 Col18
PDF
ACTIVIDAD 2.pdf j
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PDF
Calidad desde el Docente y la mejora continua .pdf
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
diagrama de pareto.pdf valerie giraldo diaz
PDF
Estrategia de apoyo tecnología grado 9-3
PPTX
Introduccion a servidores de Aplicaciones (1).pptx
PDF
Influencia-del-uso-de-redes-sociales.pdf
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PPT
Que son las redes de computadores y sus partes
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PPTX
Yogurt de tocosh (1).pptx preparacion receta
PDF
La electricidad y la electrónica .pdf n
PDF
Aristoteles-y-su-forma-de-entender-el-conocimiento-y-las-personas.pdf
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Administración se srevidores de apliaciones
Temas y subtemas de las fichas 1 y 2.pdf
SAP Transportation Management para LSP, TM140 Col18
ACTIVIDAD 2.pdf j
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Calidad desde el Docente y la mejora continua .pdf
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
diagrama de pareto.pdf valerie giraldo diaz
Estrategia de apoyo tecnología grado 9-3
Introduccion a servidores de Aplicaciones (1).pptx
Influencia-del-uso-de-redes-sociales.pdf
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Que son las redes de computadores y sus partes
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Yogurt de tocosh (1).pptx preparacion receta
La electricidad y la electrónica .pdf n
Aristoteles-y-su-forma-de-entender-el-conocimiento-y-las-personas.pdf
Plantilla para Diseño de Narrativas Transmedia.pdf
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx

MADs about Drupal: Programación de entities para D7

  • 1. Entities en D7 MADs about Drupal 07/02/2013
  • 2. Resumen ● ¿Qué es una entidad? ● ¿Cómo trabajar con entidades? ● ¿Cómo crear nuevas entidades?
  • 3. Resumen ● ¿Qué es una entidad? ● ¿Cómo trabajar con entidades? ● ¿Cómo crear nuevas entidades? Entity API
  • 4. Entities ● Unidades de información ● Definidas en el core de Drupal ● Pueden permitir el uso de fields ● En el core: nodes, users, taxonomy terms, vocabularies, comments, files
  • 5. Además... ● Ofrecen métodos básicos entity_load(), entity_label(), entity_uri() ● View modes Diferentes visualizaciones (full, teaser...) ● Varios hooks: hook_entity_load(), hook_entity_presave(), hook_entity_insert(), hook_entity_update(), hook_entity_delete(), hook_entity_prepare_view(), hook_entity_view().
  • 6. Fields ● Entities pueden contener fields ● Es posible definir bundles y revisions ○ Default bundle == entity type ○ Tipos de contenido para nodes, vocabularios para terms ● Un bundle define que fields contiene una entity
  • 7. EntityFieldQuery ● API para hacer queries sobre entities ○ Acepta condiciones tanto a nivel de entity como a nivel de field ○ Acepta queries que afecten a distintos tipos de entity entityCondition() propertyCondition() fieldCondition() fieldLanguageCondition() ...
  • 8. Entity API ● Módulo casi indispensable ● Añade nuevos hooks y funcionalidades ○ Facilita el manejo de entities ○ Facilita la creación de nuevos entity types
  • 9. funciones ● entity_load(), entity_save(), entity_create(), entity_delete() ● entity_view(), entity_access(), entity_label(), entity_uri() ● entity_id(), entity_extract_ids() ● entity_export(), entity_import() ● entity_get_info(), entity_get_property_info() core
  • 10. funciones ● entity_load(), entity_save(), entity_create(), entity_delete() ● entity_view(), entity_access(), entity_label(), entity_uri() ● entity_id(), entity_extract_ids() ● entity_export(), entity_import() ● entity_get_info(), entity_get_property_info() core Entity API
  • 11. hook_entity_property_info ● Permite definir a los módulos propiedades de las entities ● Se utiliza para posteriormente utilizar los metadatos correspondientes ● Incluye métodos como setter, getter, o permisos de acceso
  • 12. Entity metadata wrappers ● Clases realmente útiles que permiten un acceso sencillo y unificado a las entities y sus fields o properties $wrapper = entity_metadata_wrapper('node', $node); $wrapper = entity_metadata_wrapper('node', $nid); $wrapper->author->profile->field_name->value(); $wrapper->author->profile->field_name->set('New name'); $wrapper->language('de')->body->summary->value(); $wrapper->author->mail->access('edit') ? TRUE : FALSE; $wrapper->author->roles->optionsList(); $wrapper->field_files[0]->description = 'The first file'; $wrapper->save(); $node = $wrapper->value();
  • 13. Crear nuevos entity types (Entity API) ● Implementar hook_entity_info() ● Especificar clase controller ○ Usar EntityAPIController ahorra trabajo ○ Definir schema mediante hook_schema() ● Buenas prácticas: ○ Crear {entity_type}_load(), {entity_type}_create(), {entity_type}_delete(), {entity_type}_save()
  • 14. EntityAPIController ● Invoca los hooks CRUD de forma automática ● Soporta entities basadas en clases ● Usar clases facilita las cosas: ○ Personalizando etiquetas, URLs, guardando... ○ Resulta útil: ■ $entity->entityType(); ■ $entity->identifier(); ■ $entity->view(); ■ $entity->delete(); ■ $entity->save(); ■ ...
  • 15. Entity API & Fields ● Sólo es necesario declarar la entity como "fieldable" ● entity_view() ya incluye los fields ● Facilita la gestión de bundles ○ Generear nuevo entity type para los bundles ○ Indicar que la nueva entity es "bundle of" la principal ○ Field API es invocada e incluida de forma automática Ej: Módulo Profile proporciona 2 tipos Profile y Profile type
  • 16. Entity API & Export ● Especificar el entity type como exportable ● $export = entity_export($entity_type, $entity); ● $entity = entity_import($entity_type, $export); ● Por defecto exporta en formato JSON
  • 17. Integración con otros módulos ● Entity API permite integrar con otros módulos ○ Features gracias a los exportables ○ Integración básica con Views ○ Rules events ○ Token support mediante el módulo Entity tokens
  • 18. Entity API Admin UI ● Se activa mediante hook_entity_info() ● Se puede personalizar sobreescribiendo el Controller ● Se adapta bien para gestionar bundle entities
  • 19. Recursos ● Código fuente con los ejemplos ○ https://github.com/plopesc/entity_workshop ● Código original del módulo example_task ○ http://www.trellon.com/content/blog/creating-own-entities-entity-api ● Presentaciones relacionadas ○ http://bxl2011.drupaldays.org/bxl2011.drupaldays.org/node/313.html ○ http://www.slideshare.net/jdleonard/drupal-7-entities ● Documentación Drupal.org ○ http://drupal.org/node/1260694 ○ http://drupal.org/node/1343708
  • 20. Recursos Módulos contrib comentados en la sesión ● Entity API ○ http://drupal.org/project/entity ● Entity View Modes ○ http://drupal.org/project/entity_view_mode ● EntityFieldQuery Views Backend ○ http://drupal.org/project/efq_views ● Entity Construction Kit ○ http://drupal.org/project/eck