Skip to main content Help Control Panel

Login   A+   A-

Community «   Le forum «   Web design «  

Un nouveau petit site Yacs

Voici un site encore réalisé avec YACS pour l'association Rana Niger

Bonjours,

Voici un petit site ( http:www.rananiger.info/ ) réalisé avec Yacs pour l'association humanitaire RANA qui fait des actions et des projets dans la région de Zinder au Niger.

Aprés avoir découvers Yacs il y as juste 2 ans quasiment jour pour jour en créant mon site perso (pour la famille et les amis) site du type échange de photos, de nouvelles, de bon plan entre amis voir article Un site familial.

Cette fois avec Yacs, je cré un site associatif pour une association humanitaire. Ce site est du type communauté fermé, avec des pages présentant l'association et ces projets et l'avancement de ces projets, plus une zone d'échange privé pour les membres de l'association.

Le site à 2 jours, il est pas encore finalisé, la maquette sera montré à l'association sous peux, mais en peux de temps (2 jours) en faite surtout de soir. On peux créer un site déjà montrable avec du contenu (sachant que c'est plus la création du contenue (tapez le texte) qui as pris le plus de temps.

Le site, son graffisme et son contenue vont évoluer rapidement.

NB: Comme pour la premiére fois, je vais jouer réellement à modifier les skins et les logos. Je me propose de mettre dans les commentaires de cet article, les différents changements que j'ai fait au pas à pas. Cela pouras peut-être aider les nouveaux comme moi dans ce domaine (bien qu'il y ai de bon article sur le site, mais peut-être pas assez pas à pas pour les nuls comme moi. Ce sera surement du type: un nul explique comme il s'en sort....)

A+

 

Pat
140 posts

on Feb. 21


Bon je suis nul en CSS, PHP et autre acronyme de ce site... et ceci est d'un bas niveau pour certain du site... mais voilà... en créant le site, je me pose des questions que beaucoup de nouveaux vont surement ce poser... Alors ce me propose de tenir une liste des questions que je me pose et des solutions que j'aurais trouvé ou seul ou sur les forums...

La premiére chose que j'ai faite:

Dérivé un style pour le modifier (comme dit dans la doc). Je suis partie du skin skeleton.

Puis changer les images dans \yacs\skins\RanaSkeleton\images , pour avoir une base de couleur orange et un bandeau avec le logo de l'association.

 

La premier soucis: Pour afficher le logo il a fallu que je change la hauteur de l'image header_background.jpg et une fois la page afficher les onglets se retrouvé au même endroit et me bouffer tout le bas de mon image que j'avait ajouter.

Premiére lesson: Si on change la hauteur de l'image d'entête header_background.jpg il faut allez dans le fichier .css de votre style change les paramêtres suivant.

Localiser la chaine suivante:

<p></code></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: 5em;<br />
    height: 5em;<br />
    border-width: 1px;<br />
    border-style: solid solid none solid;<br />
    border-color: #000;<br />
}</p>
<code>

Changer min-height et height avec des valeurs qui corespondent à la hauteur de votre bandeau... pour moi cela done:

<p></code></p>
<p>    min-height: 7.5em;<br />
    height: 7.5em;</p>
<code>

 

Ensuite en modifiant les images yacs_background.png, yacs_top.png, yacs_bottom.png on donne le look de la page. En modifiant side_header.gif le look des boites des menus.

Voilà c'est tout... il y as maintenant un nouveau look...

Juste un petit  probléme:... dans l'affichage du menu sous forme d'arbre lorsque l'on est dans des sous-sections... la derniére sous branche reste en bleu et ne prend pas votre look...

Juste une petite solution: Toujours dans le fichier .css de votre skin.

Localiser les lignes

<p></code></p>
<p>#contextual_menu ul.tree_level_2 li.last,<br />
#contextual_menu ul.tree_level_3 li.last,<br />
#contextual_menu ul.tree_level_4 li.last,<br />
#contextual_menu ul.tree_level_5 li.last { /* last item of a branch */<br />
    background-image: url("icons/tree/last.gif");<br />
    background-color: #8483AF; /* mask the default ul background -use the exact underlying background color */<br />
    background-repeat: no-repeat;<br />
    background-position: 0px 0px;<br />
}</p>
<p>Supprimer la ligne background-color et tout fonctionne....</p>
<code>

 

