SlideShare une entreprise Scribd logo
1  sur  57
Drupal inside out Es geht hier nicht um die Module, sondern um den Kern von Drupal  Verstehen wie Drupal im Inneren funktioniert!
Im Inneren ist Drupal ziemlich logisch ,[object Object]
Es geht mir in meinem Vortrag um Ueberraschungsmomente  und  Klippen  bei Drupal ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Gliederung
Teil 1  Die Daten (als Einleitung für spannendere Themen)
Drupal ist tabellenbasiert Apache Server Datenbank, etwa mysql Php als Zugriffssprache Webseite
Drupals „Datentöpfe“ node  ( nid , prozedurale Daten des Node) user  ( uid , prozedurale Daten des Users) comments  ( cid ,  pid  wenn Antwort,  nid ) term  ( tid , Begriff) Taxonomy Artikel Benutzer Kommentare
Organisation der Daten bei node node ( nid ,  prozedurale Daten ) node_revisions ( nid, vid ,  inhaltliche Daten ) node_type  node_access
Organisation der User-Daten ,[object Object],User   ( uid ,  Konto-Daten ) profilevalues ( nid, fid ,  inhaltliche Daten ) profilefields
Auch ein Merkmal von Drupal ,[object Object],[object Object],[object Object],[object Object]
Teil 2  Berechtigungen
Berechtigungen ,[object Object],[object Object],[object Object],Berechtigung  = „diese  Rolle  darf diese  Aufgabe  ausführen“
Beispiele Angemeldeter Benutzer  darf  „delete own page“ Administrator  darf  „Blöcke verwalten“
userroles ( uid , Rolle)  permissions (pid ,  Rolle ,  Aufgabenliste )  /Benutzerverwaltung/Berechtigungen Rollen Berechtigungen
Am Rande bemerkt: Wie Views Berechtigungskonzept nutzt „ Klaut“ es Aufgaben anderer Module Statt selbst Aufgaben zu definieren ..... Man kann eine View berechtigen: Berechtigung =  Rolle oder  Berechtigung =  Aufgabe
Teil 3  Das Menüsystem
Das Menüsystem „ Das Menüsystem in Drupal kann leicht missverstanden werden“ Das Menüsystem vermittelt eine Illusion. Warum? Drupals Daten kennen keine Schubladen oder Hierarchien!
Was sind Menüs dann für Drupal? URL Callback (argument) Menu  = URL  +  CALLBACK menu_router
Menüpunkt anlegen in Drupal Drupal verlangt einen bekannten Pfad Eintrag in menu_router muss vorliegen Erst dann kann der Menüpunkt an der Oberfläche eingehängt werden menu_router menu_links
menu_router ( path ,  page_callback ,  page_arguments , ... ) Node/ 22 /edit node/%/edit,   node_page_edit,  a:1 node_page_edit  (22) Beispiele menu_router callback URL
Viewaufruf menu_router  ( path ,  page_callback ,  page_arguments , .... ) a uthors authors,  views_page,  a:2{... authors_all .?...   }   menu_router views_page  (authors_all, ?) callback URL View „authors_all“ Pfad: authors
Menüreiter „Local Task“ menu_router  ( path ,  page_callback ,  page_arguments , ... . tab_parent   ) menu_router callback URL authors/germany a uthors/germany,  views_page,  a:2   {... authors_germany ..?..   } ,   authors   views_page (authors_germany,?) Wird als Tab bei authors angezeigt Kein Menüpunkt an der Oberfläche, kein Eintrag in menu_links View „authors_germany“ Pfad: authors/germany
Es ist eigentlich noch etwas komplizierter ... Weitere Felder in menu_router title_callback acc ess_callback l oad_functions to_arg_functions type
2 stufiges Vorgehen bei Drupals Menüpunkten Pfad mit Callback einrichten (Substanz) Einhängen ins Menüsystem als primary-link, etc.
Teil 4  Erweiterungen in Drupal: Hooks und Module
Module sind die Einheit der Erweiterung bei Drupal ,[object Object],Durch sogenannte  Hooks   Diese werden bei  Drupal-Events  gerufen.
Bei jedem Drupal Event können sich beliebig viele Module melden und einhängen.
Beispiel:  hook_menu ,[object Object],[object Object],hook_menu Drupal aktualisiert die Einträge der Module in menu_router
Modul „menufun“   Implementierung von hook_menu ; $Id$ name= Menu Fun description = Learning package = Pro Drupal core = 6.x <?php // $Id$ //Implementierung von hook_menu function  menufun_menu  (){ $items[' menufun '] = array ( 'page callback' => ' menufun_hello ', 'access callback' => TRUE, 'type' => MENU_CALLBACK, ); return $items; } function  menufun_hello  () { return t('Hello'); } menufun.info menufun.module menufun,  menufun_hello , ... menu_router Hook_menu
Effekt:
Es gibt etwa 50 Hooks in Drupal 6
Aufbau der Hooks hook_objekt  ( $op , ....) Objekt  +  „Operation“  =  Event
Beispiel  hook_user  ( $op , ...) Operationen:  login, logout, register, update, view, ...
Fazit Module können sich an fast allen Stellen ins Drupal-Geschehen einklinken.
Teil 5  Internationaliserung Klippe für Seiten mit Defaultsprache ≠ Englisch
Locale Module  („the good guy“) ,[object Object],[object Object],[object Object],[object Object],[object Object]
t() ( lid , location, textgroup, source, ...)  (4191, menufun/, default,  „Guten Tag“) Locales_source ( lid , translation, language, ...)   (432, „Have a good day“, de, ... ) Locales_target ... v function  menufun_hello  () { return t(‘ Guten Tag '); ..... hook_menu
t() kennt keine Defaultsprache t() übersetzt immer von Deutsch Englisch ... v function  menufun_hello  () { return t(‘ Have a good day '); ..... also .....
Nodes übersetzen (geht viel besser) ( nid , language, title, tid, translate) ( 13 , de, Joe Trippi,  13 , 0) (14 , en, Joe Trippi , 13 , 0) node Beispiel Orginal unabhängig von Defaultsprache definierbar Braucht keine Defaultsprache!
Wo t() scheitert Drupal speichert viele Texte in der Datenbank: Bei Nodes, die eine Sprache haben ist das kein Problem,  aber Blöcke, Menüs, etc. haben keine Sprache! Modulblock  Internationalization  i18n
Internationalization  („the bad guy“) Hier hört der Drupal Kern und die Drupal Ordnung auf und der  Drupal-Dschungel  von Module, die die Datenbank irgendwie bentzen fängt an.
Internationalization Uebersetzung von Sitevariablen wie  site-mission  aus  variables i18n_variables merkt sich welche Sprache Blöcke haben i18n_blocks Datenbankfelder bekommen eine lid für locales-Tabellen i18n_strings
Taxonomy hat eine Sprache! (tid, vid (Vokabular), name, language, trid) (60, 10,  Ungarn , de,  6 ) (61, 10,  Hungary , en,  6 ) t erm_data Es gibt eine saubere Lösung, wenn man  nicht „lokalisiert“ , sondern  „übersetzt“
Menüs Menüs haben in der Datenbank kein Sprache, obwohl an der Oberfläche eine einstellbar ist. Bei Defaultsprache Englisch: lokalisieren okay. Defaultsprache Englisch zur Zeit erforderlich für die Lokalisierung von primary links
Blöcke (bid,delta, ...) Defaultsprache nicht nötig Blöcke haben in der Datenbank kein Sprache, obwohl an der Oberfläche eine einstellbar ist. i18n_blocks (ibid)
Fazit Internationalisierung Die Internationalisierung hat nicht die Klarheit von Drupal Core Konflikte mit anderen Modulen
Bis dahin: Rezept für eine internationale Seite: Englisch    Deutsch Defaultsprache: englisch Menüsystem   auf Englisch und übersetzen Inhalte:   Deutsch  später übersetzen Taxonomien   würde ich pro Sprache machen und gelegentlich übersetzen,  nicht lokalisieren Blöcke  kann man pro Sprachen machen,  erstmal Deutsch
Teil 6  Fazit und Zusammenfassung
Drupals Besonderheit „ demokratische Nodes“ , keine Hirarchien der Daten Dafür  Taxonomy  als starkes  Keywort-System  zur Organisation der Daten  Menüsystem als weiteres loses Netz zur Gliederung der Seite
Drupals Stärken Klare Konzeption, die auch und vor allem in der Datenbasis sichtbar ist Hohe Flexibilität, durch Offenlegung aller Events mit einfachen Schnittstellen ( hooks )
Damit  Module  sich nicht gegenseitig stören ... ... müssen sie diese Klarheit respektieren und weiterbauen
Manchmal sollte man Module redesignen
Zusatzfolien (Internationalisierung)
Warum man lokalisieren bei Taxonomy vermeiden sollte ( t id , vid (vokabular),  name , language, ....) (60, 10,  Ungarn ,  ,  t erm_data ( lid , object_id,  type , property) ( 4200 , 49,  term ,  name )  i18n:_strings
Uebersetzungen stehen nicht in target sondern in source? ( lid , location, textgroup, source, ...)  (4200 ,   49:term:name,  taxonomy,   „Ungarn “?) Locales_source ( lid , location, textgroup, source, ...)  ( 4201 ,  /de/admin/content/taxonomy/10,  default,  „Hungary“? ) Locales_target Locales_source
Menüs Menu_router  und  menu_links  haben beide keine Sprache als Feld
2 Beispiele   primary link „Zeitschriften“  zeigt auf node/29   Navigation  menufun  (Einhängen unseres Moduls) (menu_name,  mlid , link_path, router_path, link_title...) ( primary-links ,  781 , node/29, node/%,  Zeitschriften , ...) ( navigation ,  757 , menufun, menufun,  Menufun , ..) menu_link i18n_strings ( lid , object_id, type, property)  ( 4207 ,  781 ,  item, title) ( 4206, 757 , item, title) L ocales_source L ocales_target
Ergebnis ,[object Object],[object Object],Das Einzige was ich finden konnte: Solange die Defaultsprache Englisch ist, kann man Primary Menus übersetzen, und sie werden korrekt angezeigt.   Das Umstellen der Defaultsprache führt zu Problemen!

Contenu connexe

Similaire à Drupal inside out

Vielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-Entwicklung
Vielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-EntwicklungVielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-Entwicklung
Vielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-EntwicklungBenjamin Schmid
 
The Lotus Code Cookbook
The Lotus Code CookbookThe Lotus Code Cookbook
The Lotus Code CookbookUlrich Krause
 
Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)Kerstin Puschke
 
Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)Nane Kratzke
 
Object-orientied way of using mysqli interface - Workshop
Object-orientied way of using mysqli interface - WorkshopObject-orientied way of using mysqli interface - Workshop
Object-orientied way of using mysqli interface - WorkshopWaldemar Dell
 
Metaprogrammierung und Reflection
Metaprogrammierung und ReflectionMetaprogrammierung und Reflection
Metaprogrammierung und ReflectionStefan Marr
 
Internationalization by dominik-jais
Internationalization by dominik-jaisInternationalization by dominik-jais
Internationalization by dominik-jaisDominik
 
Neues Rtf Dokument
Neues Rtf DokumentNeues Rtf Dokument
Neues Rtf Dokumentguest0bb754
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersUlrich Krause
 
Entwickeln mit Wordpress
Entwickeln mit WordpressEntwickeln mit Wordpress
Entwickeln mit WordpressBlogwerk AG
 
Domain Driven Design in Rails
Domain Driven Design in RailsDomain Driven Design in Rails
Domain Driven Design in RailsAngelo Maron
 
AdminCamp2010, Closing General Session
AdminCamp2010, Closing General SessionAdminCamp2010, Closing General Session
AdminCamp2010, Closing General SessionUlrich Krause
 
Dokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDBDokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDBMario Müller
 
WordPress Plugins und Themes übersetzbar machen - WP Camp 2012 Berlin
WordPress Plugins und Themes übersetzbar machen - WP Camp 2012 BerlinWordPress Plugins und Themes übersetzbar machen - WP Camp 2012 Berlin
WordPress Plugins und Themes übersetzbar machen - WP Camp 2012 BerlinDavid Decker
 
Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)
Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)
Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)inovex GmbH
 
