Table des matières pour DotClear (Bis repetita placent)

BlogJe remet la dernière version de ma page de génération de la tables des matières à utiliser avec le plugin Pages connexes de Zeubeubeu. Cette page doit être placée dans le dossier pages du plugin et son nom doit se terminer par .php (par exemple summary.php). Ensuite, il faut créer un lien comme celui-ci index.php?/summary[1]. Vous pouvez si vous le souhaitez, rajouter à la suite du lien les différents paramètres possibles[2] (dans cet ordre) :

  • Affichage de la date des billets : mettre 1 pour oui (défaut), 0 pour non
  • Affichage des liens sur les noms des catégories : mettre 1 pour oui (défaut), 0 pour non
  • Affichage du nombre de billets pour chaque catégorie : mettre 1 pour oui (défaut), 0 pour non
  • Nombre maximum de billets listés par catégorie, 0 = tous (défaut)

Exemple :

  • index.php?/summary/1/1/1/0 correspond aux valeurs par défaut et est donc équivalent à index.php?/summary.
  • index.php?/summary/0/1/0/5 permet de ne pas afficher la date et de limiter à 5 le nombre de billets listés par catégorie.

Notes

[1] Dans le cas ou le type d'URL configuré pour le blog est Query string.

[2] Les paramètres sont optionnels, mais si un paramètre doit être fourni alors tous les paramètres précédents doivent l'être également.

Le code de ma page symmary.php :

<?php
/******************************************

Table des matieres dynamique - Tortue GT

Objet: affiche tous les billets visibles de chaque categorie.
Requis: Plugin Related (Pages Connexes) de ZeuBeuBeu.

Utilisation: creer un lien vers cette page selon la syntaxe du plugin en precisant si necessaire
les parametres. Exemple de lien si cette page se nomme summary.php : index.php?/summary/1/1

Parametres: a indiquer dans l'ordre suivant

Affichage de la date des billets : mettre 1 pour oui (defaut), 0 pour non
Affichage des liens sur les noms de categorie : mettre 1 pour oui (defaut), 0 pour non
Affichage du nombre de billets pour chaque categorie : mettre 1 pour oui (defaut), 0 pour non
Nombre maximum de billets listés par catégorie, 0 = tous (defaut)

*******************************************/

/* Configuration ************/

$DISPLAY_DATE = '1';	/* Mettre 1 si il faut afficher la date des billets, O sinon */
$DISPLAY_CAT_URL = '1';	/* Mettre 1 pour activer les liens sur les noms de categorie, 0 sinon */
$DISPLAY_CAT_NB = '1';	/* Mettre 1 si il faut afficher le nombre de billets, O sinon */

$DISPLAY_CAT_NB_MAX = 0;	/* Nombre maximum de billets listés par catégorie, 0 = tous */

global $blog;

$conf_display_date = $DISPLAY_DATE;
$conf_display_cat_url = $DISPLAY_CAT_URL;
$conf_display_cat_nb = $DISPLAY_CAT_NB;
$conf_display_cat_nb_max = $DISPLAY_CAT_NB_MAX;
	
$local_tab_query = $GLOBALS['related_tab_query'];

$nb_param = sizeof($local_tab_query);
if ($nb_param > 0) {
	/* Récupération des paramètres
		[0] = Affichage de la date, '1' ou '0'
		[1] = Affichage des liens pour les categories, '1' ou '0'
		[2] = Affichage du nombre de billets de la catégorie, '1' ou '0'
		[3] = Nombre maximum de billets par catégorie, 0 = tous
	*/
	if ($nb_param > 0) {
		$conf_display_date = $local_tab_query[0];
	}
	if ($nb_param > 1) {
		$conf_display_cat_url = $local_tab_query[1];
	}
	if ($nb_param > 2) {
		$conf_display_cat_nb = $local_tab_query[2];
	}
	if ($nb_param > 3) {
		$conf_display_cat_nb_max = $local_tab_query[3];
	}
}
$sitem = '<a href="%2$s">%1$s</a>';

echo '<div id="map">';
echo '<h2>Table des matières</h2>';

/* Récupération de la liste des catégories */
$rs_cat = $blog->getCat('');
if (!$rs_cat->isEmpty()) {

	/* Boucle sur chaque catégorie */
	while ($rs_cat->fetch()) {

		/* Récupération de la liste complète des billets de la categorie */
		$rs_post = $blog->getLastNews(NULL, $rs_cat->f('cat_id'));

		/* On n'affiche la catégorie uniquement s'il y a au moins un billet visible */
		if (!$rs_post->isEmpty()) {
			echo '<h3>';

			/* Debut de l'URL de la categorie */
			if ($conf_display_cat_url == '1') {
				echo '<a href="'.$rs_post->getCatURL().'">';
			}

			echo $rs_cat->f('cat_libelle');

			$nb_billets = $rs_cat->f('nb_post');
			$nb_billets_max = ($conf_display_cat_nb_max == 0 ? $nb_billets : $conf_display_cat_nb_max);
			if ($nb_billets_max > $nb_billets) $nb_billets_max = $nb_billets;

			/* Nombre de billets (optionnel) */
			if ($conf_display_cat_nb == '1') {
				echo ' ('.$nb_billets_max;
				if ($conf_display_cat_nb_max > 0) {
					echo ' dernier'.($nb_billets_max > 1 ? 's' : '');
				}
				echo ' billet'.($nb_billets_max > 1 ? 's' : '');
				echo ')';
			}

			/* Fin de l'URL de la categorie */
			if ($conf_display_cat_url == '1') {
				echo '</a>';
			}
			echo '</h3>';

			echo '<ul>';
			/* Boucle sur chaque billet */
			for ($i = 0; $i < $nb_billets_max; $i++) {
				$rs_post->fetch();
				echo '<li>';
				$res = sprintf($sitem,$rs_post->f('post_titre'),$rs_post->getPermURL());
				echo $res;
				if ($conf_display_date == '1') 
					echo ' ('.date('d/m/Y',$rs_post->getTS()).')';
				echo '</li>';
			}
			echo '</ul>';
		}
	}
}
else {
	/* Il n'y a aucun billet visible, donc un ch'tit message de n'encouragement */
	echo 'Le syndrome de la page blanche ??? Allez un peu de courage messieurs les auteurs !';
}
echo '</div>';
?>

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/2809

Haut de page