Un dernier petit ajustement: Le titre du site RANA apparait en plein sur mon logo... et j'aimerai le déplacer pour l'afficher à coté du logo de Rana...

La solution: Toujours est encore le fichier magique .css de votre skin localiser le texte suivant.

<p></code></p>
<p>#header_title { /* appears towards the top of the page -- see template script */<br />
    position: absolute;<br />
    top: 0;<br />
    left: 0;<br />
    margin: 0; /* need for IE Mac */<br />
    padding: 12px 0 0 20px;<br />
    font-size: 1.3em;<br />
    font-weight: bold;<br />
    color: #5F697E;<br />
    background: transparent;<br />
}</p>
<code>

et jouer avec top et left...

<p></code></p>
<p>    top: 40px;<br />
    left: 110px;</p>
<code>

 

Voilà, j'ai plein d'autre modif à faire, je vais m'amuser à chercher, et si je trouve pas je posserai des questions sur le forum.

 

On vois qu'il y as plein d'autres paramêtres possible à modifier  pour le titre, la baniére (la plus part je ne sait pas à quoi ils servent). Si vous avec des questons voir avec les guru du site... Moi c'est service minimum, j'ai besoin de ça, je touche à ça et cela à l'air de marcher....

 

YACS, c'est trops cool, trop fort, trop flexibe, trop top...

Christian
avatar
from Chonas l'Amballan
Associate, 744 posts

on Feb. 21


On vous suit avec intérêt en tout cas ... Il est problable que vos commentaires feront également avancer la documentation !
Lasares
avatar
from L'Île-Bizard à Montréal, Québec
697 posts

on Feb. 21


Très beau site. Je viens de visiter avec grand plaisir : de belles photos et de belles actions.

Votre initiative de documenter ici vos progrès est elle-même une action très généreuse, qui saura sûrement être utile. Je suis d'ores et déjà un de vos lecteurs.


On a si peu d'idée de ce qui est possible...
Pat
140 posts

on Feb. 21


Merci pour ces commentaires...

Voici la suite de mes avantures et découvertes.

 

Le souhait: avoir dans le menu les boites: Records de Visites, Records de téléchargement, Records de clics, Au hazard.

Cela est facile car cela ce régle dans les paramétrages standard de la configuration de l'accueil..

Cependant le souhait est de ne pas avoir 7 liens par boite de menu. Car ceci ralonge le menu est donc le complexifie...

Ils souhaiteraient avoir:

  • 3 liens dans la boite record de visites

  • 3 liens dans la voite record de clics

  • 5 liens dans la boite au hazard

Premier constat: Tien c'est pas une option standard... Celà aurait été cool d'avoir dans la page de configuration de la page d'acceil, pour chaque boite, une valeur à saisir donnant le nombre d'éléments par boites...

Aprés des recherches:

  • Je me suis apperçu que c'est un paramétre qui est passé aux fonctions "COMPACT_LIST_SIZE", mais toujours le même... et qu'il est utilisé à plein d'autres endroit....
  • Je m'apperçois aussi que ce paramêtre est mis à 7 dans le script skins\skin_skeleton.php donc pas ajustable pour chaque skin différents.... NB: Pourquoi pas imaginer des skins avec des compacts list limité à uniquement 5 items et un autre skin toujours sur le même site avec des compacts lists de 9 éléments...?


Bon ce paramêtre est global et en l'état de mes compétences une trés grosse lumiére rouge s'allume est me dit: "Touches pas à ça petit con"...

Ma solution est brutale mais efficace et corespond à ce que je veux:

Je ne veux pas changer le defaut de COMPACT_LIST_SIZE sur tout le site, et j'ai besoin d'autres valeurs spécifiquements pour certaines boites. Alors je vais mettre en dure dans le code mes valeurs (en attendant que des gurus Yacs nous ponde cette possibilité dans une prochaine version )

Les modification ce feront dans le fichier yacs\index.php.

Lignes 1062 à 1093 localiser ce code:

<br />
    // list most recent peering servers<br />
    if(isset($context['home_with_peering_servers']) && ($context['home_with_peering_servers'] == 'Y')) {<br />
        include_once $context['path_to_root'].'servers/servers.php';<br />
        if($items = Servers::list_by_date(0, COMPACT_LIST_SIZE, 'compact'))<br />
            $text .= Skin::build_box(i18n::s('Peers'), Skin::build_list($items, 'compact'), 'navigation', 'recent_servers');<br />
    }<br />
