$wr->add('script' marche pas

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • $wr->add('script' marche pas

    Hi

    dans le head je ne n include que les metas <jdoc:include type="metas" /> pour controler moi meme ce qui est inclus ou pas
    apres lecture de https://docs.joomla.org/J4.x:Web_Assets j'essaye :
    Code:
    $wa = $this->getWebAssetManager();
    $wr = $wa->getRegistry();
    
    $wa->registerScript('jquery', 'media/vendor/jquery/js/jquery.min.js');
    OR
    $wr->add('script', new Joomla\CMS\WebAsset\WebAssetItem('jquery', 'media/vendor/jquery/js/jquery.min.js', ['type' => 'script']));
    mais Jquery n'est pas ajoute avec aucune des 2 methodes

    merci

  • #2
    Sur un template:
    * ici Cassiopeia
    * mon exemple propose jQuery + un script d'usage jQuery-dependant

    Code PHP:
    defined('_JEXEC') or die;

    use 
    Joomla\CMS\Factory;
    use 
    Joomla\CMS\HTML\HTMLHelper;
    // import des bibliothèques du Framework Joomla nécessaires dans ce cas de figure


    // code ci-dessous présent dans index.php de Cassiopeia, mais je l'indique au cas où le contexte est différent, par ex une extension

    $app Factory::getApplication();
    // $wa = $this->getWebAssetManager();
    $wa $app->getDocument()->getWebAssetManager(); //-> code plus général qu'avec $this
    // ou, raccourci,  $wa = Factory::getApplication()->getDocument()->getWebAssetManager(); 


    Code PHP:
    $wa->registerAndUseScript('myjquery','vendor/jquery/jquery.min.js', [], ['defer' => true], ['core']);
    $wa->registerAndUseScript('myjqueryscript','media/templates/site/cassiopeia/js/jQuery_get_browser_size.js', [], ['defer' => true], ['core']);

    $wa->useScript('myjquery')
    ->
    useScript('myjqueryscript'); 
    NB : petite incohérence sur l'écriture des paths de jQuery et du script d'usage, pas localisés au même endroit (je vois à peu près pourquoi, mais c'est une question pour github).

    TIP : avec un script en CDN, fonctionne aussi:
    Code PHP:
    $wa->registerScript('foobar''http://fobar.cdn.blabla/foobar.js', [], [], ['core']); 

    Mon script d'usage, juste pour tester:

    Code:
    $(document).ready(function() {
    
    var w = $(window).width();
    var h = $(window).height();
    var x = document.getElementById("demo");
    x.innerHTML = "Browser width: " + w + ", height: " + h + ".";
    
    });

    La solution dite "paresseuse" (mais néanmoins efficace) proposée par pmleconte, ie.:
    Code PHP:
    HTMLHelper::_('script''vendor/jquery/jquery.min.js', array('version' => 'auto''relative' => true)); 
    fonctionne très bien.
    Mais sera-t-elle conservée dans les versions ultérieures de J! ? Pas évident.
    NB : je viens de tester dans la 4.3.x-dev, ça marche encore.
    ekiekieki aime ceci.
    Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

    Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

    Commentaire


    • #3
      Merci beaucoup pour cette réponse très complète

      Commentaire

      Annonce

      Réduire
      Aucune annonce pour le moment.

      Partenaire de l'association

      Réduire

      Hébergeur Web PlanetHoster
      Travaille ...
      X