MADs about Drupal: Programación de entities para D7

1,487 views

Published on

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • Jajajaja no puede ser, busco como crear entidades con entity API y me apareces vos con un slide DPM.

    Saludos señor plopesc!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Views
Total views
1,487
On SlideShare
0
From Embeds
0
Number of Embeds
24
Actions
Shares
0
Downloads
5
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

MADs about Drupal: Programación de entities para D7

  1. 1. Entities en D7MADs about Drupal 07/02/2013
  2. 2. Resumen● ¿Qué es una entidad?● ¿Cómo trabajar con entidades?● ¿Cómo crear nuevas entidades?
  3. 3. Resumen● ¿Qué es una entidad?● ¿Cómo trabajar con entidades?● ¿Cómo crear nuevas entidades? Entity API
  4. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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áticaEj: Módulo Profile proporciona 2 tipos Profile y Profile type
  16. 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. 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. 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. 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. 20. RecursosMó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
  21. 21. Gracias

×