<br />
    // list most popular articles<br />
    if(isset($context['home_with_top_articles']) && ($context['home_with_top_articles'] == 'Y')) {<br />
        if($items = Articles::list_by_hits(0, COMPACT_LIST_SIZE, 'compact'))<br />
            $text .= Skin::build_box(i18n::s('Popular Pages'), Skin::build_list($items, 'compact'), 'navigation', 'popular_articles');<br />
    }<br />
<br />
    // list most popular files<br />
    if(isset($context['home_with_top_files']) && ($context['home_with_top_files'] == 'Y')) {<br />
        include_once $context['path_to_root'].'files/files.php';<br />
        if($items = Files::list_by_hits(0, COMPACT_LIST_SIZE, 'compact'))<br />
            $text .= Skin::build_box(i18n::s('Popular Files'), Skin::build_list($items, 'compact'), 'navigation', 'popular_files');<br />
    }<br />
<br />
    // list most popular links<br />
    if(isset($context['home_with_top_links']) && ($context['home_with_top_links'] == 'Y')) {<br />
        include_once $context['path_to_root'].'links/links.php';<br />
        if($items = Links::list_by_hits(0, COMPACT_LIST_SIZE, 'compact'))<br />
            $text .= Skin::build_box(i18n::s('Popular Links'), Skin::build_list($items, 'compact'), 'navigation', 'popular_links');<br />
    }<br />
<br />
    // list random articles<br />
    if(isset($context['home_with_random_articles']) && ($context['home_with_random_articles'] == 'Y')) {<br />
        if($items = Articles::list_by('random', 0, COMPACT_LIST_SIZE, 'compact'))<br />
            $text .= Skin::build_box(i18n::s('Random Pages'), Skin::build_list($items, 'compact'), 'navigation', 'random_articles');<br />
    }<br />


    Remplacer COMPACT_LIST_SIZE par la valeur souhaité dans mon cas cela vas donner:

<br />
    // list most recent peering servers<br />
    if(isset($context['home_with_peering_servers']) && ($context['home_with_peering_servers'] == 'Y')) {<br />
        include_once $context['path_to_root'].'servers/servers.php';<br />
        if($items = Servers::list_by_date(0, 3, 'compact'))<br />
            $text .= Skin::build_box(i18n::s('Peers'), Skin::build_list($items, 'compact'), 'navigation', 'recent_servers');<br />
    }<br />
<br />
    // list most popular articles<br />
    if(isset($context['home_with_top_articles']) && ($context['home_with_top_articles'] == 'Y')) {<br />
        if($items = Articles::list_by_hits(0, 3, 'compact'))<br />
            $text .= Skin::build_box(i18n::s('Popular Pages'), Skin::build_list($items, 'compact'), 'navigation', 'popular_articles');<br />
    }<br />
<br />
    // list most popular files<br />
    if(isset($context['home_with_top_files']) && ($context['home_with_top_files'] == 'Y')) {<br />
        include_once $context['path_to_root'].'files/files.php';<br />
        if($items = Files::list_by_hits(0, 3, 'compact'))<br />
            $text .= Skin::build_box(i18n::s('Popular Files'), Skin::build_list($items, 'compact'), 'navigation', 'popular_files');<br />
    }<br />
<br />
    // list most popular links<br />
    if(isset($context['home_with_top_links']) && ($context['home_with_top_links'] == 'Y')) {<br />
        include_once $context['path_to_root'].'links/links.php';<br />
        if($items = Links::list_by_hits(0, 3, 'compact'))<br />
            $text .= Skin::build_box(i18n::s('Popular Links'), Skin::build_list($items, 'compact'), 'navigation', 'popular_links');<br />
    }<br />
<br />
    // list random articles<br />
    if(isset($context['home_with_random_articles']) && ($context['home_with_random_articles'] == 'Y')) {<br />
        if($items = Articles::list_by('random', 0, 5, 'compact'))<br />
            $text .= Skin::build_box(i18n::s('Random Pages'), Skin::build_list($items, 'compact'), 'navigation', 'random_articles');<br />
    }<br />


