Skip to main content Help Control Panel

J.Juraver


on Mar. 12 2010
from Entre chaise et clavier...

Yacs team - Modération, Communication, Documentation
Share
Post to Facebook
Tweet about this
Share at LinkedIn
Invite participants
Reference this page
Monitor
Recent files
support »
See also
 

support «   Besoin d'aide «  

Ajouter un encart latéral sans passer par extra et navigation [Solved]

PreviousNextIndex

WorkflowSupport request
StatusA solution has been made available
OwnerJ.Juraver
Progress80%

Bonjour,

je cherche à créer un encart supplémentaire dans un template, et j'envisage deux méthodes.

Je me demande laquelle est plus compliquée que l'autre ...

Le skin tourne sur Flexible :



Le but du jeu est d'afficher cet encart dans certaines sections seulement, et il va soit remplacer la colonne extra, soit se positionner en dessous. Et je bloque sur certaines phases :

Avec une variante de template

En passant par template_variant.php directement. Le but du jeu est d'afficher cet encart dans certaines sections seulement, et donc de repasser à template.php lorsque je n'en ai pas besoin.

J'ai donc ajouté les règles de style dans flexible.css après la ligne :

/* below that point you can add any additional style you would like to implement manually */

Par contre j'ai du mal à trouver où coller l'appel au contenu dans le template. Pour plus de clarté, j'utilise un include :

// display special and full extra column
        
include ('extra_full.php');

Dans extra_full.php j'écris toutes les commandes d'affichage avec les qui vont bien, mais je ne parviens pas à afficher un test.

Avec des box.extra personalisées

Ce serait une solution probablement moins contraigante. J'ajoute des [box.extra=titre]contenu[/box] là où ça me chante, et je customise chaque boîte.

Mais comment différencier chacune de ces boîtes avec les images de fond distinctes que je souhaite afficher ? Chacune de ces boîtes correspondrait à un blog de mon encart, et chaque bloc possède son propre en-tête avec une image différentes des autres.

Peut-être y'a-t-il moyen de donner un identifiant à chacune de ces boîte, puis de customiser librement chacune avec un règle de style dédié, mais là je sèche :(

Comments

J.Juraver - on Mar. 12 2010
Le problème a été enregistré


Je ne m'attarde pas, j'ai mon yacs en double file...

Yacs on my blog | Suivez le blog Yacs | Yacs Showroom | Plugin Firefox de recherche dans Yetanoz |
Alexis Raimbault - on Mar. 12 2010

Si flexible est pratique quand on connait pas le CSS, il est inversement très compliqué de mettre le nez dans son template.php qui fait tout.

Si on est capable de mettre le nez dans le template de flexible, alors autant faire ses templates soit-même.

Pour revenir à la question, de mémoire tu devrais pouvoir implémenter le code de ton composant dans le skin.php de ton template avec un nom de fontion

echo_montruc()

puis dans la page des composants du control, tu écris "montruc" à la fin de la ligne des composants extra.

yacs va donc appeler echo_montruc() , qui doit renvoyer le texte à afficher. Mais là il faut tout faire. Controler la section pour savoir si on s'affiche, construire la boite avec un id qui va bien, etc.

les fonctions de base de yacs permettent de le faire rapidement (par exemple skin::build_box()), mais il faut les connaitres !




Alexis Raimbault webmaster free-lance
J.Juraver - on Mar. 12 2010

Tiens je croyais la création de composants personalisés n'était pas encore prêtes en 10.2 ?

Donc pour m'adier à bien construire la boîte, je peux aussi copier le skin build qui construit déjà les extras, lui donner un identifiant distinct bien sûr et customiser tranquillement dans CSS ensuite ... J'ai bon ?




Je ne m'attarde pas, j'ai mon yacs en double file...

Yacs on my blog | Suivez le blog Yacs | Yacs Showroom | Plugin Firefox de recherche dans Yetanoz |
Alexis Raimbault - on Mar. 12 2010

non tu peux partir de plus simple que la construction des tous les extras.

la base sera build_box avec en paramètre 'extra'. la fonction est dans skin_skeleton.

