Table des matières

Template Swisslinux.org

Les hacks spécifiques aux différentes moteurs (forum, wiki, galerie,…) sont listé sur la page projet site internet.

La structure du site est basée sur une page xhtml la plus simple possible, celle-ci charge d'abord un fichier de configuration sl_config.inc.php, contenant le nom du template actuel, et des variables permettant l'inclusion statique de fichiers.

Tout le code est sous licence GPL v.2 ou suivante, faites en bon usage.

La page d'exemple :

<?php
 
/** ******************************************* **/
/** This page uses the Swisslinux.org's desgin  **/
/** written by fbianco			        **/
/** ******************************************* **/
 
/** Define some variables for the Swisslinux.org's design **/
require_once('.../sl_config.inc.php');
define('SL_SECTION', '???'); // Section : main, association, wiki, forum, press, gallery, ...
 
require_once(SL_INC_PATH.'sl_l10n.inc.php');	// Load the localization objects and functions
 
/** Load the doctype file **/
require(SL_INC_PATH.'sl_doctype.inc.php');
?>
 
<head>
 
<!-- Si possible ajouter Swisslinux au titre généré par le forum ou wiki -->
<title>Swisslinux.org − <?php print $SL_MC->msg('SL Slogan');?></title>
 
<?php
/** Load head files **/
require(SL_INC_PATH.'sl_head.inc.php');
?>
 
</head>

Jusqu'ici, on a chargé le fichier de configuration, et les objets permettant la localisation du site (voir plus bas). Ensuite, on charge le doctype et tout le contenu du header à l'exception du titre (nécessaire pour afficher un titre différent sur le wiki ou le forum en fonction des pages visitées).

<body>
 
<?php
/** Load files for the top of the body **/
require(SL_INC_PATH.'sl_body_top.inc.php');
require(SL_INC_PATH.'sl_menu_begin.inc.php');
 
// BEGIN : Secondary menu (wiki, gallery, forum, ...)
?>
 
				<!-- Exemple, Ici viennent les menus du wiki ou du forum, titre à modifier.-->
				<h1>Menu 2</h1>
				<a href="#">place 1</a>
				<a href="#">place 2</a>
				<a href="#">place 3</a>
 
<?php
// END : Secondary menu
 
/** Terminate the menu **/
require(SL_INC_PATH.'sl_menu_end.inc.php');
?>
 
<?php
/** Swisslinux.org's news **/
require(SL_INC_PATH.'sl_news.inc.php');
?>
 
<?php /** BEGIN Swisslinux.org's main div **/ ?>
		<div id="sl_main">

Jusque là on a ajouté le sommet de la page, avec, dans le cas actuel, la bannière et les onglets, puis on ouvre une balise principale, qui va accueillir le code du script hôte (forum, wiki, blog, gallerie,…)

		</div>
<?php /** END Swisslinux.org's main div **/?>
 
<?php
/** Terminate the page with footer **/
require(SL_INC_PATH.'sl_body_bottom.inc.php');
?>
 
</body>
</html>

On clos la division prinipale, et on ajoute le pied de page, et on ferme toutes les balises encore ouvertes.

Détails des fichiers de structure

Détails des fichiers de scripts

Certains fichiers dans le template sont chargés de récupérer les cookies (langue, login, …). Ce sont tous des hacks basés sur des scripts de punbb et dokuwiki.

Le javascript dynamique sl_goto.js.php permet le chargement de pages spécifiques du wiki en fonction des langues en utilisant la classe de localisation.

TODO Pour plus de détail, référez vous aux commentaires dans le code.

Localisation du site L10N

Pour permettre plusieurs langues une classe de localisation contenant un tableau des traduction des chaînes de caractères, un pour les liens, et certaines fonctions spécifique est utilisé. Cela nécessite de tenir à jour simultanément les quatres fichiers dans le dossier inc/lang. Le fichier en.inc.php permet de spécifier le type de mot à traduire directement dans le code, par exemple Logout(verb)

Comment utiliser la classe “Message Class” SL_MC ?

Exemple d'utilisation (assez chargé !) provenant du menu principal :

<h1><?php print $SL_MC->msg('Menu');?></h1>
<a href="<?php print $SL_MC->link('home');?>"><?php print $SL_MC->msg('Main page');?></a>

Conventions

Nommage

Les identifiant de balises sont précédé de sl_ pour éviter des conflits dû aux scripts du forum, wiki et autre.

Les fichiers php qui n'ont pas de sens seul sont nommé avec l'extension .inc.php.

Code

TODO (enfin… y'en a pas vraiment ;-)

Bien commenter et indenter votre code !!!