Ensuite un nouveau besoin est apparus: Changer l'ordre de ces menus, pour ne pas favoriser de trops les pages les plus vues, mais plutôt proposer en premier les pages aux hazards, et mettre les liens externes en bas du menu.


Solution: Inverser les lignes en fonction de vos priorités dans le script yacs\index.php
   
    Voici l'exemple pour moi...

<br />
    // list random articles<br />
    if(isset($context['home_with_random_articles']) && ($context['home_with_random_articles'] == 'Y')) {<br />
        if($items = Articles::list_by('random', 0, 5, 'compact'))<br />
            $text .= Skin::build_box(i18n::s('Random Pages'), Skin::build_list($items, 'compact'), 'navigation', 'random_articles');<br />
    }<br />
<br />
    // list most popular articles<br />
    if(isset($context['home_with_top_articles']) && ($context['home_with_top_articles'] == 'Y')) {<br />
        if($items = Articles::list_by_hits(0, 3, 'compact'))<br />
            $text .= Skin::build_box(i18n::s('Popular Pages'), Skin::build_list($items, 'compact'), 'navigation', 'popular_articles');<br />
    }<br />
<br />
    // list most popular files<br />
    if(isset($context['home_with_top_files']) && ($context['home_with_top_files'] == 'Y')) {<br />
        include_once $context['path_to_root'].'files/files.php';<br />
        if($items = Files::list_by_hits(0, 3, 'compact'))<br />
            $text .= Skin::build_box(i18n::s('Popular Files'), Skin::build_list($items, 'compact'), 'navigation', 'popular_files');<br />
    }<br />
<br />
    // list most popular links<br />
    if(isset($context['home_with_top_links']) && ($context['home_with_top_links'] == 'Y')) {<br />
        include_once $context['path_to_root'].'links/links.php';<br />
        if($items = Links::list_by_hits(0, 3, 'compact'))<br />
            $text .= Skin::build_box(i18n::s('Popular Links'), Skin::build_list($items, 'compact'), 'navigation', 'popular_links');<br />
    }<br />
<br />
    // list most recent peering servers<br />
    if(isset($context['home_with_peering_servers']) && ($context['home_with_peering_servers'] == 'Y')) {<br />
        include_once $context['path_to_root'].'servers/servers.php';<br />
        if($items = Servers::list_by_date(0, 3, 'compact'))<br />
            $text .= Skin::build_box(i18n::s('Peers'), Skin::build_list($items, 'compact'), 'navigation', 'recent_servers');<br />
    }<br />

Et voilà tout est possible simplement avec Yacs....

Maintenant ce que je me serai attendu à trouver dans Yacs, c'est dans la page de configuration de la page d'index, pour chacune de ces sections: la possibilité de mettre un nombre d'éléments et un rang comme pour les autres boites de menu.

Il est vrais que l'on peux aussi ce créé des menus personalisé avec les codes Yacs dynamique comme read, published, edited, etc... mais toujours avec uniquement 7 items...

Ce serait cool aussi que les code yacs prennent un paramétre suplémentaire comme le nombre d'élément...
    Un truc du genre:

  •         Read done 7 éléments le defaut
  •         Read,3 done que 3 éléments
  •         Avec biensûre les read=section:<id>,12

   
En faite pour être complet vous pouvez auusi remonter dans le fichier Index.php et personnaliser certaine taille de boite extra qui seront sinon toujours limité à maximum 7 éléments (à cause du bon vieux paramétres COMPACT_LIST_SIZE)
   
    Exemple pour l'affichage des anciens articles:

<br />
    // list older articles<br />
    if(isset($context['home_with_older_articles']) && ($context['home_with_older_articles'] == 'Y')) {<br />
<br />
        if($items = Articles::list_by_date($items_per_page, COMPACT_LIST_SIZE+1, 'compact')) {<br />
<br />
            // more at the index page<br />
            if(count($items) > COMPACT_LIST_SIZE) {<br />
                @array_splice($items, COMPACT_LIST_SIZE);<br />
<br />
                $items['articles/'] = i18n::s('More pages').MORE_IMG;<br />
            }<br />
<br />
            $text .= Skin::build_box(i18n::s('Recent Pages'), Skin::build_list($items, 'compact'), 'navigation');<br />
        }<br />
    }<br />
