5. Ziel: Vereinheitlichung - Objekt & CRUD-API
Ein Objekt kann
- erzeugt werden (Create)
- gelesen werden (Read)
- verändert werden (Update)
- gelöscht werden (Delete)
6. Ziel: Vereinheitlichung - Objekt & Field-API
Zu JEDEM Objekt können beliebige Felder angelegt
werden
- Text
- Zahlen
- Links
- Referenzen
- Dateien
- ...
Auch diese können gelesen, verändert, gelöscht werden.
7. Drupal 7: Voilá, Entities !
Konzepte: Beispiele:
- Entity Types - node, user, vocabulary
- Entity Bundles - page, article, blog
- Entity Properties - author, created, status
- Fields - field_xyz
& Entity API / Field API
8. Codevergleich Drupal 6 <-> Drupal 7
Drupal 6 (Database API + Node API)
$query = "SELECT nid FROM {node}
WHERE (type = 'article' AND status = '1')
ORDER BY created DESC";
$result = db_query($query);
while ($nid = db_result($result)) {
$articles[] = node_load($res);
}
Drupal 7 (Entity API):
$query = new EntityFieldQuery();
$result = $query->entityCondition ('entity_type', 'node')
->entityCondition ('bundle'), 'article')
->propertyCondition ('status', '1');
->propertyOrderBy ('created', 'DESC');
->execute();
$articles = entity_load ('node', array_keys($result['node']);
15. Drupal 7: Vieles ist schon da, aber...
Vieles ist noch unvollständig:
- Remember CRUD? Im Core gibt es nur das "R" !
- Es gibt noch kein User Interface zu Entities
- Integration z.B. in Views, Panels, Rules, Features, Pathauto, Display Suite, ...
Manches ist nur vorläufig:
function taxonomy_get_term_by_name($name) {
return taxonomy_term_load_multiple(array(), array('name' => trim($name)));
}
function taxonomy_term_load_multiple($tids = array(), $conditions = array()) {
return entity_load('taxonomy_term', $tids, $conditions);
}
Die Verwendung von $conditions ist deprecated, und wird in D8 wahrscheinlich
wieder verschwinden!
16. Abhilfe: Contributed Modules
Entity API - Ergänzt das Core API, z.B. mit vollständigem CRUD
http://drupal.org/project/entity
File Entity - Macht Files fieldable
http://drupal.org/project/file_entity
Entity Construction Kit (ECK) - User Interface zur Verwaltung von Entities
http://drupal.org/project/eck
Entity Reference - Referenzen auf Entities, ähnlich node / user reference
http://drupal.org/project/entityreference
Manches wird mit D8 im Core landen, anderes in der Versenkung
verschwinden - schwer zu beurteilen!
17. Demo: ECK, Views, DB
- Erzeugen von Entity Types, Bundles, Entities
- Listen in Views
- Repräsentation in der Datenbank
18. Fragen / Diskussion
Zum Weiterlesen:
http://www.davetech.com/blog/introduction_drupal_7_entities_and_fields
http://www.istos.it/category/blog-tags/drupal-entities
http://de.wetena.com/blog/2011/04/13/entities-in-drupal-7
http://www.slideshare.net/alexshr/entity-api
Diese Folien als PDF:
http://www.slideshare.net/drubb/drupal-entities