Skip to main content Help Control Panel

Login   A+   A-

Community «   Le forum «   Besoin d'aide «  

Bandeau différents pour chaque section (Via 1 skin)?

Demande d'aide au paramétrage d'un bandeau différent pour chaques sections
Problem has been recorded

Issue description

Demande d'aide pour paramétrer/modifier mon skin pour changer l'image du bandeau pour chaque section.

L'objectif: Le but est de garder le même look (Skin) pour toutes les sections, mais de changer le bandeau header_background.jpg pour chaque section.

L'idée visuelle derriere cet objectif est d'avoir dans le bandeau juste une petit modification graphic comme par exemple le changement d'une image en filigramme qui represente la section.

L'option bourin: Avec 1 skin différent par section avec comme seul différence l'image jpg. Par contre cela veux dire 20 sections > 20 Skins. et pour garder la cohérence du look, un changement dans le skin doit être fait 20 fois.

Ce que j'aimerai: Avoir une version plus éléguante avec 1 Skin, qui change l'image en fonction de l'ID de ma section.

Etat de mes recherches:

  • L'image est paramétré dans le fichier CSS à la section Header_Panel et ceci est static.
  • Mon idée a été de passer cette définition dans Template.php pour pouvoir utiliser des variables et de la logique.

Ou je suis bloqué:

  • Je ne connait pas PHP ni CSS ni le reste d'ailleur, mon premier probléme est de faire fonctionner le code en statics déjà.
  • Ensuite comment récupéré l'ID de la section courante dans une variable
  • Comment tester l'existance de l'image (pour pouvoir si pas de image_id.jpg utiliser l'image par defaut)

La logique que j'aimerai est du type.

$idsection = IdSectionCourante;

$Image = "Header_background_".$idsection.".jpg";

If Not fichierExist($image) then $image = "header_background.jpg";

Echo "Ce qu il faut".$image."pour afficher cette entete";

En résumé: je pense voir quoi faire, mais je suis trops nul pour le faire... Mais différent test hier soir non rien donné, donc cela ne sert à rien que je les mettent dans le post comme exemple...

Merci de votre aide, je pense que cette logique peux servire à plein d'autre endroit, pour d'autre besoin.... En tout cas je pense apprendre beaucoup de la solution de cet exemple.

 

Comments

Lasares
avatar
from L'Île-Bizard à Montréal, Québec
Member
688 posts
registered on Nov. 14 2006

on Feb. 23


Certainement que c'est faisable, et vous êtes sur la bonne voie. Une voie que d'autres avant vous ont également parcourue avec succès, comme en témoigne l'article suivant, que vous lirez jusqu'à la fin pour trouver les éléments de réponse que vous cherchez :

Ajout d'un script php à un template

Bon succès ! et laissez-nous voir le résultat, si possible.


On a si peu d'idée de ce qui est possible...
Pat
Member
140 posts
registered on Feb. 20 2006

on Feb. 23


Merci,

J'ai regardé et entre temps j'ai avancé de mon coté. Je réussi cette aprés-midi à faire fonctionner l'affichage de l'image de fond dans le PHP depuis une variable. Mais évidement ce n'est pas encore fini.

j'ai encore des soucis:

  • pour détecter l'ID de la section courante, je suis sure que vous l'avez dans une variable ou un tableau, mais pour l'instant je ne l'ai pas encore identifié.
  • Et un Bug/Probléme mon test de l'existance d'un fichier me répond toujours faux... Or je suis sure qu'il existe et que j'y ai accés (Surement une erreur con de débutant en PHP).

Dans ma solution, j'ai commanté dans le fichier .css la definition de header_panel

<p></p>
/* #header_panel { /* comes before everything */<br />
/*     background-image: url("images/header_background.jpg");<br />
margin: 0;<br />
padding: 0;<br />
width: 100%;<br />
max-width: 90em;<br />
position: relative;<br />
min-height: 7.5em;<br />
height: 7.5em;<br />
border-width: 1px;<br />
border-style: solid solid none solid;<br />
border-color: #000;<br />
}<br />
Mise en commentaire car ajouter dans le PHP pour changer l'image de
    maniére dynamic */

 

Et dans le fichier template.php je n'ai pas touché à :

// the header panel comes before everything<br />
echo '&lt;div id="header_panel"&gt;'."n";

Mais j'ai ajouter entre les balises head  du code php qui ajoute la définition CSS de header_panel.

<p></p>
// we have one style sheet for everything -- media="all" means it is not
    
loaded by Netscape Navigator 4<br />
echo 
"t".'&lt;link rel="stylesheet"
    href="'
.$context['url_to_root'].'skins/RanaSkeleton/RanaSkeleton.css"
    type="text/css" media="all" /&gt;'
."n";<br />
<
br />
// Debut ****************** Insertion PL<br />
    <br />
// En fonction du N° de section courant génére lé nom de l'image de
    
fond<br />
$PLsectionID "1";<br />
    <br />
$PLfilename =
    
$context['url_to_root'].'skins/RanaSkeleton/images/header_background_'.$PLs
    ectionID
.'.jpg';<br />
echo 
'&lt;!-- '.$PLfilename.' --&gt; ';<br />
    <br />
// test si l'image existe? sinon utilise l'image défaut<br />
if (!file_exists($PLfilename)) {<br />
$PLfilename =
    
$context['url_to_root'].'skins/RanaSkeleton/images/header_background.jpg';<
    
br />
};<
br />
    <br />
// Affiche le style du header entre les balises head et /head<br />
echo "t".'&lt;style type="text/css" media="screen"&gt;'."n"<br />
.
"tt".'#header_panel {'."n"<br />
.
"ttt".'background-image: url("'.$PLfilename.'");'."n"<br />
.
"ttt".'margin: 0;'."n"<br />
.
"ttt".'padding: 0;'."n"<br />
.
"ttt".'width: 100%;'."n"<br />
.
"ttt".'max-width: 90em;'."n"<br />
.
"ttt".'position: relative;'."n"<br />
.
"ttt".'min-height: 7.5em;'."n"<br />
.
"ttt".'height: 7.5em;'."n"<br />
.
"ttt".'border-width: 1px;'."n"<br />
.
"ttt".'border-style: solid solid none solid;'."n"<br />
.
"ttt".'border-color: #000;'."n"<br />
.
"tt".'}'."n"<br />
.
"t".'&lt;/style&gt;'."n";<br />
    <br />
// Fin  ****************** Insertion PL<br />
    <br />
// implement the 'you are here' feature<br />

Donc actuellement j'ai 2 problémes qui reste (le reste fonctionne):

  • comment mettre la valeur de ID de la section sans $PLsectionID
  • et mon test (!file_exists($PLfilename)) est toujours vrais donc il ne trouve jamais le fichier, pourtant la valeur est bonne avant et le fichier exist... (la je merde et c'est surement une grosse connerie de débutant).

 

Pat
Member
140 posts
registered on Feb. 20 2006

on Feb. 27


Nom de ... horror

J'ai trouvé ce qui n'allait pas avec mon code de test du fichier.... Je savait bien que c'était une connerie.... gun

Je testait l'existance du fichier en construisant son path avec $context('url_to_root') et en faite il fallait utiliser $context('path_to_root')...

Plus qu'un soucis: Trouver la variable qui contient l'ID de la section courante...

donc le code doit ressembler à cela:

<p></p>
<
p>// Debut ****************** Insertion PL<br />
// En fonction du N° de section courant génére lé nom de l'image de
    
fond<br />
$PLsectionID "1";<br />
$PLfilename =
    
'skins/RanaSkeleton/images/header_background_'.$PLsectionID.'.jpg';<br />
// test si l'image existe? sinon utilise l'image défaut<br />
if (!file_exists($context['path_to_root'].$PLfilename)) {<br />
$PLfilename 'skins/RanaSkeleton/images/header_background.jpg';<br />
};</
p>
<
p>// Affiche le style du header entre les balises head et /head<br />
echo "t".'&lt;style type="text/css" media="screen"&gt;'."n"<br />
.
"tt".'#header_panel {'."n"<br />
.
"ttt".'background-image:
    url("'
.$context['url_to_root'].$PLfilename.'");'."n"<br />
.
"ttt".'margin: 0;'."n"<br />
.
"ttt".'padding: 0;'."n"<br />
.
"ttt".'width: 100%;'."n"<br />
.
"ttt".'max-width: 90em;'."n"<br />
.
"ttt".'position: relative;'."n"<br />
.
"ttt".'min-height: 7.5em;'."n"<br />
.
"ttt".'height: 7.5em;'."n"<br />
.
"ttt".'border-width: 1px;'."n"<br />
.
"ttt".'border-style: solid solid none solid;'."n"<br />
.
"ttt".'border-color: #000;'."n"<br />
.
"tt".'}'."n"<br />
.
"t".'&lt;/style&gt;'."n";<br />
// Fin  ****************** Insertion PL</p>

Bon il ne reste plus qu'as trouver la variable qui contient l'ID de la section courante et le code devrais me donner compléte satisfaction....

Que c'est dure de débuter....

Bernard
avatar
from nearby-an-airport
Associate
6571 posts
registered on Sep. 12 2003

on Feb. 27


La variable $context['current_focus'][0]## contient la référence de la section de plus haut niveau pour la page en cours, par exemple ##'section:123'## Donc le code suivant place dans la variable ##$section_en_cours l'identifiant que vous cherchez :

$section_en_cours NULL;
if(isset(
$context['current_focus'][0]))
   
$section_en_cours str_replace('section:''',
    
$context['current_focus'][0]);

Pat
Member
140 posts
registered on Feb. 20 2006

on Feb. 28


Excellent bounce , superbe clap , cela fonctionne .... c'est magique fairy ....

En plus j'ai vue dans les tests que si on est dans des sous-section on a accés à toute l'arborescence... Si on est dans la section 44 qui se trouve dans ce chemain section:12 / section:23 / section:44 alors

on as:

  • la racine dans $context('current_focus')(0) = section:12
  • la 1° sous-section dans $context('current_focus')(1)  = section:23
  • Le 2° sous-niveau dans $context('current_focus')(2)  = section:44

C'est exactement ce qu'il me manquez (avec en bonus la conversion de la chaine en ID )

Est-ce que je peux abuser? 

  • Ou je peux trouver la liste des variables "magiques" comme celle-ci que l'on peux utiliser dans template.php (le rêve serait avec un mini commentaire)?

  hail Merci Bernard

Lasares
avatar
from L'Île-Bizard à Montréal, Québec
Member
688 posts
registered on Nov. 14 2006

inspired from Pat on Mar. 17


" Ou je peux trouver la liste des variables "magiques" comme celle-ci que l'on peux utiliser dans template. "


Vous avez posé la même question à deux endroits sans recevoir de réponse, il me semble. J'arrive un peu tard, mais si ça vous est encore utile, on trouve la plupart des variables importantes de Yacs dans /shared/global.php
Pat
Member
140 posts
registered on Feb. 20 2006

on Mar. 17


Merci beaucoup, je vais de ce pas me précipiter pour aller voir....

(En effet je demandai de l'aide aux deux endroits pour augmenter les probabilité de réponses en fonction de quel article serait lu par une personne ayant la réponces...)

 

Rate this page
Posted by Pat on Feb. 23, commented by Pat on Mar. 17, (popular)