<br />
    // list older articles<br />
    if(isset($context['home_with_older_articles']) && ($context['home_with_older_articles'] == 'Y')) {<br />
<br />
        if($items = Articles::list_by_date($items_per_page, 6, 'compact')) {<br />
<br />
            // more at the index page<br />
            if(count($items) > 5) {<br />
                @array_splice($items, 5);<br />
<br />
                $items['articles/'] = i18n::s('More pages').MORE_IMG;<br />
            }<br />
<br />
            $text .= Skin::build_box(i18n::s('Recent Pages'), Skin::build_list($items, 'compact'), 'navigation');<br />
        }<br />
    }<br />


   
    etc... je pense que vous avez compris comme moi, que pour l'instant, pour les boites de menu vous pouvez changer la valeur par defaut de chaque boite dans index.php

Actuellement cela fonctionne sur mon site local, je vais monter les modifs dés que ma connection FTP fonctionnera surement dans la soiré et vous pourez voir le résultat sur www.rananiger.info si les modifs ne sont pas en place de lors visite revenez plus tard... C'est que mon FTP continue à me jouer des tours...

 

Au passage: quel beau code ce Yacs.... je n'avait pas encore soulever le capot... mais c'est claire, ultra documenté, que du bonheur...

Lasares
avatar
from L'Île-Bizard à Montréal, Québec
697 posts

inspired from Pat on Feb. 21


Pat :
" Je m'aperçois aussi que ce paramêtre est mis à 7 dans le script skins/skin_skeleton.php donc pas ajustable pour chaque skin différents.... "


Au contraire, tout ce qui est dans skin_skeleton.php peut être ajusté dans un skin spécifique, en copiant la fonction voulue dans monskin/skin.php avant de l'y modifier à sa convenance.

À l'inverse, il vous faut savoir que toute modification que vous avez faite à index.php sera automatiquement écrasée par la prochaine mise à jour que vous ferez de Yacs.
Pat
140 posts

inspired from Lasares on Feb. 21


" Au contraire, tout ce qui est dans skin_skeleton.php peut être ajusté dans un skin spécifique, en copiant la fonction voulue dans monskin/skin.php avant de l'y modifier à sa convenance. À l'inverse, il vous faut savoir que toute modification que vous avez faite à index.php sera automatiquement écrasée par la prochaine mise à jour que vous ferez de Yacs. "

Trés bien, bien vue. Cela résout le probléme d'avoir un nombre différent de 7 pour toutes les compact list.

Cependant celà ne donne pas l'option d'avoir des valeurs différentes pour certaines boites. Et je ne vois pas pour l'instant d'autre option que de modifier dans index.php (idem pour changer l'ordre d'affichage de ces boites).

Evidement la contre partie et à chaque mise à jour de devoir reporter les modifications.

C'est pour cela que l'idéal serait l'ajout dans la page de configuration de l'index? pour chaqu'un de ces menus de:

  • la valeur du nombre d'éléments
  • et aussi le rang dans l'ordre des menus (comme pour les autres menus, pages, sections)

En attendant pour avoir des valeures différentes d'élements et changer l'ordre d'affichage, je ne vois pour l'instant que la modification du fichier index.php.

Mais en effet, il faut préciser à ceux qui voudrait changer ces paramétres en attendant une solution "standard", qu'aprés chaque mise à jour, il faudra reporter ces modifications à la main dans index.php.

 

Mais bon, ce n'est pas des modifs de haute volé.... et cela résout mon probléme.

 

Lasares
avatar
from L'Île-Bizard à Montréal, Québec
697 posts

on Feb. 21


Vous avez tout bon !

On parle beaucoup ces temps-ci de rendre les codes yacs encore plus puissants. Vous pourriez présenter vos suggestions dans la section du Forum Nouvelles fonctions pour qu'elles soient prises en compte par l'équipe de développement.


On a si peu d'idée de ce qui est possible...
Bernard
avatar
from nearby-an-airport
Associate, 6581 posts

on Feb. 21


J'adore votre nouveau site, et la documentation de vos efforts ici-même. Alain et Christian sont de bons conseils et vous pouvez leur faire confiance. Comme indiqué précédemment, l'évolution de YACS est dictée par ses utilisateurs, donc n'hésitez pas à partager vos besoins avec les autres membres de la communauté, dans la section prévue à cet effet.

