[gelöst] in ersten Schritten steckengeblieben
am 28.04.2012 - 20:30 Uhr in
Da ich wohl doch nicht mehr ganz ohne eigene Module herumkomme, habe ich mich mit der Modulprogrammierung befasst.
Ich habe das Buch "Das Drupal Entwicklerbuch" von John K. VanDyke herangezogen, und dort das erste Beispiel versucht.
Sicher, das Buch ist für 6.x, aber dennoch sollte es doch generell funktionieren.
Das Modul:
<?php
// $ld$
/**
* @file
* lässt Benutzer persönliche Anmerkungen speichern
*
* Fügt ein Textfeld hinzu, wenn ein Node angezeigt wird,
* so dass authentifizierte Benutzer Anmerkungen machen können.
*/
/**
* Implementierung von hook_menue()
*/
function annotate_menue(){
$items[admin/settings/annotate] = array(
'title' => 'Anmerkungen',
'description' => 'Konfigurieren Sie hier die Anmerkungen',
'page_callback' => 'drupal_get_form',
'page_arguments' => array('annotate_admin_settings'),
'access_arguments' => array ('administer site configuration'),
'type' => MENUE_NORMAL_ITEM,
'file' => 'annotate.admin.inc',
);
return $items;
}Und die Inc-Datei annotate.admin.inc:
<?php
// $tld$
/**
* @file
* callbacks der Administrationsseite für das Annotate-Modul.
*/
/**
* Formularerstellung, Anmerkungen werden konfiguriert.
*
* @ingroup forms
* @see system_settings_form().
*/
function annotate_admin_settings(){
// Ruft ein Array der NodeTypen mit internen Namen als Schlüssel
// und benutzerfreundlichen Namen als Wert ab.
// Die Werte in t() sind bewußt in englisch gehalten,
// Sie werden über das Lokalisierungssystem übersetzt.
$options = node_get_types('names');
$form['annotate_node_types']=array(
'#type' => 'checkboxes',
'#title' => t('Users may annotate these content types'),
'#options'=>$options,
'#default_value'=> variable_get('annotate_node_types',array('story')),
'#description'=> t('A text field will be available on these content types to
make user specific notes.')
);
return system_settings_form($form);
}Nun dazu ein paar Fragen:
1. warum wird nach dem letzten Element im Array noch ein Komma notiert?
2. wo auf der Konfigurationsseite finde ich das Formular?
Der im Buch angegebene Link funktioniert nicht.
- Anmelden oder Registrieren um Kommentare zu schreiben

Zitat: wo auf der
am 29.04.2012 - 00:19 Uhr
wo auf der Konfigurationsseite finde ich das Formular?
am besten, du blätterst mal eine Seite weiter und schaust dir an, wie man so ein Formular einfügt.
lieben Gruß
Berthold Lausch
im Buch steht wörtlich:
am 29.04.2012 - 07:47 Uhr
Da das Modul annotate jetzt aktiviert ist, begeben Sie sich zu VERWALTEN > EINSTELLUNGEN > ANMERKUNGEN.
Das Modul war in der Modulliste, ließ sich aktivieren. Anschließend habe ich sicherheitshalber mehrfach die Caches gelöscht.
Der angegebene Pfad existiert jedoch nicht und auf der Konfiguration - Seite taucht es auch nicht auf.
Nun frage ich anders - was hat sich an dieser Stelle vielleicht gegenüber der D6 geändert?
Die Konfigurationsseite hat ja auch Gruppen. Wie bekomme ich eine neue Gruppe angelegt? Wie bekomme ich ein neues Modul in eine Gruppe?
Das ist doch sicher nur ein Eintrag im items-array, oder?
Danke Bertold, für deine Nachricht
am 29.04.2012 - 14:04 Uhr
Soweit habe ich es verstanden.
Ich hoffe, dass der menue_hook sich nicht verändert hat.
Dein Video bezieht sich auch auf D6.
Hier nochmal mein item:
$items['admin/settings/annotate'] = array('title' => 'Anmerkungen',
'description' => 'Konfigurieren Sie hier die Anmerkungen',
'page_callback' => 'drupal_get_form',
'page_arguments' => array('annotate_admin_settings'),
'access_arguments' => array ('administer site configuration'),
'type' => MENU_NORMAL_ITEM,
'file' => 'annotate.admin.inc'
);
Das letzte Komma, das mit seltsam vorkam, habe ich entfernt, aber auch keinen Erfolg verbuchen können.
Das Modul wird angesprochen.
Baue ich einen Sytaxfehler ein, wird dieser gemeldet.
Was hat es mit dem Type auf sich? Laut Buch ist die Konstante MENU_NORMAL_ITEM einzutragen. Passt das?
Ich habe auch versucht, einen Tippfehler zu finden. Ich vermute es, finde aber keinen.
Das Komma in der letzten
am 29.04.2012 - 16:05 Uhr
Das Komma in der letzten Zeile beim Array ist wegen der Bequemlichkeit. Du kannst ohne nachzudenken Zeilen einfügen oder Löschen. Damit vermeidet man unter Umständen blöde Fehler, weil man vergessen hat das Komma wieder einzufügen.
Ein grundsätzlicher Fehler: es heißt hook_menu (nicht hook_menue!!!)
Dann verwendest Du in der Form-Funktion
$options = node_get_types('names');node_get_types ist bei Drupal 7 nicht mehr vorhanden und Du mußt Dir die Options anders basteln etwa über
$types = node_type_get_types();$options = array();
foreach ($types as $type) {
$options[$type->type] = $type->name;
}
Irgendwo ist noch ein Fehler, den ich nicht gefunden habe: Ich habe auch als User 1 keine Berechtigung, diesen Link aufzurufen. Keine Ahnung wieso.
Es hat sich von Drupal 6 nach Drupal 7 vieles erheblich verändert und Du wirst wohl nicht umhin kommen, Dich mit aktueller Dokumentation zu befassen.
Edit:
Es hat mir doch keine Ruhe gelassen und ich habe den Fehler gefunden:
'description' => 'Konfigurieren Sie hier die Anmerkungen','page_callback' => 'drupal_get_form',
'page_arguments' => array('annotate_admin_settings'),
'access_arguments' => array ('administer site configuration'),
Du darfst bei Drupal 7 keine _ einsetzen. Es muß heißen 'page callback', 'page arguments' und 'access arguments' (siehe hier). Außerdem hat sich bei Drupal 7 das Konfigurations-Menu geändert. Statt admin/settings/annotate muß es jetzt admin/config/annotate heißen. Kaum macht man's richtig funktioniert es auch: Unter Konfiguration gibt es jetzt im Admin-Menü auch den Punkt Anmerkungen :-)
Beste Grüße
Werner
Danke Werner
am 30.04.2012 - 08:09 Uhr
ich hatte zwar noch keine Gelegenheit es neu zu testen, gehe aber davon aus, dass es funktioniert.
Du hast es offenbar probiert.
Morgen ist Feiertag, da nehme ich mir etwas Zeit dafür.