Sollte ich den Code einfach in die Hauptvorlagendatei einfügen, oder gibt es eine andere empfohlene Möglichkeit, neue Jquery-Plugins in Drupal 7 anzufügen?
javascript
Vonder
quelle
quelle
drupal_add_js
( api.drupal.org/api/drupal/includes--common.inc/function/… ).Antworten:
Am einfachsten fügen Sie es einfach in die .info-Datei Ihres Themas ein:
Die einzige Ausnahme ist, wenn Sie eine externe Ressource (CDN / Hosted Script) hinzufügen. In diesem Fall sollten Sie drupal_add_js () verwenden, wie von Jamie Hollern erläutert
quelle
Uncaught TypeError: undefined is not a function
drupal_add_library()
Drupal hat JQuery damit verpackt.
Um eine js-Datei hinzuzufügen, können Sie drupal_add_js wie in anderen Posts beschrieben verwenden.
Dies funktioniert in einfachen Fällen, aber wenn Sie Plugins haben, die von anderen Plugins abhängen. Vielleicht möchten Sie sich die Libraries API ansehen . Ich gehe davon aus, dass in Kürze Module erstellt werden, die gängige Bibliotheken unterstützen. Einige für JQuery ui sind in see system_library () enthalten .
In diesem Beispiel können Sie zum Einbinden des Moduls jQuery ui.accordion drupal_add_library () verwenden.
Dadurch wird sichergestellt, dass das js zusammen mit dem CSS und allen davon abhängigen Bibliotheken enthalten ist. Es wird auch sichergestellt, dass die Bibliotheken nur einmal enthalten sind.
Wenn Sie sagen, welche Bibliothek Sie verwenden, kann ich Beispielcode für die Definition bereitstellen
Erstellen Sie also zuerst ein Modul, um die Bibliothek zu definieren (nennen Sie es qtip), und laden Sie das Modul in einen js-Ordner unter dem Modulordner hoch
dann implementiere hook_library ()
Dann fügen Sie die Datei in Ihren Code ein
Dies mag für eine einfache Bibliothek zu viel sein, aber wenn Sie eine große Anzahl von Bibliotheken über mehrere Sites und Themen verwalten müssen, erleichtert dies das Leben erheblich.
quelle
Wenn Sie das Skript nur auf einigen Seiten (nicht auf allen) laden möchten, können Sie es über Ihre template.php-Datei hinzufügen. Fügen Sie einfach Code hinzu, der diesem ähnlich ist:
Ich habe dies nur in Drupal 6 getestet.
quelle
Sie können dem Thema, das Sie auf der Drupal-Site verwenden, eine JavaScript-Datei hinzufügen, indem Sie eine
script[] =
Zeile in die .info-Datei des von Ihnen verwendeten Themas einfügen. Ich würde diesen Fall nur in Betracht ziehen, wenn Sie ein benutzerdefiniertes Thema oder eine geänderte Version eines vorhandenen Themas verwenden, das umbenannt wurde. Ich würde nicht empfehlen, dies zu tun, wenn Sie beispielsweise Garland verwenden. In solchen Fällen bedeutet dies, dass bei jeder Aktualisierung des Designs alle Änderungen verloren gehen oder die aktualisierten Designdateien kopiert werden und dieselben Änderungen wie in der vorherigen Version der Dateien erneut angewendet werden. Wenn durch die Änderung nur einescript[]
Zeile hinzugefügt wird, ist die Änderung minimal, und es könnte sich lohnen, dies zu tun. Dies würde jedoch auch bedeuten, dass die JavaScript-Dateien nicht in dem Verzeichnis hinzugefügt werden, das die Designdateien enthält, oder Sie sollten die JavaScript-Dateien alle hinzufügen Zeitpunkt, an dem das Thema aktualisiert wird.Alternativ können Sie ein benutzerdefiniertes Modul erstellen oder Code zu einem vorhandenen benutzerdefinierten Modul hinzufügen, das Sie bereits für diese Site verwenden.
Der Vorteil ist, dass die JavaScript-Dateien zu jedem Design als Standard- oder Verwaltungsdesign hinzugefügt werden, ohne dass alle auf der Website aktivierten Designs geändert werden müssen und die Benutzer selbst auswählen können.
Wie bereits in einer anderen Antwort berichtet,
hook_init()
ist der Haken, den Sie implementieren sollten. Ich werde hinzufügen, dass dieshook_library()
der neue Hook ist, der in Drupal 7 für Javascript-Dateien wie jQuery-Plug-Ins hinzugefügt wurde.quelle
Sie können das Js Injector- Modul verwenden, um Skripte direkt im Drupal-Verwaltungsbereich hinzuzufügen. Alternativ können Sie die Funktion drupal_add_js () verwenden, um Ihre js-Datei zu Ihrer Seite hinzuzufügen.
quelle
Sie können ein einfaches benutzerdefiniertes Modul erstellen und auf diese Weise hinzufügen. Der Code würde ungefähr so aussehen:
quelle
Sie können einfach in verwenden,
YOURTHEME_preprocess_theme()
wenn Sie logische Bedingung anwenden möchten:drupal_add_js(drupal_get_path('theme','your_theme').'/js/yourplugin.js');
und füge auch in yourtheme.info hinzu:
scripts[] = js/yourplugin.js
quelle
Wenn Sie das Kontextmodul verwenden, installieren Sie Kontext-Assets hinzufügen. Richten Sie einen globalen Kontext oder einen bestimmten Kontext ein und fügen Sie eine neue Reaktion hinzu, um das JS-Asset nach Pfad oder Modul hinzuzufügen.
Keine Kodierung erforderlich.
quelle
Es gibt viele externe Bibliotheken, die heutzutage einbezogen werden müssen.
Es ist nicht immer wünschenswert, sie alle im js-Verzeichnis des Themas abzulegen, da diese Bibliotheken manchmal aus mehreren js-Dateien und mehreren css-Dateien bestehen.
Am Ende habe ich die
libraries_get_path
Funktion des Bibliotheksmoduls verwendet, um ihre Pfade aus dem Verzeichnis sites / all / libraries zu ermitteln:So habe ich ausgewählte Dateien hinzugefügt, die sich auf textext.js beziehen:
Ich würde gerne hören, ob es ein externes Repository gibt, in dem alle diese Bibliotheken vordefiniert sind, sodass ich sie nicht manuell definieren muss.
quelle
Ich empfehle Ihnen, jQuery aus dem pupblic Google CDN zu laden. Weitere Informationen finden Sie unter folgendem Link: http://code.google.com/apis/libraries/devguide.html#jquery. Stellen Sie sicher, dass Sie dasselbe Skript nicht mehrmals auf Ihrer Website laden.
quelle
Das hat bei mir funktioniert, es ist nicht erforderlich, ein Modul für ein jQuery-Plugin zu erstellen oder eines zu installieren - in meiner template.php habe ich hinzugefügt:
quelle
Eine andere Möglichkeit besteht darin, der Datei
page.tpl.php den folgenden Code hinzuzufügen: drupal_add_js (drupal_get_path ('theme', 'path / to / your / plugin'). '/plugin.js', 'file');
quelle