Aussi, je me demandais quelles sont les langues parlées au Niger, et si vous aviez envisagé d'utiliser une autre langue que le français ou l'anglais pour votre site ?
Pat
140 posts

inspired from Bernard on Feb. 22


Bernard :

Merci, je suis un fan de Yacs depuis 2 ans avec mon site perso familiale, et j'ai toujours suivie les évolutions donc en effet j'ai pus déjà profiter des services de la communauté pour différentes mise à jour un peu sport...

Mais sur mon ancien site j'utilisez un skin standard sans aucune modification, alors pour la 1° fois je vais faire des modifications.

 

Au Niger on parle le Français, donc il n'est pas nécessaire de faire un site multi langue. En tout cas ce n'est pas pour l'instant dans les besoins.

 

Par contre je pense qu'un jour (dans plusieur mois) on aimerait surement offrire la possibilité de faire des dons en ligne ou de renouveller sa cotisation à l'association en ligne.

  • Est-ce qu'il est prévus des choses dans Yacs?
  • Est-ce qu'il y a des modules/produits facilent à utiliser qui peuvent être intégré dans Yacs?

Ceci n'est que de la curiosité pour commencer à me renseignier sur le sujet.

Pour l'instant, on vas mettre l'effort dans les jours à venir sur le look, sur le graphisme, sur l'ergonomie et mettre déjà un peux d'information sur les projets et des photos des projets pour vréer une version 0 de départ avant de l'ouvrire aux membre de l'association, aux partenaires et aux donnateurs.

L'étape suivante sera de ce faire référencer dans les moteurs de recherche, j'ai vue qu'il y avait de trés bons articles sur le site et un chat Mercredi sur le sujet (ce sera le sujet de Mars ou Avril je pense).

Et surement à la rentré de septembre, il serait intéressant de mettre un systéme de paiment sécurisé pour les abonements (donc sujet pour la rentré scolaire).

Je partagerai bien sure mon expérience de Newbie...

 

 

Pat
140 posts

on Feb. 29


Bon je continue sur mon expérience.

Aprés avoir passé du temps à entrer des sections, quelques articles, quelques photos

est venue le temps de jouer avec les options standard pour changer le look (le type d'affichage) des sections, des articles, etc... Cela prend beaucoup de temps, mais évidement cela est primordial (grace à Yacs on peux changer plein de fois d'avis, et faire quasiment ce que l'on veux avec les options standards)
Ensuite arrive le temps où, il faut passer au graphic, avoir une jolie entête de page, etc... Là il faut du gout et encore du temps... Comme pour l'instant ce n'est qu'une maquette, ce n'est pas primordial mail il faut un minimum...)

 

Arrive le moment ou ce que l'on veux faire est pas dans les options standards de YACS

Un des souhait de l'association a été d'avoir un visuel graphic cohérent sur tout le site, mais un entête de page qui change (un peux) en fonction de la section consulté.

Ce qui se traduit par un fichier .jpg différent pour chaque section dans la definition du style "header_panel".

Comme header_panel est définie dans le fichier .css du skin, il n'est pas dynamiquement changeable, la logique doit être codé dans le fichier template.php.

Le principe utilisé a donc été de déplacer la definition du style header_panel depuis le css vers le fichier template et d'ajouter la logique pour paramétrer le nom de fichier.

Merci à Lesage Alain et Paques, Bernard qui m'ont donner les éléments qui me manquaient pour faire fonctionner le tout (voir article Bandeau différents pour chaque section (Via 1 skin)?)

Il faut donc:

  • supprimer ou commenter la définition de header_panel dans votre CSS
  • ajouter ce bout de code dans template.php dans la partie de définition du header au alentour de la ligne 80.

<p></p>
<
p>// we have one style sheet for everything -- media="all" means it is not
    
loaded by Netscape Navigator 4</p>
<
p>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 />
// En fonction du N° de section courant génére lé nom de l'image de
    
fond<br />
$PLsectionID NULL;<br />
if(isset(
$context['current_focus'][0]))   <br />
$PLsectionID str_replace('section:''',   
    $context
['current_focus'][0]);<br />
if(isset(
$context['current_focus'][1]))   <br />
$PLsectionID str_replace('section:''',   
    $context
['current_focus'][1]);<br />
if(isset(
$context['current_focus'][2]))   <br />
$PLsectionID str_replace('section:''',   
    $context
['current_focus'][2]);<br />
if(isset(
$context['current_focus'][3]))   <br />
$PLsectionID str_replace('section:''',   
    $context
['current_focus'][3]);</p>
<
p>$PLfilename =
    
