it-swarm.com.de

Fügen Sie JavaScript zu einem bestimmten Inhaltstyp hinzu

Ich möchte wissen, wie eine JavaScript-Datei am besten auf der Grundlage des Inhaltstyps zu einer bestimmten Seite hinzugefügt werden kann. Zum Beispiel möchte ich Folgendes hinzufügen:

<script type='text/javascript' src='http://maps.google.com/maps/api/js?sensor=false'></script>

Bisher habe ich auf diese Weise meinen spezifischen Inhaltstyp hinzugefügt. Für den Inhaltstyp map_page füge ich die folgenden zwei Codezeilen in page hinzu - map_page.tpl.php.

drupal_add_js("http://maps.google.com/maps/api/js?sensor=false", 'external');
$scripts = drupal_get_js();

Gibt es einen anderen besseren Weg? wenn möglich kann man ein beispiel geben, derzeit nicht wirklich gut verstehen ...

9
arkchong

Ich kann das richtige Drupal 7-Äquivalent nicht kommentieren, aber in Drupal 6 Sites mache ich das in einer template_preprocess_page .

Ich werde eine Logik haben, um die Entscheidung zu treffen (entweder basierend auf arg() oder page_manager_get_current_page() aus Panels) und dann $vars["scripts"] Mit dem externen Skript voranzustellen. Ich stelle vor, damit ich bei lokalen Skripten nicht auf Abhängigkeitsprobleme stoße.

Manchmal richte ich auch eine neue Region mit dem Namen $global_scripts Für Gedanken wie Google API und SWFObject ein, die ich von einem CDN laden möchte. Diese wird vor $scripts In der Seitenvorlage ausgedruckt.

Um ehrlich zu sein, obwohl ich normalerweise alle JS auf allen Seiten habe, damit die Dateien zwischengespeichert werden.

6
mpdonadio

Da Drupal lässt Sie template_preprocess_node Nicht neu definieren (da es bereits in node.module definiert ist), habe ich meinem benutzerdefinierten Modul eine Präprozessorfunktion hinzugefügt:

function mymodule_preprocess_node(&$vars) {
  if ($vars['type'] == 'my-node-type') {
    drupal_add_js(drupal_get_path('module', 'mymodule') . '/myjs.js');
  }
}

Ich habe preprocess_node Statt preprocess_page Verwendet, weil es einfacher ist, zum Knotentyp zu gelangen. Wenn Sie tatsächlich auf eine Javascript-Datei verweisen, wird diese automatisch zwischengespeichert ( siehe Abschnitt Parameter ).

6
Jukebox

sie können auch hook_node_view verwenden, um den Inhaltstyp zu überprüfen und dann die js so hinzuzufügen, wie Sie es bereits tun.

OR

Wenn Sie ein Feld haben, das die Informationen ausgibt, die das JS verwenden, verwenden Sie dort einen Präprozessor, um die js hinzuzufügen. Daher hängt das js-Include von dem Feld ab, in dem die Karte angezeigt wird, und nicht vom Inhaltstyp.

2
Jeremy French

Eine einfache Lösung besteht darin, einfach die add_js zu platzieren:

  drupal_add_js('drupal_get_path('module', 'mymodule') . '/myjs.js');

in der Seite/Knoten template.php.

0
Nevos