Micro csm xml

Description

Salut à tous !

Bon voilà je me suis amusé à faire un micro cms qui aurait pour but à n'importe qui de faire son propre micro site vitrine. Le but étant de pouvoir gérer tout le contenu du site vite un simple fichier xml, l'index étant générique, et pouvoir gérer différents langages etc.
Le principe est très simple, le code posté proposant un exemple comportant deux pages et deux langues.

Le xml se présente comme cela :
La partie configuration :

 <config>
  <main_page>accueil</main_page>
  <rep>
   <img>/images/</img>
  </rep>
  <background>background.png</background>
  <default_language>fr</default_language>
  <langages>
   <lang><lib>fr</lib><img>fr.jpg</img></lang>
  </langages>
 </config>



Ceci est la configuration minimale : il faut dans tous les cas que la page de départ soit indiqué ainsi que le répertoire contenant les images et le lien vers l'arrière plan. Deux choses à noter :
- 1 : le répertoire image doit être le chemin complet à partir du répertoire "www" (soit le contenu que l'on accède en ne rentrant que l'adresse de base du serveur)
- 2 : si vous souhaitez mettre une couleur plutot qu'une image, il faudra effectuer des modifications dans l'index.php

Ensuite il y a les langages : vous pouvez ajouter autant de langages que vous le souhaitez (en indiquant l'image afin que l'utilisateur ai un moyen de changer), mais chaque déclinaison doit ensuite être présente pour chaque page (voir plus bas).

maintenant l'en-tete :

 
 <tete>
  <banniere>ban.png</banniere>
  <width>100%</width>
  <height>auto</height>
  <titre>
   <titre_fr>micro cms</titre_fr>
   <titre_en>cms micro</titre_en>
  </titre>
 </tete>
 <pied>
 
 


L'en-tête est composé d'une bannière, on indique donc l'image (le chemin étant déterminé par la config), ainsi que ses proportions.
Le titre de la page se décline en fonction des langages (comme on peu le voir, les balises sont faites de cette manière : ELEM_LANG , a chaque fois qu'un élément peu être décliné en plusieurs langages, le langage sera toujours indiqué en seconde partie)


Ensuite le menu se présente de cette manière

  <menu>
  <elem>
   <elem_fr>Accueil</elem_fr>
   <elem_en>Welcome</elem_en>
   <page>accueil</page>
  </elem>
  <elem>
   <elem_fr>Présention</elem_fr>
   <elem_en>Presentation</elem_en>
   <page>present</page>
  </elem>
 </menu>
 


chaque élément du menu se trouve dans une balise elem. La balise page permet ensuite de déterminer la node qui contiendra la page (voir plus bas), et le texte afficher se fera en fonction du langage (comme dit précédement, chaque langage indiqué dans la config doit être existant, et on indique le langage grâce à l'underscore).

enfin, les contenu des pages se retrouvent dans des bélises nommées. Chaque balise devant se reporter à la node <page> des éléments du menu. Par exemple pour "present" :

  <present>
  <image>1.png</image>
  <titre>
   <titre_fr>Présentation</titre_fr>
   <titre_en>Presentation</titre_en>
  </titre>
  <corp>
   <corp_fr>Présentation en francais</corp_fr>
   <corp_en>English Presentation</corp_en>
  </corp>
 </present>
 


Chaque page possède donc une image (commune quelque soit le langage), ainsi qu'un titre et un corp, qui eux sont dépendants du langages (toujours le même principe, l'underscore).

Pour une utilise moins simpliste, ou plutot si on sauhaite avoir des pages plus complètes, ... enfin peu importe, j'ai donné la possibilité d'inclure du contenu php dans le corp. Dans mon exemple, la page index se présente comme ceci :

  <accueil>
  <image>1.png</image>
  <titre>
   <titre_fr>Bienvenue !</titre_fr>
   <titre_en>Welcome !</titre_en>
  </titre>
  <corp>
   <corp_fr>?esc.php</corp_fr>
   <corp_en>English welcome page content</corp_en>
  </corp>
 </accueil>
 


où le contenu francais est l'inclusion d'une page en php (dans mon exemple la page ne comporte que du texte donc il n'y a pas de réel interêt, mais vous pourrez ajouter n'importe quel contenu par la suite) .


EDIT : j'ai oublié le pied :

 <pied>
  <corp>
   <corp_fr>par Naga D. scar</corp_fr>
   <corp_en>by Naga D. scar</corp_en>
  </corp>
 </pied>


le pied est simplement le contenu affiché en bas

Si vous avez des suggestions ou s'il manque des informations n'hésitez pas !

naga

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.