hook "ThemeBeginHead" ?

danielsandanielsan Member
décembre 2011 modifié dans Discussions générales
Bonjour,

existe-t-il un hook qui insère au début du head ?

En effet je joins à certains plugins une feuille CSS globale.
Comme les derniers styles pris en compte sont les derniers,
avec ThemeEndHead il n'est plus possible de modifier les styles avec sa CSS perso
( genre changer la couleur du bordure ).

Quelqu'un a-t-il une solution ?

Cordialement,

_____
D.San

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Salut Daniel

    Non il n'y a pas de ThemeEndHead (pour info, tous les hooks dispos sont listés dans la doc des plugins)

    Par contre j'ai du mal à voir ton problème. tu peux me détailler un exemple stp ?

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Salut Stéphane,

    je crée un plugin qui rajoute un contenu spécifique nécessitant une feuille de style.
    ex: créer des onglets alignés horizontalement.
    Ces onglets ont une bordure "grey" et un background "smokewhite".

    J'ai donc créé une CSS "défaut" que j'insère avec le hook themeEndHead.

    Maintenant, je souhaite intégrer la charte graphique du site.
    J'utilise donc ma feuille de style qui dit les bordures sont rouges et les fonds roses.

    Hors, comme la feuille insérée du plugin se trouve après celle du template,
    mes modifications ne sont pas prises en compte.

    Je souhaiterai que les gens évitent d'aller modifier la feuille CSS "défaut" du plugin
    et qu'ils utilisent la leur pour modifier voir annuler mon style.

    C'est mieux là ?

    Plus simple, pour mes thèmes j'utilise la CSS du thème défaut et je rajoute après une CSS avec mes styles.
    ça serait cool de pouvoir faire la même chose avec les plugins.

    Cordialement,
  • StéphaneStéphane Member, Former PluXml Project Manager
    non c'est pas mieux. lol
    je dois etre trop fatigué pour ce soir.
    je relirai ton post demain
    tu peux me faire un mail si tu veux (sinon je risque d'oublier de regarder) :p

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Vu le fonctionnement des hooks, je pense que ce n'est pas possible : le hook ThemeEndHead remplace la balise head par le contenu de la méthode ThemeEndHead + la balise head.

    La seule façon d'avoir la css de ton plugin avant celle du thème est, par l'intermédiaire de ton plugin, de récupérer le contenu de la css du thème et de le ré-injecter en fin d'entête de la page. Ça sera moche, car la css du thème sera appelée deux fois, mais c'est jouable.
  • danielsandanielsan Member
    décembre 2011 modifié
    hello,

    ne peut-il pas y avoir la méthode ThemeHead qui place le header de notre theme au milieu du hook ThemeBeginBody et ThemeEndHead ?

    Sinon peut-on placer l'appel d'un plugin dans le header ?
    Vu qu'on peut maintenant envoyer des paramètres, suffit de placer
    <?php eval($plxShow->callHook('monPlugin', 'css')); ?>
    
    je laisse ainsi le choix d'insérer la css ou non.
    Je teste ça tiens !

    edit: ça a l'air de fonctionner cette affaire :D

    Puis-je me baser sur cette pratique ?
  • danielsan a écrit:
    hello,

    ne peut-il pas y avoir la méthode ThemeHead qui place le header de notre theme au milieu du hook ThemeBeginBody et ThemeEndHead ?

    Sinon peut-on placer l'appel d'un plugin dans le header ?
    Vu qu'on peut maintenant envoyer des paramètres, suffit de placer
    <?php eval($plxShow->callHook('monPlugin', 'css')); ?>
    
    je laisse ainsi le choix d'insérer la css ou non.
    Je teste ça tiens !

    edit: ça a l'air de fonctionner cette affaire :D

    Puis-je me baser sur cette pratique ?

    Je pense que oui. C'est le principe des hooks. La seule chose c'est que ce n'est pas un hook par défaut. Il faudra donc le mettre dans chaque thème voulant utiliser ton plugin. Dans ces conditions, placer directement la ligne de css ira plus vite...
  • c'est pas faux.
    tout dépend aussi du plugin ...
    mais l'idée d'un hook themeBeginHead est quand-même bien mieux.
Connectez-vous ou Inscrivez-vous pour répondre.