'skins/RanaSkeleton/images/header_background_'.$PLsectionID.'.jpg';</p>
<
p>// 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 />
};<
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("'
.$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";</p>
<
p>// Fin  ****** Insertion PL<br />
    <br />
// implement the 'you are here' feature</p>

Dans mon besoin toutes les sections peuvent avoir potentiellement une image différente, cependant si l'image est différente uniquement pour les sections root (et les sous-section l'hérite). Il sufiit d'utiliser uniquement un test :

<p></p>
<
p>if(isset($context['current_focus'][0]))   <br />
$PLsectionID str_replace('section:''',   
    $context
['current_focus'][0]);</p>

Evidement ensuite il suffit de faire vos images et des les appeler header_background_12.jpg pour la section N°12, etc... si vous n'avez pas d'image avec le bon indice alors l'image par defaut est utilisé.

 

Ce que j'ai appris:

  • un bon exercice de passer un style "static" dans le CSS en quelque chose de dynamique dans template.php.
  • L'existence de certaine variables contextuelles pour paramétrer la logique php (voir plus bas)


  • La difference entre $context['url_to_root'] et .$context['path_to_root']. Utiliser path_to_root dans les tests d'existances de fichier ou pour toutes manipulations de fichiers dans le contexte du server, utiliser url_to_root pour creer le lien dans la page généré pour l'utilisateur.

 

Current_focus mon ami:

La variable $context['current_focus'][0] qui contient le nom de la section parent (ex: section:12), mais aussi $context['current_focus'][1] la sous-section et $context['current_focus'][2] la sous-sous-section où l'on ce trouve.

Exemple: L'article: http:www.rananiger.info/yacs/articles/view.php/13/ecole-de-karakara-en-septembre-2007 est dans la section et les sous-section suivantent: Accueil «   Nos activités «   Education et social «   Ecole de Karakara «  C'est à dire section:11 / section:12 / section:14 donc les valeurs sont:

  • $context['current_focus'][0] = 11
  • $context['current_focus'][1] = 12
  • $context['current_focus'][2] = 14

NB: dans le cas de section special (page d'accueil, panneau de control,...) ces variables n'existent pas.

 

Actuellement cette solution est mise en place sur le site http:www.rananiger.info/yacs les images ne sont pas les images finales, mais on peux voir l'image d'entête changer sur certaine section et pas sur d'autres.

Exemple en place actuellement:

  • dans les sous-sections de Accueil «   Nos activités «   Education et social « toutes les sous-sections ont une image différente,
  • par contre dans Accueil «   Nos activités «   Economique «  toutes les sous-sections ont la même image que la section Economie, etc...

 

Le besoin pour allez encore plus loin: Connaitre la liste des variables que l'on peux utiliser dans le fichier template.php pour construire une logique dynamique en fonction du contexte... Pour pouvoir afficher ou pas des menus, des images, des textes specifiques, etc.... en fonctions de l'article, d'une section, d'un utilisateur, etc....

hail Si quelqu'un a un pointeur vers une documentation de la liste des variables YACS utilisable dans template.php, je suis preneur....

 

 

 

Lasares
avatar
from L'Île-Bizard à Montréal, Québec
697 posts

inspired from Pat on Mar. 17


" Si quelqu'un a un pointeur vers une documentation de la liste des variables YACS utilisable dans template.php, je suis preneur.... "


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
Tof
from Grenoble-Chambery
474 posts

on Mar. 18


Bonjour Pat,

Je fais parfois le tour des articles de yacs, et ce matin, c'est tombé sur vous ! rires.

Bravo et merci pour tout ce fil de discussion, pour votre retour d'expérience, vos commentaires élogieux sur yacs, vos critiques constructives, vos apports pour les autres membres et surtout pour mettre Yacs au service de votre ONG.

----- Christophe Battarel Agitateur d'idées Responsable technique et co-gérant altairis
Mon Blog

Rate this page
Posted by Pat on Feb. 21, edited by Tof on Mar. 18, (popular)