it-swarm.dev

Come utilizzare ulteriori librerie dell'interfaccia utente jQuery come trascinabili?

Secondo i documenti in jQuery UI Framework , per utilizzare una libreria JUI come sortable, è richiesto il seguente codice: JHtml::_('jquery.ui', array('sortable'));

Apparentemente funziona bene se jquery.ui.sortable.js esiste, ma non esistono file equivalenti per altre librerie JUI, specificamente trascinabili/trascinabili.

Qual è il modo corretto di utilizzare le librerie JUI che non sono incluse con l'installazione J3.x di base?

Soluzione: Con la guida di @lodder, ecco i passaggi che ho seguito per ottenere l'intera libreria JUI funzionante:

  1. È andato a JUI Themeroller e ha creato/scaricato il tema e i file correlati
  2. Creata la cartella component/com_XXX/assets/jquery-ui-1.11.0.custom per contenere il tema e le librerie dallo zip scaricato.
  3. Aggiunto il codice seguente al mio componente e "tada" ... tutte le caratteristiche/funzioni della JUI erano disponibili.

( Questo posto non sarebbe lo stesso senza Lodder)

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

Per importare ulteriori librerie JS, è necessario utilizzare il metodo JHtml in questo modo:

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

Esistono no collegamenti CDN di cui sono a conoscenza per widget jQueryUI separati, il che è un peccato, altrimenti avresti potuto farlo:

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

Per quanto riguarda la posizione dei file JS, vorrei creare una cartella nella cartella "media" e inserirli o aggiungerli alla stessa directory dei file core:

ROOT/media/jui/js

Aggiornamento 1:

Non è necessario sostituire la libreria JUI. Quella che vedi attualmente è la libreria principale che non contiene alcun widget. Widget che, una volta importati, provengono da file separati e vengono eseguiti utilizzando il codice fornito nella domanda. Per ottenere widget che non sono forniti con il pacchetto Joomla, puoi fare come ho descritto nella mia risposta oppure compilare un pacchetto JUI sul sito Web ufficiale e sostituire jquery.ui.core.min file con esso. Quindi, l'utilizzo importerà il core insieme ai widget con cui lo hai compilato.

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

Questo è comunque non raccomandato

Aggiornamento 2:

Dopo aver visto la documentazione, puoi anche aggiungere le tue librerie e chiamarle usando:

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

Non sono sicuro di come funzioni come non l'ho mai provato, ma è anche un'altra alternativa e anche a favore dell'aggiornamento 1.

1
Lodder