Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Résolu]Code de couleur différent selon l'alias de la page ?
#1
Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS: ?
#~ Nom de l'hébergeur : infomaniak
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.8.1
#~ Installed Modules:
#~ * CMSMailer: 2.0
#~ * FileManager: 1.0.2
#~ * MenuManager: 1.6.5
#~ * ModuleManager: 1.4
#~ * News: 2.10.6
#~ * nuSOAP: 1.0.1
#~ * Gallery: 1.3.2
#~ * ThemeManager: 1.1.1
#~ * TinyMCE: 2.7.2
#~ * FrontEndUsers: 1.9.3
#~ * CustomContent: 1.5.3
#~ * CGExtensions: 1.18.8
#~ * CGCalendar: 1.5.2
#~ * SimpleSlider: 0.3
#~ Config Information:
#~ * php_memory_limit:
#~ * process_whole_template: false
#~ * output_compression: false
#~ * max_upload_size: 48000000
#~ * default_upload_permission: 664
#~ * url_rewriting: mod_rewrite
#~ * page_extension: /
#~ * query_var: page
#~ * image_manipulation_prog: GD
#~ * auto_alias_content: true
#~ * locale:
#~ * default_encoding: utf-8
#~ * admin_encoding: utf-8
#~ * set_names: true
#~ Php Information:
#~ * phpversion: 5.2.13
#~ * md5_function: On (Vrai)
#~ * gd_version: 2
#~ * tempnam_function: On (Vrai)
#~ * magic_quotes_runtime: Off (Faux)
#~ * E_STRICT: 0
#~ * memory_limit: 64M
#~ * max_execution_time: 10
#~ * output_buffering: 20480
#~ * safe_mode: Off (Faux)
#~ * file_uploads: On (Vrai)
#~ * post_max_size: 300M
#~ * upload_max_filesize: 300M
#~ * session_save_path: Aucune vérification à cause de la restriction spécifiée par PHP open_basedir
#~ * session_use_cookies: On (Vrai)
#~ * xml_function: On (Vrai)
#~ Server Information:
#~ * Server Api: apache2handler
#~ * Server Db Type: MySQL (mysql)
#~ * Server Db Version: 5.0.84
#~ ----------------------------------------------
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
Bonjour,

Je me suis mis à nettoyer le code de mon site et à essayer de le rendre le plus facile à tenir à jour et à faire évoluer. J'ai une partie publique dans les tons verts et une partie membre dans les tons rouges. Pour l'instant, j'ai deux gabarits différents auxquels sont associés des feuilles de style différentes.

Je pense que je pourrais facilement mettre le code des gabarits dans un seul fichier et faire un test sur les alias pour déterminer la façon d'appeler les différents modules.

Par contre, je ne suis pas sûr de la façon dont combiner les feuilles de style. Je veux dire, je pourrais mettre une classe différente pour "emballer" la page et doubler les classes CSS qui gèrent des éléments de couleur.

Ou, et ce serait mieux, définir des variables pour les couleurs (genre: foncé, moyen, clair) et leur associer des valeurs différentes suivant l'alias de la page et récupérer ces variables dans un fichier CSS simple, similaire à ceux que j'ai maintenant...

Vous me suivez ? Est-ce que cette dernière option serait envisageable ? Merci Smile
#2
re,

> Vous me suivez ? Est-ce que cette dernière option serait envisageable ?
As tu regarder la nouvelle balise {cms_stylesheet} dans l'aide de la V 1.8.1 ??
http://www.cmsmadesimple.fr/forum/viewto...366#p15366
J-C Etiemble Tutoriels v 2.2.x
#3
Merci beaucoup ! Juste ce qu'il me fallait, je pense.

Mais j'ai encore une question. Quel est le meilleur moyen de savoir si une page est une page membre ou une page publique ? Je pensais utiliser l'alias comme pour mes menus, mais ça ne va pas, à moins que je change les alias de toutes les pages... Ce ne serait pas une bonne solution que de faire une liste des pages membres et des pages publiques... Mais je n'aime pas trop l'idée d'avoir deux gabarits différents juste pour ces couleurs... Je ne vois pas comment être le plus efficace...

Je pourrais faire une liste des pages membres (y en a peu). Est-ce qu'il y a un moyen d'obtenir l'alias de la page parent ?

Sinon, je me demandais, je code où mes variables de couleur ? Dans une balise de contenu ? Dans le gabarit ? Dans les fichiers CSS (mais ça sera redondant) ?

