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
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
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
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)
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
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
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