En y pensant j'ai une autre solution sans code php :

  • tu créés une page globale, avec un surnom "montruc"
  • dans la description de la page, tu écris ton texte, encapsulé dans un box.extra
  • dans la fabrication des pages>composant, tu écris le surnom de la page à la fin de la ligne extra.

Ton composant devrait apparaitre, sur toutes les pages, mais avec un id cette fois ci.

  • dans le CSS, tu déclare pour cet id : display:none
  • dans les sections où tu veux l'afficher, tu déclares l'option variant_avecmontruc, cela donnera l'id "avecmontruc" à la balise body à partir de cette section. Ne touche pas au template.
  • dans le CSS, tu déclares #avecmontruc #montruc en display:block

 




Alexis Raimbault webmaster free-lance
J.Juraver - on Mar. 12 2010

Oui j'avais dans l'idée de tenter quelque chose qui ressemble à cette méthode




Je ne m'attarde pas, j'ai mon yacs en double file...

Yacs on my blog | Suivez le blog Yacs | Yacs Showroom | Plugin Firefox de recherche dans Yetanoz |
J.Juraver - on Mar. 12 2010
Création la page globale "Encart" avec surnom encart

Bas de page enrichi de [box.extra=Titre]Contenu[/box]

Inscription du composant [code]encart[/encart] dans le panneau extra

A ce stade, le titre de la page : "Encart" apparaît en extra, mais aussi le code [box.extra=Titre]Contenu[/box]

J'ai copié template.php dans un fichier template_with_encart.php

Dans une section, j'ai placé variant_with_encart au menu Options > plus d'options

Dans monskin.css j'ai réglé :
#encart {
display:none;
}
#with_encart #encart { 
display:block;
}


Effets direct : dans toutes mes pages, j'ai dans le panneau extra
Encart
    
[box.extra=Titre]Contenu[/box]
On dirait bien que le code yacs ne peut pas être interprété s'il est placé dans la description de la page.

Egalement, la section spéciale à laquelle j'ai spécifié une variante template ne semble pas prendre en compte la démarche, à savoir être la seule à afficher la box.


Je ne m'attarde pas, j'ai mon yacs en double file...

Yacs on my blog | Suivez le blog Yacs | Yacs Showroom | Plugin Firefox de recherche dans Yetanoz |
Alexis Raimbault - on Mar. 12 2010

tu n'es pas obligé de faire une copie du template.php en template_with_encart. Si ce dernier n'est pas présent, le template par défaut est gardé, mais la balise body est quand même identifiée, ce qui nous intéresse.

vérifie donc l'id de <body> quand tu es sur la section concernée.

pour l'interprétation de l'extra box, c'est peut être un pb, je vais donc faire l'essai de cette procédure de mon côté aussi.




Alexis Raimbault webmaster free-lance
Alexis Raimbault - on Mar. 12 2010

premier essai :

c'est encore plus simple, pas besoin de code [box] etc. Juste un titre, du texte, yacs fait le reste !




Alexis Raimbault webmaster free-lance
Alexis Raimbault - on Mar. 12 2010

l'id de la nouvelle boite extra est component_encart et non pas encart tout court.




Alexis Raimbault webmaster free-lance
J.Juraver - on Mar. 15 2010

Lorsque je vérifie l'ID l'extra box supplémentaire qui apparaît sur la section, j'ai bien component_encart

Plus exactement, ça donne < dl id="component_encart" class="extra_box" >

Du coup je devrais faire ça dans flexible.css ?

#component_encart {
display:none;
}
#with_encart #component_encart { 
display:block;
}



Je ne m'attarde pas, j'ai mon yacs en double file...

Yacs on my blog | Suivez le blog Yacs | Yacs Showroom | Plugin Firefox de recherche dans Yetanoz |
J.Juraver - on Mar. 15 2010

Découverte d'un imprévu ! Coller un code yacs du genre [published=section:xx] fait disparaître le background derrière les éléments listés dynamiquement ! Merde !




Je ne m'attarde pas, j'ai mon yacs en double file...

Yacs on my blog | Suivez le blog Yacs | Yacs Showroom | Plugin Firefox de recherche dans Yetanoz |
J.Juraver - on Mar. 15 2010

