Plugin, prise en compte des css site et admin ?

Bonjour,

quelle est la méthode lorsqu'on programme un plugin pour que soit pris en compte les feuilles de styles site.css et admin.css dans le répertoire css du plugin ?
Il ne semble pas que les modifications soient prise en compte. Je ne vois pas le fichier de cache créé comme l'indique la doc.
Du coup obligé d'utiliser les hook ThemeEndHead et AdminEndHead pour les faire prendre en compte.
Mais du coup, en cas de modif, les css originaux ne sont pas conservé.

Je suis en train d'écrire un plugin pagination regroupant mon plugin staticPagination et une adaptation de plxMyPager.
Comme je presente les liens sous forme de liste (ul, li) j'ai besoin de fixer au minimum les styles de la liste pour que ça s'affiche en ligne.

J'ai d'ailleurs le même soucis avec d'autres plugins, je suis obligé d'inclure les style dans la feuille du thème.

Réponses

  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Bonjour,

    Désactive et réactive ton plugin.
    Vérifie que ton serveur a les droits en écriture dans le dossier plugins (pas de message d'erreur en cas d'échec !)

    A++
  • gegewebgegeweb Member
    octobre 2015 modifié
    Ce n'est pas un problème de droit.
    Les modifications apportées aux deux fichiers sont bien enregistrées.
    Mais les feuilles de styles ne sont tout simplement pas chargées.
    Sauf à les charger en les rajoutant dans le head avec ThemeEndHead.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour

    Passe par l'écran "Code css" sur l'écran de gestion des plugins pour ton plugin. Clic sur le bouton Enregistrer pour mettre à jour le cache.
    Pour recharger les fichiers site.css et admin.css il faut supprimer manuellement le cache et repasser par l'écran "Code css"

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Les fichiers site.css et admin.css sont bien créés à la racine de plugins/.
    Mais… ne sont pas chargé.

    Je loupe encore quelque chose ?
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Il doit manquer cette ligne dans le fichier header.php de ton thème :
    [== PHP ==]
    	<?php $plxShow->pluginsCss() ?>
    

    A++
  • bazooka07 a écrit:
    Il doit manquer cette ligne dans le fichier header.php de ton thème :
    [== PHP ==]
    	<?php $plxShow->pluginsCss() ?>
    

    A++

    En effet, c'est bien ça !
    Il faudra que je pense à le rajouter dans l'aide du plugin.
    Merci.

    Par contre il faut que le(s) fichier(s) est préalablement été sauvegardé, même sans modifications (à priori, à moins que je loupe encore un truc).
    Il ne suffit pas que le fichier css/site.css soit présent.

    Et que faut-il faire pour que les fichiers css/admin.css soit chargé (et surtout que les modifs utilisateurs le soient) ?
  • gegewebgegeweb Member
    octobre 2015 modifié
    gegeweb a écrit:
    Et que faut-il faire pour que les fichiers css/admin.css soit chargé (et surtout que les modifs utilisateurs le soient) ?

    En fait rien.
    Mais le problème est que les css ne sont mis en cache que si on les affiche d'abord puis on les sauvegarde.
    Donc avant cette manip, ça n'est pas pris en compte.
    Il ne manquerait pas un truc dans le core pour charger automatiquement les css présents dans les répértoires css/ des plugins avant l'appel des fichier caches ?

    Et à mon avis, il manque aussi une fonction pour recharger le fichier original (pour revenir aux css de bases après des modifs malheureuses).
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    css/admin.css est utilisé uniquement dans le back-office du site. Il n'y en a pas besoin dans la partie publique.

    Les caches css sont mis à jour quand on active ou désactive un plugin.
    Le souci est quand on fait des modifs sur une feuille de style sur un plugin activé, le cache n'est pas mis à jour automatiquement. Un peu usant à la longue.
    Il faudrait faire une mise à jour quand on enregistre le panneau de config.
  • Avez-vous essayé le plugin CSSnoCache ? Il me semble répondre à votre besoin.

    Je l'active à chaque fois que je bidouille sur mes sites. Faut juste penser à le désactiver ensuite :)
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    octobre 2015 modifié
    J'ai une autre astuce.

    Dans le plugin en cours de développement, je rajoute les lignes suivantes dans le fichier config.php, entre le traitement du $_POST et la génération du formulaire :
    [== PHP ==]
    // Mise à jour feuilles de styles globales
    foreach (array('admin', 'site') as $typeCSS) {
    	$filename = __DIR__.'/css/'.$typeCSS.'.css';
    	if (file_exists($filename)) {
    		if  (! file_exists(PLX_PLUGINS.$typeCSS.'.css') or 
    			(filemtime(PLX_PLUGINS.$typeCSS.'.css') < filemtime($filename)))
    				$plxAdmin->plxPlugins->cssCache($typeCSS);
    	}
    }
    

    A++
  • gegewebgegeweb Member
    octobre 2015 modifié
    bazooka07 a écrit:
    css/admin.css est utilisé uniquement dans le back-office du site. Il n'y en a pas besoin dans la partie publique.

    Oui je sais, mais dans la configuration du plugin, comme le fait Stéphane F. pour plxMyPager, j'affiche la présentation de la pagination.
    Donc j'ai aussi besoin de la "styler" à cet endroit.
    bazooka07 a écrit:
    Les caches css sont mis à jour quand on active ou désactive un plugin.
    Le souci est quand on fait des modifs sur une feuille de style sur un plugin activé, le cache n'est pas mis à jour automatiquement. Un peu usant à la longue.

    Voilà, c'était exactement mon problème (qui n'en est finalement pas un du coup).
    Je crois (mais à vérifier) qu'il n'est pas mis à jour (ou alors il est écrasé) lorsqu'on installe la mise à jour d'un plugin. Du coup ça fout un peu le bronx parfois…
    bazooka07 a écrit:
    Il faudrait faire une mise à jour quand on enregistre le panneau de config.

    En fait il manque, je pense, surtout une fonction pour recharger les fichiers css/site.css et css/admin.css.

    C'est tout bon ! Je vais pouvoir publier mon plxMyPagination !
    Je fais commencer par 'plx' car il utilise (et modifie) le hook plxShowPagination pour la partie pages statiques. Je ne sais pas si c'est la convention.
    J'ai aussi repris le logo du plugin plxMyPager de Stéphane F. (adaptation intégrée) pour ce plugin. J'éspère que ça aussi ça ne pose pas de soucis.
Connectez-vous ou Inscrivez-vous pour répondre.