template - drupal write custom module




Füge CSS- oder Javascript-Dateien für bestimmte Knoten in Drupal 6 ein (4)

Die beste Lösung, die ich bisher gefunden habe, ist, den PHP-Eingabemodus zu aktivieren und dann drupal_add_css und drupal_add_js in einem PHP-Block am Anfang des Hauptteils deines Knotens entsprechend drupal_add_js .

Was ist die beste Methode, um eine CSS- oder Javascript-Datei für einen bestimmten Knoten in Drupal 6 einzubinden?

Ich möchte eine Seite auf meiner Website erstellen, auf der eine kleine JavaScript-Anwendung ausgeführt wird, sodass CSS und JavaScript für diese Seite spezifisch sind und nicht in andere Seitenladungen einbezogen werden sollen.


Dies scheint eine gute Lösung zu sein:

http://drupal.org/project/js_injector und http://drupal.org/project/css_injector

Es funktioniert, wenn Sie Inline-Code in etwas anderes als technisch einen Knoten einfügen möchten, so dass es keine Knoten-ID und keine PHP-Eingabemöglichkeit gibt. Wie ich es verwendet habe, um kleine jQuery Tweaks in ein paar Admin-Seiten zu injizieren. Es funktioniert nach Pfad und nicht nach Knoten-ID.


Ich benutze die Vorverarbeitungsfunktionen, aber das hat einige Probleme. $variables['styles'] wird normalerweise vor dem Aufruf der Node-Preprocess-Funktion gesetzt. Mit anderen Worten, drupal_get_css wird bereits aufgerufen, was den Aufruf von drupal_add_css unbrauchbar macht. Das gleiche gilt für drupal_add_js . Ich umgehe dies, indem ich den $variables['styles'] Wert zurücksetze.

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");
    $variables['styles'] = drupal_get_css();
    $variables['script'] = drupal_get_js();
  }
}

Dies scheint in den meisten Fällen zu funktionieren.

PS Es gibt kaum jemals ein Modul, um ein Thematisierungsproblem zu lösen.

Prost.


Sie können eine benutzerdefinierte Vorlage für diesen Knoten haben (node-needsjs.tpl.php), die das Javascript aufruft. Das ist ein wenig sauberer als die Verwendung von PHP direkt im Node-Hauptteil und macht Änderungen an Inhalten in Zukunft einfacher.

EDIT: Ich glaube nicht, dass ich oben klar war. Sie möchten die Template-Datei node- (nodelid) .tpl.php nennen. Wenn es Knoten 1 war, rufen Sie die Datei node-1.tpl.php auf