Je parviens à afficher le contenu de la page globale dans le côté extra de certaines de mes sections. Je ne suis pas sûr que mes deux règles css ci-dessus soient au top, mais bon l'effet attendu est à peu près le bon. Je cherche à virer l'affichage du titre par contre.

Dans la page globale, j'ai aussi crée des header et des paragraphes, que j'ai sélectionnés en "class" dans flexible.css pour que chacun prenne une allure qui lui est propre (dans cet encart j'ai besoin d'afficher plusieurs blocs).

Je suis presque au bout, mais contre toute attente certains code yacs désactive mon css personnel, notamment le background de mon paragraphe customisé.




Je ne m'attarde pas, j'ai mon yacs en double file...

Yacs on my blog | Suivez le blog Yacs | Yacs Showroom | Plugin Firefox de recherche dans Yetanoz |
Alain Lesage - on Mar. 15 2010

Excellente, cette astuce d'Alexis ! Merci.

Et bonne chance à toi, JJ. Tes expérimentations me permettent de découvrir tout plein de trucs. Merci.


Alexis Raimbault - on Mar. 16 2010

J.Juraver :

oui les deux règles au dessus sont les bonnes.

pour virer le titre, il faut #component_encart dt { display:none;}

pour les interférences avec les codes yacs, j'ai pas assez d'éléments ici pour comprendre le pb. En tous si dans la cascade de styles tes règles persos viennent après les règles du noyau (@import yacs.css) et de la configuration flexible (@import configured.css), rien ne devrait être impossible.

si tu veux indique moi sur quelle balise tu appliques un bckg, et quel code yacs le vire, que je reproduise le phéno chez moi.

@alain : de rien mon cher !




Alexis Raimbault webmaster free-lance
J.Juraver - on Mar. 16 2010

Alexis Raimbault : Les conditions dans lesquelles j'ai remarqué ce phénomène sont les suivantes :

  • Dans le corps de la page "encart", des sous-titres et des paragraphes : < h2 > et < p >
  • Chaque titre et chaque paragraphe possède un sélecteur CSS de type class, pour donner essentiellement un background différent à chacun.
  • Dans un ou des paragraphes, un code yacs de type [published=section:xx] annule le background du paragraphe et donne dans le blanc. Donc le paragraphe est bien selon le background désiré, sauf la prtie affichée dynamiquement par ce code.



Je ne m'attarde pas, j'ai mon yacs en double file...

Yacs on my blog | Suivez le blog Yacs | Yacs Showroom | Plugin Firefox de recherche dans Yetanoz |
Alexis Raimbault - on Mar. 16 2010

J.Juraver : un backround différent à chaque <p> ? s'il la couleur est unique pourquoi pas la mettre en background sur le <dd> du fond ?

en tous cas le code yacs cité coupe le paragraphe par une <ul>, ce qui est normal. Il te suffit d'appliquer le même backround aux <p> et aux <ul>

#component_encart dd p, #component_encart dd ul {background:red;}

mais s'il y a des marges entre les éléments cela va se voir.

 




Alexis Raimbault webmaster free-lance
J.Juraver - on Mar. 17 2010
"

J.Juraver : un backround différent à chaque <p> ? s'il la couleur est unique pourquoi pas la mettre en background sur le <dd> du fond ?

"

Oui un background différent, parce que dans l'encarte "mon_truc" il y a plusieurs blocs : chaque bloc possède un en-tête sous forme d'image, différentes, et un contenu type paragraphe qui doit s'harominiser avec l'en-tête.

Donc je suis contraint à donner un sélecteur class à chaque en-tête H2 qui correspond à une intention de background (une image avec tendance bleue par exemple), ainsi qu'un paragraphe en dessous qui s'hamonise avec son en-tête (background bleu).

Et ainsi de suite.

Le bloc suivant contient une image d'en-tête verte, le paragraphe qui le suite a à un background vert.

Le consitutant un encart général (ou u cartouche coloré si tu préfère) qui doit à la fois trouver sa place parmi les autre menu extra (ajouter une page ext) et aussi apparaître et disparaître à l'envie selon la section où l'on se trouve.

