A chaque usage son plugin
bazooka07
PluXml Lead Developer, Moderator
Bonjour,
On peut classer basiquement les plugins en 3 catégories :
* ceux qui ne servent que du côté admin : la plupart des éditeurs ckEditor, TinyMCE, Codemirror, Ace, d'autres utilitaires moveMyDatas, kzUploader, ...
* ceux qui ne servent que du côté site : ceux qui servent à rendre votre site plus attractif: sliders, Lightbox, réseaux sociaux, ...
* ceux qui servent des 2 côtés : filtre anti-captcha, calendrier, ....
Et PluXml charge à chaque fois tous les plugins activés sans tenir compte de vos besoins d'administrateur ou de simple visiteur.
Par exemple, je doute de l'intérêt pour un visiteur de charger un éditeur Wisiwyg. On aura un moins un accès disque dur inutile pour télécharger la déclaration de class du plugin, voire envoyer au visiteur un grosse librairie Javascript ( coucou JQuery ) si les hooks sont mal utilisés. A cela s'ajoutent des risques d'intrusion si la sécurité est le dernier des soucis de l'auteur du plugin ( Qui filtre ses posts avec filter_input ? )
Pour éviter de charger des plugins inutiles à son utilisation, il serait simple d'ajouter un attribut ou une balise xml dans le fichier infos.xml de chaque plugin qui pourrait être absent, ou avoir la valeur 'admin' ou 'site'. Et à l'activation du plugin conserver cette valeur avec le nom du plugin dans le fichier de configuration plugins.xml.
Ensuite au démarrage de PluXml, il suffit dans la méthode plxPlugins::loadPlugins() de vérifier la présence de la constante PLX_ADMIN pour charger uniquement les plugins nécessaires à l'admin du site ou commun côtés admin et site. En l'absence de cette constante, on ne charge que les plugins nécessaires pour le côté site et commun côtés site et admin.
Mettre cela en place est relativement facile avec PLuXml et encore plus pour tous les plugins.
Qu'en pensez-vous ?
On peut classer basiquement les plugins en 3 catégories :
* ceux qui ne servent que du côté admin : la plupart des éditeurs ckEditor, TinyMCE, Codemirror, Ace, d'autres utilitaires moveMyDatas, kzUploader, ...
* ceux qui ne servent que du côté site : ceux qui servent à rendre votre site plus attractif: sliders, Lightbox, réseaux sociaux, ...
* ceux qui servent des 2 côtés : filtre anti-captcha, calendrier, ....
Et PluXml charge à chaque fois tous les plugins activés sans tenir compte de vos besoins d'administrateur ou de simple visiteur.
Par exemple, je doute de l'intérêt pour un visiteur de charger un éditeur Wisiwyg. On aura un moins un accès disque dur inutile pour télécharger la déclaration de class du plugin, voire envoyer au visiteur un grosse librairie Javascript ( coucou JQuery ) si les hooks sont mal utilisés. A cela s'ajoutent des risques d'intrusion si la sécurité est le dernier des soucis de l'auteur du plugin ( Qui filtre ses posts avec filter_input ? )
Pour éviter de charger des plugins inutiles à son utilisation, il serait simple d'ajouter un attribut ou une balise xml dans le fichier infos.xml de chaque plugin qui pourrait être absent, ou avoir la valeur 'admin' ou 'site'. Et à l'activation du plugin conserver cette valeur avec le nom du plugin dans le fichier de configuration plugins.xml.
Ensuite au démarrage de PluXml, il suffit dans la méthode plxPlugins::loadPlugins() de vérifier la présence de la constante PLX_ADMIN pour charger uniquement les plugins nécessaires à l'admin du site ou commun côtés admin et site. En l'absence de cette constante, on ne charge que les plugins nécessaires pour le côté site et commun côtés site et admin.
Mettre cela en place est relativement facile avec PLuXml et encore plus pour tous les plugins.
Qu'en pensez-vous ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Dans les devs en cours que je prepare pour la suite de PluXml, j'ai intégré une notion de "scope" pour définir lors de la déclaration d'un hook (appel de la fonction addHook) quand le hook doit etre chargé en fonction de la page affichée.
Ce qui mettra par exemple de charger un fichier externe .js que si on est sur la page article.php de l'admin
C'est facile à faire coté admin car il suffit de regarder en fonction du fichier .php présent dans l'url et de rajouter un parametre dans l'appel du hook
ex: $this->addHook('Hook', 'monHook', 'article.php');
de cette façon on ne charge et garde en mémoire la définition du hook que si on est sur la page article.php de l'admin
Coté visiteur, c'est un peu plus compliqué car il tenir compte du mode d'affichage (home, article, statique, etc...) car on passe toujours par le fichier index.php et le mode d'affichage est définit après le chargement des plugins. Donc difficile d'appliquer le meme raisonnement que coté admin. Il faut encore que je réfléchisse comment faire au mieux coté visiteur.
C'est en cours de réflexion et ça demande à murir, mais ça rejoins ton sujet
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Ce que je propose est d'un niveau plus bas.
Constituer 3 listes de plugins :
* ceux exclusifs à l'admin
* ceux exclusifs au site
* ceux communs aux deux côtés
Pour ne pas tout bouleverser, l'idée est d'ajouter un attribut ou une balise dans infos.xml et de l'enregistrer dans la liste des plugins activés dans le fichier plugins.xml.
Et cette valeur définit les plugins à télécharger dans loadPlugins selon l'existence de la constante PLX_ADMIN.
Cela évite d'aller lire les fichiers des plugins inutiles.
Il revient juste à chaque auteur de plugin de rajouter cet attribut ou cette basile dans leur fichier infos.xml
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
modif très simple à faire et qui ne devrait prendre que quelques lignes de code en plus.
tres bien vu JP. Merci
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
copies d'écran :
https://flic.kr/p/HDQA8c
https://flic.kr/p/21fErAF
Exemple de fichier infos.xml d'un plugin La balise usage peut prendre la valeur admin, site, être vide ou absente.
Pour connaitre la liste des plugins chargés côté site, ajouter la ligne suivante à la fin du fichier footer.php du thème courant et afficher le code source de la page HTML (Ctrl-U) :
En attendant la validation du pull-request, utiliser Git pour tester :
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Ce qui donne pour le plugin moveMyDatas :
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2