ICS UserGroup - 2015 - Eclipse and Notes - Love/Hate Relationships
ICS UserGroup - 2015 - Eclipse and Notes - Love/Hate RelationshipsICS UserGroup - 2015 - Eclipse and Notes - Love/Hate Relationships
ICS UserGroup - 2015 - Eclipse and Notes - Love/Hate RelationshipsChristoph Adler
 

Similaire à Drupal inside out (20)

Modulsystem in Drupal
Modulsystem in DrupalModulsystem in Drupal
Modulsystem in Drupal
 
Vielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-Entwicklung
Vielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-EntwicklungVielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-Entwicklung
Vielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-Entwicklung
 
The Lotus Code Cookbook
The Lotus Code CookbookThe Lotus Code Cookbook
The Lotus Code Cookbook
 
Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)
 
SQL Developer 4.x - Tipps für "faule" Entwickler
SQL Developer 4.x - Tipps für "faule" EntwicklerSQL Developer 4.x - Tipps für "faule" Entwickler
SQL Developer 4.x - Tipps für "faule" Entwickler
 
Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)
 
Object-orientied way of using mysqli interface - Workshop
Object-orientied way of using mysqli interface - WorkshopObject-orientied way of using mysqli interface - Workshop
Object-orientied way of using mysqli interface - Workshop
 
