Joueb   Mini Joueb   Test 

stephane.carnetweb.com

Version  XML 
Recherche


Session
Nom d'utilisateur
Mot de passe

Mot de passe oublié ?



Les BlocsConfigurables permettent de creer facilement des configurables.

Avantages

Par rapport a l'approche d'origine des , les apportent des avantages dans les domaines suivants :

Creation facile :

  • L'auteur du modele de mise en page n'a pas besoin de programmer chaque . Il n'a pas besoin de connaitre les objets et attributs correspondant aux boites de session, de recherche, de blablas, du calendrier etc.
  • La mise en page des blocs configurables utilise les pour eviter que des portions tres similaires de code soient repetees pour chaque bloc. Comme le code n'est pas repete de multiples fois, il est tres facile de le changer.

Configuration flexible :

  • C'est l'utilisateur du modele de mise en page (et non son auteur) qui decide des blocs qui seront affiches ou non sur chaque type de page. Ce choix est effectue via un formulaire, aucune programmation ou edition du modele n'est requise.

Extensibilite :

  • Lorsque de nouveaux types de blocs sont introduits, il n'est pas necessaire de modifier le modele de mise en page pour pouvoir les utiliser.

 

Mise en place

Pour ajouter le support des a un , il faut :

  1. Definir les emplacements de blocs utilisables
  2. Ajouter les indiquant le code a generer pour chaque bloc
  3. Choisir pour chaque emplacement de bloc l'emplacement du code genere

 

1. Definition des emplacements de blocs utilisables

Un emplacement de bloc configurable permet a l'utilisateur d'un modele de mise en page d'afficher ou non un bloc de n'importe quel type a cet emplacement.

Les emplacements de blocs doivent etre definis dans l'entete du modele de mise en page, apres la definition des couleurs configurables (lignes commencant par smartcolor) et avant les directives (lignes commencant par pragma).

Chaque emplacement est defini avec la syntaxe suivante:

smartblock [classe de l'emplacement].[identifiant de l'emplacement] "[description de l'emplacement]" [ par defaut] [ par defaut]

exemple :

smartblock sb.right1 "Bloc de droite 1" calendar index

  • [classe de l'emplacement] : il est possible de definir plusieurs classes d'emplacements et generer pour chacune un code different. Par exemple, chaque classe d'emplacement pourrait avoir une classe CSS differente et ainsi etre presentee differemment. Dans la plupart des cas, une seule classe est utilisee. A chaque classe d'emplacement correspond un jeu de permettant de specifier le code genere.
  • [identifiant de l'emplacement] : cet identifiant doit etre unique. Il permet de specifie a quel endroit le code doit etre genere.
  • [description de l'emplacement] : decrit a quel endroit se trouve l'emplacement et comment le bloc sera presente.
  • [ par defaut] : precise le type du bloc qui correspond a cet emplacement. Il peut etre change par l'utilisateur du modele.
  • [ par defaut] : precise le type des pages pour lesquelles le bloc sera affiche. Il peut etre change par l'utilisateur du modele.

 

2. Ajout des macros

Lorsque l'utilisateur d'un modele de mise en page choisi d'afficher un bloc configurable dans un emplacement de bloc, du code HTML est genere a cet emplacement. Le code depend du , mais il a toujours une structure similaire, articulee autour de .

Par exemple, voici le code genere par le  :

<object class=active_summaries>
 <macro name="<NAME>_start"><arg name="type">active_summaries</arg></macro>
 <macro name="<NAME>_title"><arg name="title"><TITLE></arg></macro>
 <macro name="<NAME>_list_start"></macro>
 <object class=active_summary count=<COUNT>>
      <macro name="<NAME>_link">
         <arg name="text"><attribute title></arg>
         <arg name="url"><attribute url></arg>
         <arg name="extra_text">(<attribute nb_comments>)<object sub_class=active_summary_new_comments> N</object></arg>
       </macro>
   </object>   
   <macro name="<NAME>_list_end"></macro>
 <macro name="<NAME>_end"></macro>
</object>

Le champ <NAME> est remplace par le nom de la classe de l'emplacement, le champ <TITLE> par le titre choisi par l'utilisateur pour ce bloc, et le champ <COUNT> par le nombre d'elements choisi par l'utilisateur pour ce bloc.

Les macros suivantes sont utilisees par les blocs configurables :

  • [classe de l'emplacement]_start : appelee au debut de chaque bloc
  • [classe de l'emplacement]_title : contient le titre du bloc
  • [classe de l'emplacement]_list_start : appelee au debut de chaque liste comportant des elements
  • [classe de l'emplacement]_text : appelee a la fin de chaque bloc
  • [classe de l'emplacement]_link : appelee pour chaque element qui a la forme d'un lien
  • [classe de l'emplacement]_text : appelee pour chaque element qui a la forme d'une ligne de texte
  • [classe de l'emplacement]_link_text : appelee pour chaque element qui a la forme d'un lien + un ligne de texte.
  • [classe de l'emplacement]_link_link : appelee pour chaque element qui a la forme d'un lien + un autre lien
  • [classe de l'emplacement]_anything : appelee pour le contenu d'un bloc qui n'est pas une liste de liens.
  • [classe de l'emplacement]_list_end : appelee a la fin de chaque liste comportant des elements

 

Pour chaque classe d'emplacement, vous pouvez definir les macros ci-dessus. Par exemple, voici un exemple classique de macros, avec une classe d'emplacement dont le nom serait sb :

<define_macro name="sb_start">
<div class="<arg name="type">">
</define_macro>

<define_macro name="sb_end">
</div>
</define_macro>

<define_macro name="sb_list_start">
<ul>
</define_macro>

<define_macro name="sb_list_end">
</ul>
</define_macro>

<define_macro name="sb_title">
<h3>arg name="title"></h3>
</define_macro>
   
<define_macro name="sb_text">
<li><arg name="text"> <arg name="extra_text"></li>
</define_macro>   
 
<define_macro name="sb_link">
<li><a href="<arg name="url">"><arg name="text"></a> <arg name="extra_text"></li>
</define_macro>
   
<define_macro name="sb_link_link">
<li><a href="<arg name="url1">"><arg name="text1"></a> :
<a href="<arg name="url2">"><arg name="text2"></a> <arg name="extra_text"></li>
</define_macro>
   
<define_macro name="sb_link_text">
<li><a href="<arg name="url1">"><arg name="text1"></a> : <arg name="text2"> <arg name="extra_text"></li>
</define_macro> 
  
<define_macro name="sb_anything">
<div class="anything">
<arg name="anything">
</div>
</define_macro>

 

Et apres instanciation des macros, le code genere pour le ressemblerait a :

<object class=active_summaries>
 <div class="active_summaries">
 <h3><TITLE></h3>
 <ul>
 <object class=active_summary count=<COUNT>>
      <li>
         <a href="<attribute url>"><attribute title></a> (<attribute nb_comments>)<object sub_class=active_summary_new_comments> N</object>
       </li>
   </object>   
   </ul>
 </div>
</object>

 

3. Choix des emplacements du code genere

[a rediger]