Merci Smile

PS: de quelle aide, tu parles, jce ? À part l'annonce, j'ai rien trouvé vraiment...
#4
Si on ne connait pas la structure du site, c'est difficile de t'aider.
Est-ce que les pages membres ont le même parent ?
#5
Pour vous faire une idée: http://www.coord21.ch/test_cmsms/

Nope, elles n'ont pas le même parent....

Je me dis que j'ai meilleur temps d'utiliser des gabarits différents pour les pages publiques et les pages membres. De toute façon, faudra bien faire la différence à un certain niveau...

Et dans chaque gabarit, je définis des couleurs différentes. Le problème, c'est que si je ne vide pas la cache dans CMSMS, les variables de couleurs ne sont pas redéfinies et donc le site ne change pas de couleur en passant des pages publiques aux pages membres... (Allez sur la page Intranet; elle s'affiche en vert et devrait être affichée en rouge.)

J'ai ça au début de mes gabarits:

{metadata}
{* Les Métadonnées sont changées dans Administration du site-Paramètres globaux. *}

{assign var="lien" value="RGB(130,20,0)"}
{assign var="titre_contenu" value="RGB(80,10,0)"} {*et dans les liens survolés*}
{assign var="titre_site" value="RGB(170,30,0)"} {*et partie foncée dans le menu*}
{assign var="bordure" value="RGB(255,150,130)"} {*et partie claire dans le menu*}
{assign var="lien_hover_dark" value="RGB(40,0,0)"} {*dans le calendrier*}
{assign var="event" value="RGB(250,160,100)"}