Web Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 BetaWeb Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 Beta
 
Daisy
DaisyDaisy
Daisy
 
Metaprogrammierung und Reflection
Metaprogrammierung und ReflectionMetaprogrammierung und Reflection
Metaprogrammierung und Reflection
 
Internationalization by dominik-jais
Internationalization by dominik-jaisInternationalization by dominik-jais
Internationalization by dominik-jais
 
Neues Rtf Dokument
Neues Rtf DokumentNeues Rtf Dokument
Neues Rtf Dokument
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino Developers
 
Entwickeln mit Wordpress
Entwickeln mit WordpressEntwickeln mit Wordpress
Entwickeln mit Wordpress
 
Domain Driven Design in Rails
Domain Driven Design in RailsDomain Driven Design in Rails
Domain Driven Design in Rails
 
AdminCamp2010, Closing General Session
AdminCamp2010, Closing General SessionAdminCamp2010, Closing General Session
AdminCamp2010, Closing General Session
 
Dokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDBDokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDB
 
WordPress Plugins und Themes übersetzbar machen - WP Camp 2012 Berlin
WordPress Plugins und Themes übersetzbar machen - WP Camp 2012 BerlinWordPress Plugins und Themes übersetzbar machen - WP Camp 2012 Berlin
WordPress Plugins und Themes übersetzbar machen - WP Camp 2012 Berlin
 
Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)
Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)
Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)
 