" en tous cas le code yacs cité coupe le paragraphe par une <ul>, ce qui est normal. Il te suffit d'appliquer le même backround aux <p> et aux <ul> "

Je vais peaufiner ça




Je ne m'attarde pas, j'ai mon yacs en double file...

Yacs on my blog | Suivez le blog Yacs | Yacs Showroom | Plugin Firefox de recherche dans Yetanoz |
J.Juraver - on Mar. 17 2010

Finalement, je me dis qu'en donnant un DIV à chaque bloc de mon encart, je m'en sortirai mieux.

< div id="bloc1"> [ published=section:x1 ] < /div>

< div id="bloc2"> [ published=section:x2 ] < /div>

puis

<p>#bloc1 h2 {background: url..IMAGE 1....;}</p>
#block1 p ul li a {background:red;}

<p>#bloc2 h2 {background: url...IMAGE 2...;}</p>
#block2 p ul li a  {background:green;}

De toutes façons, le div #component_encart ne sert qu'à afficher quelque chose en tant que composant. Après on peut se passer de se div -si j'ose dire-pour customiser n'importe quoi à l'intérieur.

Qu'en penses-tu ?




Je ne m'attarde pas, j'ai mon yacs en double file...

Yacs on my blog | Suivez le blog Yacs | Yacs Showroom | Plugin Firefox de recherche dans Yetanoz |
J.Juraver - on Mar. 17 2010
(fais pas attention aux P et /P générés par le formatage lors de l'envoi)


Je ne m'attarde pas, j'ai mon yacs en double file...

Yacs on my blog | Suivez le blog Yacs | Yacs Showroom | Plugin Firefox de recherche dans Yetanoz |
Alexis Raimbault - on Mar. 17 2010

J.Juraver : tu as fais nuit blanche ?

bien sur avec des blocs tu vas faire +simple. D'ailleurs je donnerais simplement un background au div et au h2. De sorte que les autres éléments du div aient tout de suite le bon background, sans avoir à régler les marges, etc. Par défaut un background sur un <p> suit exactement les mots, il ne va pas remplir la largeur de l'encart.

#component_encart div.bloc1 {background:...;}

#component_encart div.bloc1 h2 {background:...;}




Alexis Raimbault webmaster free-lance
J.Juraver - on Mar. 17 2010
"

J.Juraver : tu as fais nuit blanche ?

"


J'en peux plus... un jour avec tel bloc, l'autre jour avec tel bloc.

Je pense prendre des raccourcis, et effectivement travailler avec des DIV pour calquer l'intégralité de chaque bloc.


Je ne m'attarde pas, j'ai mon yacs en double file...

Yacs on my blog | Suivez le blog Yacs | Yacs Showroom | Plugin Firefox de recherche dans Yetanoz |
J.Juraver - on Mar. 18 2010
Une coquille subsiste : comment faire apparaître aussi cette variante sur l'accueil...

J'ai voulu gruger en plaçant variant_with_encart dans l'article de couverture, ça marche, mais que sur l'article de couverture en soi, pas sur l'accueil qui coupe ce genre de truc avec son layout particulier de panneaux de côté.

Peut-être en copiant le template.php renommée homepage_variant.php et en collant DIV id= "component_encart" juste au bon endroit ?...


Je ne m'attarde pas, j'ai mon yacs en double file...

Yacs on my blog | Suivez le blog Yacs | Yacs Showroom | Plugin Firefox de recherche dans Yetanoz |
Alexis Raimbault - on Mar. 18 2010

J.Juraver : plus simple

#home #component_encart {display:block;}

par curiosité, fait donc un tour sur un serveur yacs et regarde comment varie la balise body suivant le type de page affichée.




Alexis Raimbault webmaster free-lance
J.Juraver - on Apr. 1 2010
Fin de la recherche de solution


Je ne m'attarde pas, j'ai mon yacs en double file...

Yacs on my blog | Suivez le blog Yacs | Yacs Showroom | Plugin Firefox de recherche dans Yetanoz |

PreviousNextIndex