{cms_stylesheet}
{* C'est de cette façon que toutes les feuilles de style attachées à ce gabarit sont liées *}

Je redéfinis bien les variables avant l'appel aux feuilles de style. Pourquoi ces 'assign' sont-ils ignorés ?
Quelqu'un saurait-il me dire pourquoi et comment contourner ce problème ?
#6
Ceci devrait t'intéresser :
http://forum.cmsmadesimple.org/index.php...689.0.html pour n'utiliser qu'un gabarit,
et ceci pour le changement des couleurs :
http://forum.cmsmadesimple.org/index.php?topic=45363.0
#7
Donc, si je comprends bien, si je ne veux qu'un seul gabarit, je peux déclarer une variable "membre" dans les métadonnées de mes pages membres... ça, je crois que je vais pas faire. Les gabarits ne sont pas censés bougés énormément et deux gabarits, c'est gérable. Par contre, si je dois expliqué au gens que quand ils font une nouvelle page membre, il faut aller ajouter tel code dans les métadonnées, ils vont le faire faux...
En gros, je préfère compliquer un tout petit peu la vie du futur admin et laissez les éditeurs tranquilles.
Et par rapport à cet exemple précis, pourquoi callguy n'utilise-t-il pas plutôt l'alias de sa page, plutôt que de définir des variables dans ses métadonnées ?

Pour l'autre sujet en hollandais, pourquoi le mec ne définit-il pas directement background_color dans sa balise utilisateur ?
Et si l'heure est une variable accessible dans une UDT, je ne crois pas que ce soit le cas du nom du gabarit utilisé par la page.

Les valeurs de mes couleurs dépendent du gabarit utilisé. Donc, je suis obligé de les définir dans mes gabarits. Et dans le header même, avant l'appel à {cms_stylesheet}. Je ne vois pas comment faire autrement...

Ce qu'il me faut, en fait, c'est un moyen de forcer le rafraîchissement des feuilles de style. Non ?
#8
Re !

J'ai essayé de définir une variable $gabarit dans mes gabarits:

{assign var="gabarit" value="public"} dans un,
et {assign var="gabarit" value="membre"} dans l'autre.

J'ai ensuite mis le code suivant dans mes fichiers CSS:

[[if $gabarit == 'membre']]
[[assign var="lien" value="RGB(130,20,0)"]]
[[assign var="titre_contenu" value="RGB(80,10,0)"]] /*et dans les liens survolés*/
[[assign var="titre_site" value="RGB(170,30,0)"]] /*et partie foncée dans le menu*/
[[assign var="bordure" value="RGB(255,150,130)"]] /*et partie claire dans le menu*/
[[else]]
[[assign var="lien" value="RGB(40,100,0)"]]
[[assign var="titre_contenu" value="RGB(50,60,50)"]] /*et dans les liens survolés*/
[[assign var="titre_site" value="RGB(90,180,0)"]] /*et foncé dans le menu*/
[[assign var="bordure" value="RGB(220,255,180)"]] /*et clair dans le menu*/
[[/if]]

Mais ça ne marche pas du tout...

Je voulais ensuite créer deux fichiers CSS avec les déclarations des variables et des imports des feuilles de style, mais le nom de ces dernières ne sont pas "fixes" et c'est donc impossible.

On me propose de mettre une classe au body de mes pages membres et mettre à double tous mes styles... Mais c'est trop la m**** comme solution. Autant avoir des fichiers distincts. Y a pas moyen d'utiliser ces variables de la manière la plus évidente qui soit dans le CSS ? C'est un comble, quand même... À part à changer la couleur selon l'heure de la journée, ça peut servir à quoi ?
#9
Citation :Y a pas moyen d'utiliser ces variables de la manière la plus évidente qui soit dans le CSS ? C'est un comble, quand même...
Pourquoi ne crée-tu pas ton propre cms ?
Tu aurais bien étudié la structure de ton site avant de coder, tu aurais pensé à placer un préfixe (pageMembre dans l'alias des pages).

De plus, je ne comprend absolument pas pourquoi tu cherches des complications où il n'y en a pas.

Dans tes pages membres, tu places (comme dans le lien de CallGuy)
{assign var='hidefeu' value='1'}
{assign var='hidesearch' value='1'}
{assign var='privatepage' value='1'}

Dans ton gabarit, tu places ceci après la balise stylesheet :
Code :
{if isset($privatepage)}
<link rel="stylesheet" type="text/css" href="http://tonDomaine/css/pagesMembres.css" media="screen" />
{/if}
Tu crées une css (pagesMembres.css) que tu places dans un répertoire css :
Code :
#pageMembres a {color:RGB(130,20,0);}
#pageMembres h2 {RGB(80,10,0);}
etc.
Tu donnes l'id pageMembre à ton body.

Quand un utilisateur ira sur une page membre, le serveur exécutera la css pageMembre, cette dernière écrasera les propriétés par défaut des pages normales.
#10
Jean le Chauve a écrit :Tu aurais bien étudié la structure de ton site avant de coder, tu aurais pensé à placer un préfixe (pageMembre dans l'alias des pages).
Ce ne serait pas un problème si j'étais censé tenir à jour le site moi-même. Il faut que j'automatise tout au maximum pour limiter la marge d'erreur des utilisateurs. C'est pas moi qui ai la flegme. Et malgré tout, c'est quand même logique d'utiliser le gabarit pour faire la différence entre pages publiques et pages membres... S'il y avait un bouton radio, ce serait mieux, mais il n'y en a pas ! (Je garde l'idée pour quand je ferai mon CMS :p)
Jean le Chauve a écrit :De plus, je ne comprend absolument pas pourquoi tu cherches des complications où il n'y en a pas.

Dans tes pages membres, tu places (comme dans le lien de CallGuy)
{assign var='hidefeu' value='1'}
{assign var='hidesearch' value='1'}
{assign var='privatepage' value='1'}

Dans ton gabarit, tu places ceci après la balise stylesheet :
Code :
{if isset($privatepage)}
<link rel="stylesheet" type="text/css" href="http://tonDomaine/css/pagesMembres.css" media="screen" />
{/if}
Tu crées une css (pagesMembres.css) que tu places dans un répertoire css :
Code :
#pageMembres a {color:RGB(130,20,0);}
#pageMembres h2 {RGB(80,10,0);}
etc.
Tu donnes l'id pageMembre à ton body.

Quand un utilisateur ira sur une page membre, le serveur exécutera la css pageMembre, cette dernière écrasera les propriétés par défaut des pages normales.
Ben, je vais essayer ça, merci ! Ou quelque-chose du même genre.

Mais je ne trouve pas que j'essaye de me compliquer la vie. J'aimerais simplement pouvoir utiliser dans les feuilles de style des variables définies dans le gabarit. Et j'ai un peu mis les pieds contre le mur parce que j'étais persuadé que c'était possible.

Merci encore Smile
#11
J'ai fait plus ou moins ce que tu m'as dit, Jean. J'ai créé un fichier css spécial pour changer les couleurs du site et je l'ai associé au gabarit des pages membres (où j'ai ajouté un id à la balise body).
J'ai aussi créé une balise utilisateur avec les couleurs des pages publiques pour l'inclure au début de mes feuilles de styles. Et ça marche !

Merci encore Smile


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)