Wie verwende ich zusätzliche jQuery-UI-Bibliotheken wie z. B. Draggable?

7

Gemäß den Dokumenten im jQuery UI Framework ist für die Verwendung einer JUI-Bibliothek wie sortableder folgenden Code erforderlich:JHtml::_('jquery.ui', array('sortable'));

Dies funktioniert anscheinend gut, wenn jquery.ui.sortable.jses existiert, aber es gibt keine äquivalenten Dateien für andere JUI-Bibliotheken, insbesondere ziehbar / ablegbar.

Was ist der richtige Weg, um JUI-Bibliotheken zu verwenden, die nicht in der J3.x-Kerninstallation enthalten sind?

Lösung: Unter Anleitung von @lodder habe ich folgende Schritte ausgeführt, um die voll funktionsfähige JUI-Bibliothek zu erhalten:

  1. Ging zu JUI Themeroller und erstellte / lud das Thema und die zugehörigen Dateien herunter
  2. Erstellt den Ordner component/com_XXX/assets/jquery-ui-1.11.0.custommit dem Thema und den Bibliotheken aus der heruntergeladenen Zip-Datei.
  3. Der folgende Code wurde zu meiner Komponente hinzugefügt und "tada" ... alle JUI-Features / -Funktionen waren verfügbar.

( Dieser Ort wäre ohne Lodder nicht der gleiche )

JHtml::_('jquery.framework');
JHtml::_('script', JUri::root() . 'components/com_XXX/assets/jquery-ui-1.11.0.custom/jquery-ui.min.js');
BIP
quelle

Antworten:

1

Um zusätzliche JS-Bibliotheken zu importieren, sollten Sie die folgende JHtmlMethode verwenden:

JHtml::_('script', JUri::root() . 'path/to/the/file/script.js');

Es gibt keine mir bekannten CDN-Links für separate jQueryUI-Widgets, was schade ist, sonst hätten Sie dies tun können:

JHtml::_('script', '//cdnjs.cloudflare.com/ajax/libs/script.js'); 

Was den Speicherort der JS-Dateien betrifft, würde ich entweder einen Ordner im Ordner "media" erstellen und dort ablegen oder sie demselben Verzeichnis wie die Kerndateien hinzufügen:

ROOT/media/jui/js

Update 1:

Sie müssen die JUI-Bibliothek nicht ersetzen. Die aktuell angezeigte ist die Kernbibliothek, die keine Widgets enthält. Widgets, die beim Importieren aus separaten Dateien stammen und mit dem in Ihrer Frage angegebenen Code erstellt werden. Um Widgets zu erhalten, die nicht im Joomla-Paket enthalten sind, können Sie entweder die in meiner Antwort beschriebenen Schritte ausführen oder ein JUI-Paket auf der offiziellen Website kompilieren und die jquery.ui.core.minDatei durch diese ersetzen . Wenn Sie dann verwenden, wird der Kern zusammen mit den Widgets importiert, mit denen Sie ihn kompiliert haben.

JHtml::_('jquery.ui');

Dies wird jedoch nicht empfohlen

Update 2:

Nachdem Sie sich die Dokumentation angesehen haben, können Sie auch eigene Bibliotheken hinzufügen und diese aufrufen, indem Sie:

JHtml::_('mylibrary.myloader');

Ich bin mir nicht sicher, wie das genau funktioniert, da ich es noch nie ausprobiert habe, aber es ist auch eine andere Alternative und auch zugunsten von Update 1.

Lodder
quelle
Soll ich also verstehen, dass die vollständige JUI-Bibliothek ersetzt werden sollte? Und wenn ja, "weiß" Joomla, dass die Standard- / Ausführungsversion durch die angegebene gewünschte Version ersetzt werden soll?
BIP
@GDP - Ich habe meine Antwort aktualisiert. Hoffe, dies bietet einen besseren Einblick
Lodder
Ah ... habe eine Problemumgehung mit Ihrer ursprünglichen Antwort gefunden, und sie funktioniert, aber ich werde sie jetzt untersuchen ... Ich versuche, mich an "nur den richtigen Weg" zu halten, um Dinge zugunsten des schnellen Machens zu tun. Arbeitsansatz, lol.
BIP
Der erste Teil meiner Antwort und Update 2 sind beide richtig :) Wenn Sie sich für die Update 2- Methode entscheiden, würde ich mich sehr freuen, wenn Sie uns mitteilen könnten, wie genau Sie dies tun, da es gut wäre, dies zu wissen zukünftige Referenz als Dokumentation dafür ist nicht sehr detailliert
Lodder
@GDP - Gibt es Neuigkeiten zu Ihren verwendeten Endergebnissen / Methoden?
Lodder