Priorité de chargement des plugins

flipflipflipflip Member
juillet 2011 modifié dans Discussions générales
Bonjour, je finalise un plugin pour un thème et je suis face à un gros problème. Dans mon plugin j'utilise le hook ThemeEndHead pour charger un javascript qui nécessite jquery. Avec la version 5.1.1 j'ai activé le plugin jquery mais ça ne marche pas et la raison est simple, c'est à cause de l'ordre de chargement des plugins dans le core.

En code ça sera plus clair :
<head>
(...)
		<link rel="stylesheet" href="./plugins/plxcoinslider/coin-slider-styles.css" media="screen"type="text/css" />
		<script type="text/javascript" src="./plugins/plxcoinslider/coin-slider.min.js"></script>
		<script type="text/javascript" src="./plugins/jquery/jquery.min.js"></script>
	</head>
Dans ce cas coin-slider ne démarre pas, dans la console d'erreur de firefox j'ai :
Erreur : jQuery is not defined
Fichier Source : http://wwww/plugins/plxcoinslider/coin-slider.min.js
Ligne : 51
Erreur : $("#coin-slider").coinslider is not a function
Fichier Source : http://wwwwww
Ligne : 35
Si je mets en dur le code nécessaire pour charger jquery et coin-slider dans le bon ordre pas de soucis :
<head>
(...)
		<script type="text/javascript" src="./plugins/jquery/jquery.min.js"></script>
		<link rel="stylesheet" href="./plugins/plxcoinslider/coin-slider-styles.css" media="screen"type="text/css" />
		<script type="text/javascript" src="./plugins/plxcoinslider/coin-slider.min.js"></script>
	</head>
Bien sur le comportement est le même avec le thème par défaut.

Première question : Quel est le paramètre qui définit l'ordre de chargement des plugins ?
Deuxième question : Est-ce qu'il a été prévue un système de gestion des priorités de chargement des plugins ?

J'ai un string de l'array

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Il n'y a rien pour le moment pour définir l'ordre de chargement de plugins. c'est à l'étude

    1) soit tu mets les déclarations en dur dans le theme
    2) soit tu changes le nom du dossier du plugins pour qu'il se retrouve en debut de liste par ordre alphabétique et veillant à renomme la classe dans le fichier php qui porte le nom du dossier

    exemple:

    plugins/test/test.php

    devient:

    plugins/atest/atest.php et dans le fichier atest.php renommer la classe test en atest

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Bonsoir,

    Je suis pas très bon en français mais il me semble que plxcoinslider en nom de dossier et nom de classe arrive après jquery...

    Après test le nom du dossier n'a, à priori, rien à voir pour l'affichage côté admin. Par exemple pour mon plugin le nom du dossier est plxcoinslider, le nom de la class identique mais la valeur du title dans info.xml était "Créer un slideshow" donc forcement dans ce cas il était avant jquery. Après modification en plxcoinslider il passe après.

    Peut être une piste pour votre ordre de priorité...

    Je continue mon test après renommage. Côté admin pas de soucis il est affiché après jquery mais côté public il est toujours chargé avant jquery. Je fouille dans le fichier data/configuration/plugins.xml et je me rends compte que jquery est le dernier de la liste :
    <?xml version='1.0' encoding='UTF-8'?>
    <document>
    	<plugin name="plxcapchaimage" activate="1"><![CDATA[Image Capcha]]></plugin>
    	<plugin name="plxtoolbar" activate="1"><![CDATA[plxToolbar]]></plugin>
    	<plugin name="plxdescription" activate="1"><![CDATA[Description complémentaire]]></plugin>
    	<plugin name="plxcoinslider" activate="1"><![CDATA[plxcoinslider]]></plugin>
    	<plugin name="jquery" activate="1"><![CDATA[jQuery 1.4.4]]></plugin>
    </document>
    
    Je modifie le fichier passant mon plugin en dernier :
    <?xml version='1.0' encoding='UTF-8'?>
    <document>
    	<plugin name="plxcapchaimage" activate="1"><![CDATA[Image Capcha]]></plugin>
    	<plugin name="plxtoolbar" activate="1"><![CDATA[plxToolbar]]></plugin>
    	<plugin name="plxdescription" activate="1"><![CDATA[Description complémentaire]]></plugin>
    	<plugin name="jquery" activate="1"><![CDATA[jQuery 1.4.4]]></plugin>
    	<plugin name="plxcoinslider" activate="1"><![CDATA[plxcoinslider]]></plugin>
    </document>
    
    Magie ça marche...

    J'ai un string de l'array

Connectez-vous ou Inscrivez-vous pour répondre.