[plugin] MySkinSelect

StéphaneStéphane Member, Former PluXml Project Manager
Bonjour

MySkinSelect est un plugin qui permet d'installer une liste déroulante des thèmes disponibles sur le site pour que les visiteurs puissent choisir leur thème.

Le plugin et l'aide sont disponibles ici

Historique
=======
05/11/2012: version 1.1.2
BUG Mauvais nom du cookie

04/09/2012: version 1.1.1
[+] Changement du nom du cookie utilisé pour mémoriser le thème pour ne pas interférer avec d'autres

21/06/2012: version 1.1
[+] Redirection sur la page en cours de visualisation
BUG Pas de changement de thème si réécriture d'url activée

20/10/2011: version 1.0, 1.0.1, 1.0.2

Consultant PluXml

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

Réponses

  • super merci !
  • Après test, cela marche mais j'ai un warning à l'activation et sur l’affichage du site :
    Warning: Cannot modify header information - headers already sent by (output started at /homez.65/customta/www/blog/plugins/plxMySkinSelect/plxMySkinSelect.php:1) in /homez.65/customta/www/blog/index.php on line 69
    
  • StéphaneStéphane Member, Former PluXml Project Manager
    Peux-tu essayer de supprimer la derniere ligne qui traine à la fin du fichier plugins/plxMySkinSelect/plxMySkinSelect.php et me dire si ça supprime le warning
    Merci.

    Consultant PluXml

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

  • StéphaneStéphane Member, Former PluXml Project Manager
    version 1.0.1 dispo

    Consultant PluXml

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

  • J'ai pris ta version 1.0.1, j'ai désactivé tous les autres plugins, mis en place le thème par défaut et à l'activation de ton plugin, j'ai encore une erreur :
    Warning: Cannot modify header information - headers already sent by (output started at /homez.65/customta/www/blog/plugins/plxMySkinSelect/plxMySkinSelect.php:1) in /homez.65/customta/www/blog/core/admin/parametres_plugins.php on line 41
    
    Ensuite, quand je vais sur le site (je n'affiche pas l'option, je saisis moi même l'url, ça me sert pour dev :p) j'ai ce message sur un thème choisis :
    Warning: Cannot modify header information - headers already sent by (output started at /homez.65/customta/www/blog/plugins/plxMySkinSelect/plxMySkinSelect.php:1) in /homez.65/customta/www/blog/index.php on line 68
    
  • StéphaneStéphane Member, Former PluXml Project Manager
    Rhaaa !!! Bon faut que j'arrive à reproduire l'erreur. Forcément j'ai pas cette erreur, sinon ça serait trop facile :p

    Consultant PluXml

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

  • Mon hébergeur est OVH en mutualisé ;)
  • StéphaneStéphane Member, Former PluXml Project Manager
    Ok j'ai trouvé. Le fichier n'est pas au format UTF-8 sans BOM
    Le temps de mettre à jour l'archive et ça sera dispo

    Consultant PluXml

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

  • Yahoo !!! J'espère que ça va réglé le problème, j'attend ton accord pour le téléchargement à nouveau ;)
  • StéphaneStéphane Member, Former PluXml Project Manager
    version 1.0.2 dispo

    Consultant PluXml

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

  • Impecc, problème résolu !
    Ralalala, c'est chiant les problèmes de sauvegarde comme ça... :/
  • Bonjour,

    Je déterre un peu ce topic car je viens de télécharger ce plugin que je compte bien utiliser. Tout marche nickel mais uniquement si l'on est sur la page d'accueil (home).
    Cela vient de l'adresse de redirection utilisée dans le plugin. Ainsi, dans les méthodes Index et MySkinSelect, à la place de
    './'
    
    j'utiliserais plutôt
    $plxMotor->urlRewrite()
    
    en appelant une instance de plxMotor quand ce n'est pas déjà fait (méthode Index).

    C'est la modif que j'ai apportée sur mon site et ça fonctionne. On peut maintenant changer de thème quelle que soit la page sur laquelle on se situe et on est redirigé vers l'accueil.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour Jerry


    En fait le problème ne serait-il pas plutot à cause de la réécriture d'url.
    Je viens de tester:
    si réécriture d'url désactivée: le plugin fonctionne
    si réécriture d'url activée: le plugin ne fonctionne pas

    Peux-tu me confirmer qu'il n'y a besoin de rajouter la ligne suivante à la place de ./ que dans la fonction MySkinSelect
    $plxMotor->urlRewrite()
    

    On peux laisser header('Location: ./'); dans la fonction Index

    Consultant PluXml

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

  • Stéphane a écrit:
    Bonjour Jerry


    En fait le problème ne serait-il pas plutot à cause de la réécriture d'url.
    Je viens de tester:
    si réécriture d'url désactivée: le plugin fonctionne
    si réécriture d'url activée: le plugin ne fonctionne pas

    Peux-tu me confirmer qu'il n'y a besoin de rajouter la ligne suivante à la place de ./ que dans la fonction MySkinSelect
    $plxMotor->urlRewrite()
    

    On peux laisser header('Location: ./'); dans la fonction Index
    Je confirme. L'idéal aurait quand même été d'être redirige vers la page où le changement est fait. Mais j'ai pas trouvé comment la récupérer.
  • StéphaneStéphane Member, Former PluXml Project Manager
    ## version 1.1 (21/06/2012) ##
    [+] Redirection sur la page en cours de visualisation
    BUG Pas de changement de thème si réécriture d'url activée

    Consultant PluXml

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

  • Joli. J'étais parti un peu sur la même piste mais je n'ai pas utilisé la variable $_SERVER (pas très fiable selon le serveur utilisé). Je t'envoie par mail ce que j'ai fait.

    Avec ma méthode, normalement, la réécriture est prise en compte.
  • Jerry WhamJerry Wham Member
    septembre 2012 modifié
    Je viens de tester Hyla, qui est une application permettant le partage de fichiers, à la manière de OwnCloud ou Dropcenter.


    Le problème est qu'il est possible de modifier l'apparence de l'application et ce grâce à un cookie dont le nom est .... (roulements de tambours)..... "style". Ainsi donc, si l'application est sur le même domaine que notre pluxml, pluxml ne sait plus où il en est (il ne trouve pas le thème "standard" qui est le thème par défaut de Hyla).


    Tout ça pour dire quoi ? Ne serait-il pas possible de renommer le cookie de MySkinSelect en plx_style par exemple, ou d'avoir le choix grâce à une page de configuration de choisir ce nom (ce qui permettrait de laisser par défaut le nom style) ?

    Ainsi les deux applications pourraient coexister sans problème.


    Stéphane, [del]si tu passes par là, merci d'avance[/del] je t'ai envoyé un mail.
  • StéphaneStéphane Member, Former PluXml Project Manager
    ## version 1.1.1 (04/09/2012) ##
    [+] Changement du nom du cookie utilisé pour mémoriser le thème pour ne pas interférer avec d'autres

    Consultant PluXml

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

  • StéphaneStéphane Member, Former PluXml Project Manager
    ## version 1.1.2 (05/11/2012) ##
    BUG Mauvais nom du cookie

    Consultant PluXml

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

  • Jerry WhamJerry Wham Member
    novembre 2012 modifié
    Ça bug encore. Si l'on change le design alors que l'on est pas sur la page d'accueil, si l'on change ensuite de page on n'a pas le design voulu.

    [del]Voir sur mon site : Changer le design en étant sur la page d'accueil. Choisir typebase. Puis aller à la catégorie pluxml. Choisir mainstream puis retourner sur la page d'accueil : c'est le design typebase qui s'affiche...[/del] => Mauvaise définition de la validité du cookie
  • Je reviens à la charge avec ma modification : le cookie est valable pour tout le domaine et il est possible de choisir son nom dans la page de configuration.


    Je vous la propose ici. J'ai supprimé la version de Stéphane sur mon site. Donc le bug de tout à l'heure n'est plus visible (il venait du fait que plusieurs cookies étaient créés en fonction de la page sur laquelle on se situait, avec une validité uniquement sur cette dite page).
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour
    Pour qu'il n'y ait pas d’ambiguïté...
    - plxMySelectSkin ne bug pas si on n'est pas sur la page d'accueil et que l'on change de thème: ça fonctionne très bien.
    - la version modifiée Jerry Wham permet en plus de choisir le nom du cookie utilisé (c'est tout). Est-ce utile ? A vous de juger. Ce n'est qu'un détail technique de programmation qui permet de mémoriser le thème à utiliser.


    @Jerry Wham
    dans ta version, cette partie de code ne sert à rien car il faut partir du principe que les utilisateurs n'ont pas de thème qui s'appelle "defaut'
    			if ($_POST['style'] == 'defaut') {
    				$_POST['style'] = $plxMotor->style;
    			}
    
    Après, stocker en variable de session une redirection à partir d'un champ hidden ça me semble superflu. Suffit d'utiliser la valeur du champ action de la balise <form> et de faire la redirection une fois le formulaire traité. Inutile (à mon avis) d'utiliser le hook IndexBegin. En gros c'est mieux de faire ce que fait plxMySelectSkin :)

    Consultant PluXml

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

  • Jerry WhamJerry Wham Member
    novembre 2012 modifié
    Stéphane a écrit:
    @Jerry Wham
    dans ta version, cette partie de code ne sert à rien car il faut partir du principe que les utilisateurs n'ont pas de thème qui s'appelle "defaut'
    			if ($_POST['style'] == 'defaut') {
    				$_POST['style'] = $plxMotor->style;
    			}
    
    Après, stocker en variable de session une redirection à partir d'un champ hidden ça me semble superflu. Suffit d'utiliser la valeur du champ action de la balise <form> et de faire la redirection une fois le formulaire traité. Inutile (à mon avis) d'utiliser le hook IndexBegin. En gros c'est mieux de faire ce que fait plxMySelectSkin :)

    C'est pourtant le thème de base fourni avec Pluxml. Je l'ai mis pour éviter de l'afficher alors que ce n'est pas forcément le thème "par défaut" choisi dans la partie administration.

    Pour la redirection, c'est vrai que j'ai fait ça un peu à l'arrache. Je vais le modifier.
    Stéphane a écrit:
    - plxMySelectSkin ne bug pas si on n'est pas sur la page d'accueil et que l'on change de thème: ça fonctionne très bien.
    Je l'ai testé tout à l'heure et ça ne fonctionnait pas. Le thème est changé, oui, mais il n'est pas le même partout. Plusieurs cookies ont été enregistrés avec des domaines de validité différents (/, /article5, /categorie2, etc...) et des thèmes différents.
  • bg62bg62 Member
    août 2015 modifié
    bonsoir :)
    pour la moise en conformité avec le ' w3c' j'ai eu ce problème :
    " message w3c :
    Error Line 302, Column 33: A slash was not immediately followed by >.

    <input type="submit" value="ok"/ ></form>rechercher ...

    provient du plugin ' plxMySkinSelect ', fichier ' plxMySkinSelect.php '
    ligne 87
    juste un ' / ' à décaller "
    donc, sauf erreur de ma part, juste une petite modif à faire, non ?
    @+

    solution:
    mettre ceci:
    [== PHP ==]
    echo '<input type="submit" value="ok"/>';
    
    et c'est valide W3C :)
  • Salut,
    déterrage de topic,
    comment faire la liste et que le choix valide, donc ne pas avoir a cliquer sur OK
    et ainsi gagner une ligne.
    Merci.
  • Est-ce que ce plugin est adapté à pluxml 5.8.3 ?
    Merci

  • cpalocpalo Member

    Bonjour,
    Il ya aussi le plugin de Bazooka07 kzSkinSelect qui fonctionne avec la 5.8.4, qui est plus récent, mais qui utilise une autre démarche puisqu'on n'a pas besoin de modifier chacun des thèmes pour y permettre l'affichage du hook.
    Et il y aussi l'autre solution de modifier index.php pour introduire un script ( cf le wiki et pluxopolis, et celui modifié par sudwebdesign)

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