Ich würde davon abraten, hook_nodeapi
dafür zu verwenden. Das Hinzufügen von CSS und Javascript bezieht sich auf das Layout, also ist hook_nodeapi
nicht der richtige Ort dafür: Verwenden Sie Theme. Auf diese Weise können Sie diese Dateien überschreiben, wenn Sie ein neues Thema entwickeln. Dies mit dem nodeapi-Ansatz zu tun wäre ein bisschen schwieriger (Sie müssten die js/css-Liste nach den Dateien durchsuchen, sie entfernen und sie durch Ihre eigenen ersetzen).
Wie auch immer: was Sie tun müssen, ist eine Knoten Preprocess-Funktion, die diese Dateien für Sie hinzufügt. Sie können dies entweder in einem Modul oder in einem benutzerdefinierten Thema tun. Für ein Modul dies wäre:
function mymodule_preprocess_node(&$variables) {
$node = $variables['node'];
if (!empty($node) && $node->nid == $the_specific_node_id) {
drupal_add_js(drupal_get_path('module', 'mymodule') . "/file.js", "module");
drupal_add_css(drupal_get_path('module', 'mymodule') . "/file.css", "module");
}
}
oder für ein Thema:
function mytheme_preprocess_node(&$variables) {
$node = $variables['node'];
if (!empty($node) && $node->nid == $the_specific_node_id) {
drupal_add_js(path_to_theme() . "/file.js", "theme");
drupal_add_css(path_to_theme(). "/file.css", "theme");
}
}
Sie den Cache zu löschen, zuerst nicht vergessen.
Diese Funktionen werden aufgerufen, bevor der Knoten thematisch ist. Das Spezifizieren der js/css erlaubt einen kaskadierten Ansatz: Sie können die generischen/grundlegenden Sachen im Modul haben und verbesserte oder spezifische Funktionalität im Thema zur Verfügung stellen.
Ich habe diese Technik immer und immer wieder in Drupal 5 verwendet. Zum Beispiel wurde der "Club-Kalender" auf der ersten Seite dieser Seite auf diese Weise implementiert. http://www.chesmontastro.org/ –
Dies könnte die einfachste Lösung sein, wird aber schnell unwartbar, da das Speichern von PHP-Code in der Datenbank sehr schwer zu debuggen ist und eine Versionskontrolle nahezu unmöglich ist. Die obige Lösung von Inferis ist ein viel sauberer Ansatz. – jhedstrom