PluXML : faire un plan de site
La page du wiki officiel ayant été effacée, et parce que c’est tout de même une fonction bien pratique à insérer sur un site, voici comment faire un plan de site sous PluXML 5+.
Il suffit de créer une nouvelle page statique et d’y insérer le contenu ci-dessous :
<?php
# Page statique Pluxml : liste de tous les articles par catégories par stephane@pluxml.org
# révision 2.0 par Yomli :
# - compatibilité pluxml 5+
global $plxShow;
#=======PARAMÈTRES ========
# format de la date
$format_date = '#num_day/#num_month/#num_year(4)';
# liste des catégories à afficher
# exemple: $catList = ''; = articles de toutes les catégories,
# exemple: $catList = '001|003'; = articles des catégories 001 et 003 uniquement
$catList = '';
# nombre d'articles à afficher par catégorie, mettre 0 pour lister tous les articles
$artsByCategory = 0;
#==========================
?>
<h4>Pages statiques</h4>
<ul class="alt">
<?php $plxShow->staticList('Accueil','<li id="#static_id"><a href="#static_url" class="#static_status" title="#static_name">#static_name</a></li>'); ?>
</ul>
<h4>Catégories</h4>
<ul class="alt">
<?php $plxShow->catList('','<li id="#cat_id" class="#cat_status"><a href="#cat_url" title="#cat_name">#cat_name</a></li>'); ?>
</ul>
<h4>Articles</h4>
<?php
$plx_arts = array();
$plxGlob_arts = plxGlob::getInstance(PLX_ROOT.$plxShow->plxMotor->aConf['racine_articles']);
$aFiles = $plxGlob_arts->query('/[0-9]{4}.[home|0-9,]*'.$catList.'[0-9,]*.[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/','art','rsort',0,false,'before');
$aCatList = explode('|', $catList);
if(is_array($aFiles)) { # On a des fichiers
while(list($k,$v) = each($aFiles)) { # On parcourt tous les fichiers
$temp = $plxShow->plxMotor->parseArticle(PLX_ROOT.$plxShow->plxMotor->aConf['racine_articles'].$v);
$cats = explode(',', $temp['categorie']);
foreach($cats as $cat) {
if($catList=='' OR in_array($cat, $aCatList)) {
if(!isset($plx_arts[$cat]))
$plx_arts[$cat][] = $temp;
elseif(intval(sizeof($plx_arts[$cat])) < $artsByCategory OR $artsByCategory == 0)
$plx_arts[$cat][] = $temp;
}
}
}
if($plx_arts) { # On a des articles
# tri en fonction de l'ordre d'affiche des catégories
uksort($plx_arts, create_function('$a, $b', 'global $plxShow; return strcmp(array_search($a, array_keys($plxShow->plxMotor->aCats)), array_search($b, array_keys($plxShow->plxMotor->aCats)));'));
# On boucle sur nos articles
foreach ($plx_arts as $k => $v) {
$cat_num = $k;
# on trie en fonction de l'ordre d'affichage des articles dans la catégorie
if($cat_num=='home') {
if ($plxShow->plxMotor->aConf['tri']=='asc')
usort($v, create_function('$a, $b', 'return strcmp($a["date"], $b["date"]);'));
else
usort($v, create_function('$a, $b', 'return strcmp($b["date"], $a["date"]);'));
echo '<h5><a href="'.$plxShow->plxMotor->aConf['racine'].'">Accueil</a></h5>';
}
elseif(!isset($plxShow->plxMotor->aCats[$cat_num])) {
if ($plxShow->plxMotor->aConf['tri']=='asc')
usort($v, create_function('$a, $b', 'return strcmp($a["date"], $b["date"]);'));
else
usort($v, create_function('$a, $b', 'return strcmp($b["date"], $a["date"]);'));
echo '<h5>Non classé</h5>';
}
else {
if ($plxShow->plxMotor->aCats[$cat_num]['tri'] == 'asc')
usort($v, create_function('$a, $b', 'return strcmp($a["date"], $b["date"]);'));
else
usort($v, create_function('$a, $b', 'return strcmp($b["date"], $a["date"]);'));
$cat_name = plxUtils::strCheck($plxShow->plxMotor->aCats[ $cat_num ]['name']);
$cat_url = $plxShow->plxMotor->aCats[ $cat_num ]['url'];
echo '';
}
echo "<h5>".$cat_name."</h5><ul class='alt'>";
# On boucle sur les articles de la categories
while(list($null, $art) = each($v)) {
$art_num = intval($art['numero']);
$art_url = plxUtils::strCheck(($art['url']));
$art_title = plxUtils::strCheck(($art['title']));
$art_date = plxDate::formatDate($art['date'], $format_date);
echo '<li>'.$art_date.' : <a href="'.$plxShow->plxMotor->aConf['racine'].'?article'.$art_num.'/'.$art_url.'">'.$art_title.'</a></li>';
}
echo "</ul>";
}
}
}
?>