Dans cet article: Comment ajouter CSS/JS/une image à un module backend @lodder me montre comment utiliser HTMLHelper
pour ajouter CSS
et JavaScript
.
Auparavant, j'avais suivi le Joomla! documentation https://docs.joomla.org/Adding_JavaScript qui suggère d'utiliser addScript()
Dans l'exemple de Lodder, il utilise un form field
Puis un getInput
donc je me suis demandé si cela faisait une différence. Je suis désireux d'apprendre la bonne façon de faire avancer les choses et je sais l'espace de noms est ce que je devrais utiliser comme bonne habitude.
Ma question est au lieu d'utiliser JHhtml
pour des choses comme
JHtml::script('jui/jquery.min.js', false, true);
pour charger jQuery en premier, puis-je faire maintenant
HTMLHelper::_('script', 'jui/jquery.min.js', false, true);
Et deuxièmement, au lieu d'ajouter à l'en-tête du document comme ceci:
$document = JFactory::getDocument();
$document->addScript($mediaUrl . '/js/' . $moduleName . ".js",
"text/javascript", true, false, array('version' => 'auto'));
Puis-je le faire comme ça?
$document = JFactory::getDocument();
$document->HTMLHelper::_('script', 'jui/jquery.min.js', false, true);
1) JHtml
est un alias pour la classe Joomla\CMS\HTML\HTMLHelper
. Vous devrez commencer à utiliser la vraie classe tôt ou tard car l'alias n'existera pas dans Joomla! 5.0. Pour utiliser la vraie classe, vous devez soit l'importer:
use Joomla\CMS\HTML\HTMLHelper;
HTMLHelper::doSomething();
HTMLHelper::doSomethingElse();
Ou utilisez un nom de classe complet:
\Joomla\CMS\HTML\HTMLHelper::doSomething();
\Joomla\CMS\HTML\HTMLHelper::doSomethingElse();
2) Non, cela ne fonctionne pas. L'objet document n'a pas de propriété appelée HTMLHelper
. Utilisez l'une des méthodes indiquées ci-dessus.
Remarque, vous pouvez utiliser HTMLHelper::_('jquery.framework')
pour ajouter le noyau jQuery.