Astuce boucle spip, chargement sélectif des fichiers js

Le but est de faire une boucle sur un #ARRAY ayant comme clé le nom d’un script js, et un booléen en tant que valeur.

On active ou désactive le script simplement en remplaçant la valeur par 1.

Dans le cadre d’un design utilisant bootstrap, on souhaite pourvoir activer facilement une ou plusieurs bibliothèques javascript.

  1. <BOUCLE_for(DATA){source table,#ARRAY{
  2.    affix.js,0,
  3.    alert.js,0,
  4.    button.js,0,
  5.    carousel.js,0,
  6.    collapse.js,1,
  7.    dropdown.js,0,
  8.    modal.js,0,
  9.    popover.js,0,
  10.    scrollspy.js,0,
  11.    tab.js,0,
  12.    tooltip.js,0,
  13.    transition.js,0,
  14. }}>
  15. [(#VALEUR|=={1}|oui)
  16. <script src="#CHEMIN{javascript/bootstrap/#CLE}"></script>
  17. ]
  18. </BOUCLE_for>

Télécharger

La même chose, mais en mieux, dans le cadre de la création d’un plugin est d’utiliser le pipeline insert_head($flux).

  1. function monPlugin_insert_head($flux){
  2.  
  3.     # Déclarer le array listant les scripts js
  4.    $bstrpJs = array(
  5.         'affix.js'      => 0,
  6.         'alert.js'      => 0,
  7.         'button.js'     => 0,
  8.         'carousel.js'   => 0,
  9.         'collapse.js'   => 1,
  10.         'dropdown.js'   => 1,
  11.         'modal.js,0'    => 0,
  12.         'popover.js'    => 0,
  13.         'scrollspy.js'  => 0,
  14.         'tab.js'        => 0,
  15.         'tooltip.js'    => 0,
  16.         'transition.js' => 0,
  17.     );
  18.  
  19.     # Boucler sur le tableau listant les scripts
  20.    foreach($bstrpJs as $script => $active){
  21.         if($path = find_in_path("javascript/bootstrap/$script") AND $active > 0){
  22.             $flux .= '<script type="text/javascript" src="'. $path .'"></script>';
  23.         }
  24.     }
  25.     return $flux;
  26. }

Télécharger