ICS UserGroup - 2015 - Eclipse and Notes - Love/Hate Relationships
ICS UserGroup - 2015 - Eclipse and Notes - Love/Hate RelationshipsICS UserGroup - 2015 - Eclipse and Notes - Love/Hate Relationships
ICS UserGroup - 2015 - Eclipse and Notes - Love/Hate Relationships
 

Drupal inside out

  • 1. Drupal inside out Es geht hier nicht um die Module, sondern um den Kern von Drupal Verstehen wie Drupal im Inneren funktioniert!
  • 2.
  • 3.
  • 4. Teil 1 Die Daten (als Einleitung für spannendere Themen)
  • 5. Drupal ist tabellenbasiert Apache Server Datenbank, etwa mysql Php als Zugriffssprache Webseite
  • 6. Drupals „Datentöpfe“ node ( nid , prozedurale Daten des Node) user ( uid , prozedurale Daten des Users) comments ( cid , pid wenn Antwort, nid ) term ( tid , Begriff) Taxonomy Artikel Benutzer Kommentare
  • 7. Organisation der Daten bei node node ( nid , prozedurale Daten ) node_revisions ( nid, vid , inhaltliche Daten ) node_type node_access
  • 8.
  • 9.
  • 10. Teil 2 Berechtigungen
  • 11.
  • 12. Beispiele Angemeldeter Benutzer darf „delete own page“ Administrator darf „Blöcke verwalten“
  • 13. userroles ( uid , Rolle) permissions (pid , Rolle , Aufgabenliste ) /Benutzerverwaltung/Berechtigungen Rollen Berechtigungen
  • 14. Am Rande bemerkt: Wie Views Berechtigungskonzept nutzt „ Klaut“ es Aufgaben anderer Module Statt selbst Aufgaben zu definieren ..... Man kann eine View berechtigen: Berechtigung = Rolle oder Berechtigung = Aufgabe
  • 15. Teil 3 Das Menüsystem
  • 16. Das Menüsystem „ Das Menüsystem in Drupal kann leicht missverstanden werden“ Das Menüsystem vermittelt eine Illusion. Warum? Drupals Daten kennen keine Schubladen oder Hierarchien!
  • 17. Was sind Menüs dann für Drupal? URL Callback (argument) Menu = URL + CALLBACK menu_router
  • 18. Menüpunkt anlegen in Drupal Drupal verlangt einen bekannten Pfad Eintrag in menu_router muss vorliegen Erst dann kann der Menüpunkt an der Oberfläche eingehängt werden menu_router menu_links
  • 19. menu_router ( path , page_callback , page_arguments , ... ) Node/ 22 /edit node/%/edit, node_page_edit, a:1 node_page_edit (22) Beispiele menu_router callback URL
  • 20. Viewaufruf menu_router ( path , page_callback , page_arguments , .... ) a uthors authors, views_page, a:2{... authors_all .?... } menu_router views_page (authors_all, ?) callback URL View „authors_all“ Pfad: authors
  • 21. Menüreiter „Local Task“ menu_router ( path , page_callback , page_arguments , ... . tab_parent ) menu_router callback URL authors/germany a uthors/germany, views_page, a:2 {... authors_germany ..?.. } , authors views_page (authors_germany,?) Wird als Tab bei authors angezeigt Kein Menüpunkt an der Oberfläche, kein Eintrag in menu_links View „authors_germany“ Pfad: authors/germany
  • 22. Es ist eigentlich noch etwas komplizierter ... Weitere Felder in menu_router title_callback acc ess_callback l oad_functions to_arg_functions type
  • 23. 2 stufiges Vorgehen bei Drupals Menüpunkten Pfad mit Callback einrichten (Substanz) Einhängen ins Menüsystem als primary-link, etc.
  • 24. Teil 4 Erweiterungen in Drupal: Hooks und Module
  • 25.
  • 26. Bei jedem Drupal Event können sich beliebig viele Module melden und einhängen.
  • 27.
  • 28. Modul „menufun“ Implementierung von hook_menu ; $Id$ name= Menu Fun description = Learning package = Pro Drupal core = 6.x <?php // $Id$ //Implementierung von hook_menu function menufun_menu (){ $items[' menufun '] = array ( 'page callback' => ' menufun_hello ', 'access callback' => TRUE, 'type' => MENU_CALLBACK, ); return $items; } function menufun_hello () { return t('Hello'); } menufun.info menufun.module menufun, menufun_hello , ... menu_router Hook_menu
  • 30. Es gibt etwa 50 Hooks in Drupal 6
  • 31. Aufbau der Hooks hook_objekt ( $op , ....) Objekt + „Operation“ = Event
  • 32. Beispiel hook_user ( $op , ...) Operationen: login, logout, register, update, view, ...
  • 33. Fazit Module können sich an fast allen Stellen ins Drupal-Geschehen einklinken.
  • 34. Teil 5 Internationaliserung Klippe für Seiten mit Defaultsprache ≠ Englisch
  • 35.
  • 36. t() ( lid , location, textgroup, source, ...) (4191, menufun/, default, „Guten Tag“) Locales_source ( lid , translation, language, ...) (432, „Have a good day“, de, ... ) Locales_target ... v function menufun_hello () { return t(‘ Guten Tag '); ..... hook_menu
  • 37. t() kennt keine Defaultsprache t() übersetzt immer von Deutsch Englisch ... v function menufun_hello () { return t(‘ Have a good day '); ..... also .....
  • 38. Nodes übersetzen (geht viel besser) ( nid , language, title, tid, translate) ( 13 , de, Joe Trippi, 13 , 0) (14 , en, Joe Trippi , 13 , 0) node Beispiel Orginal unabhängig von Defaultsprache definierbar Braucht keine Defaultsprache!
  • 39. Wo t() scheitert Drupal speichert viele Texte in der Datenbank: Bei Nodes, die eine Sprache haben ist das kein Problem, aber Blöcke, Menüs, etc. haben keine Sprache! Modulblock Internationalization i18n
  • 40. Internationalization („the bad guy“) Hier hört der Drupal Kern und die Drupal Ordnung auf und der Drupal-Dschungel von Module, die die Datenbank irgendwie bentzen fängt an.
  • 41. Internationalization Uebersetzung von Sitevariablen wie site-mission aus variables i18n_variables merkt sich welche Sprache Blöcke haben i18n_blocks Datenbankfelder bekommen eine lid für locales-Tabellen i18n_strings
  • 42. Taxonomy hat eine Sprache! (tid, vid (Vokabular), name, language, trid) (60, 10, Ungarn , de, 6 ) (61, 10, Hungary , en, 6 ) t erm_data Es gibt eine saubere Lösung, wenn man nicht „lokalisiert“ , sondern „übersetzt“
  • 43. Menüs Menüs haben in der Datenbank kein Sprache, obwohl an der Oberfläche eine einstellbar ist. Bei Defaultsprache Englisch: lokalisieren okay. Defaultsprache Englisch zur Zeit erforderlich für die Lokalisierung von primary links
  • 44. Blöcke (bid,delta, ...) Defaultsprache nicht nötig Blöcke haben in der Datenbank kein Sprache, obwohl an der Oberfläche eine einstellbar ist. i18n_blocks (ibid)
  • 45. Fazit Internationalisierung Die Internationalisierung hat nicht die Klarheit von Drupal Core Konflikte mit anderen Modulen
  • 46. Bis dahin: Rezept für eine internationale Seite: Englisch  Deutsch Defaultsprache: englisch Menüsystem auf Englisch und übersetzen Inhalte: Deutsch später übersetzen Taxonomien würde ich pro Sprache machen und gelegentlich übersetzen, nicht lokalisieren Blöcke kann man pro Sprachen machen, erstmal Deutsch
  • 47. Teil 6 Fazit und Zusammenfassung
  • 48. Drupals Besonderheit „ demokratische Nodes“ , keine Hirarchien der Daten Dafür Taxonomy als starkes Keywort-System zur Organisation der Daten Menüsystem als weiteres loses Netz zur Gliederung der Seite
  • 49. Drupals Stärken Klare Konzeption, die auch und vor allem in der Datenbasis sichtbar ist Hohe Flexibilität, durch Offenlegung aller Events mit einfachen Schnittstellen ( hooks )
  • 50. Damit Module sich nicht gegenseitig stören ... ... müssen sie diese Klarheit respektieren und weiterbauen
  • 51. Manchmal sollte man Module redesignen
  • 53. Warum man lokalisieren bei Taxonomy vermeiden sollte ( t id , vid (vokabular), name , language, ....) (60, 10, Ungarn , , t erm_data ( lid , object_id, type , property) ( 4200 , 49, term , name ) i18n:_strings
  • 54. Uebersetzungen stehen nicht in target sondern in source? ( lid , location, textgroup, source, ...) (4200 , 49:term:name, taxonomy, „Ungarn “?) Locales_source ( lid , location, textgroup, source, ...) ( 4201 , /de/admin/content/taxonomy/10, default, „Hungary“? ) Locales_target Locales_source
  • 55. Menüs Menu_router und menu_links haben beide keine Sprache als Feld
  • 56. 2 Beispiele primary link „Zeitschriften“ zeigt auf node/29 Navigation menufun (Einhängen unseres Moduls) (menu_name, mlid , link_path, router_path, link_title...) ( primary-links , 781 , node/29, node/%, Zeitschriften , ...) ( navigation , 757 , menufun, menufun, Menufun , ..) menu_link i18n_strings ( lid , object_id, type, property) ( 4207 , 781 , item, title) ( 4206, 757 , item, title) L ocales_source L ocales_target
  • 57.