So che questo post è un po' datato, ma una buona risposta avrebbe fatto comodo anche a me.
Quindi, ecco qualche informazione aggiuntiva sulla classe
JHtml ed in particolare sul misterioso metodo statico
_ (underscore).
Ormai mancano poche ore alla release ufficiale della versione 3.0 di Joomla!, quindi prenderò come esempio l'istruzione:
JHtml::_('bootstrap.framework');
che si può trovare nel file
index.php del nuovo template Protostar. (
joomla_path/templates/protostar).
Quest'istruzione significa
«Esegui il metodo framework() della classe JHtmlBootstrap.» Il metodo
framework() carica gli header necessari per il framework Bootstrap (e quindi gli header necessari per il supporto mobile).
Da dove deriva tutto ciò?
Il metodo
JHtml::_() fa esplodere il suo primo argomento in 2 parti:
- il nome del file (in questo caso 'bootstrap.php');
- il nome del metodo da eseguire (in questo caso 'framework()');
Il file
bootstrap.php si trova in
joomla_path/libraries/cms/html, e al suo interno è definita la classe
JHtmlBootstrap.
Il file
bootstrap.php ha al suo interno la classe
JHtmlBootstrap. L'ipotetico file
foo.php avrà al suo interno definita la classe
JHtmlFoo.
È possibile eseguire qualsiasi metodo di qualsiasi classe (di qualsiasi file) contenuta in
joomla_path/libraries/cms/html e
joomla_path/libraries/joomla/html.
Eventuali parametri addizionali passati al metodo
JHtml::_() verranno inviati direttamente alla funzione invocata. Ad esempio:
JHtml::_('bootstrap.framework', true);
Passa il parametro
true alla funzione
framework() dell'oggetto
JHtmlBootstrap.
Spero di essere stato di aiuto.
EDIT:
In Joomla 3.0, la classe
JHtml può eseguire anche i metodi degli oggetti contenuti nella cartella
/libraries/legacy/html.
Non so se la lista delle path è esaustiva e se lo sarà nel prossimo futuro. Per una lista esaustiva fare riferimento al campo
$includePath della classe.