Sidebar dynamique avec listing d'article par pages statiques

znkznk Member
août 2010 modifié dans Entraide
Salut à tous,

Aujourd'hui, j'avais essayé une chose intéressante, avoir un listing d'articles dynamiques !!
J'ai eu cette réflexion :
"Pourquoi ne pas se servir de la div sidebar ? avec le code listing ! Et le mettre en page statique !!"
Donc je teste l'idée !

Sidebar.php
<?php if(!defined('PLX_ROOT')) exit; ?>
<!--
<div id="sidebar">
	<div class="categories">
		<h2>Catégories</h2>
		<ul><?php $plxShow->catList('','<li id="#cat_id"><a href="#cat_url" class="#cat_status" title="#cat_name">#cat_name</a></li>'); ?></ul>
	</div>
	<div class="flux">
	  <h2>Syndication</h2>
		<ul>
			<li><a href="./feed.php?atom/commentaires" title="Fil Atom des commentaires">Commentaires</a></li>
			<li><a href="./feed.php?atom" title="Fil Atom des articles">Articles</a></li>
		</ul>
	</div>
	
	<div class="last_art">
		<h2>Derniers articles</h2>
		<ul><?php $plxShow->lastArtList('<li><a href="#art_url" class="#art_status" title="#art_title">#art_title</a></li>'); ?></ul>
	</div>
-->	
<!-- EDIT: Afficher commentaires (menu)
	<div class="last_com">
		<h2>Derniers commentaires</h2>
		<ul>
			<?php $plxShow->lastComList('<li><a href="#com_url">#com_author a dit :</a> #com_content(34)</li>'); ?>
		</ul>
	</div>
-->
Ma page statique "Classe J" de test :
<p>La première classe journaliste de l’Echo des collines est née en septembre 2008. Une classe de seconde du lycée Elie Faure (Lormont) a été sensibilisée à l’univers des médias et formée aux techniques de rédaction de la presse écrite. Les élèves ont produits des articles tout au long de l’année scolaire : une sélection de leurs textes était publiée chaque mois dans le magazine.
Un public jeune est ainsi amené à réfléchir à son environnement proche (articles sur des thèmes d’actualité locale) mais aussi à s’ouvrir à des sujets de société.
La classe journaliste est une expérience réussie et enrichissante, que l’association entend maintenir sur la durée. Le lycée Elie Faure continue de travailler et de proposer une classe pour ce projet. D’autres classes devraient ouvrir en collège et primaire.
</P>
<div id="sidebar">

<h3> Articles :</h3>

<?php

if(!defined('PLX_ROOT')) exit;

#=======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 = '003'; 
# nombre d'articles à afficher par catégorie, mettre 0 pour lister tous les articles
$artsByCategory = 0; 
#==========================

global $plxShow;

$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 '<h2><a href="'.$plxShow->plxMotor->aConf['racine'].'">Accueil</a></h2>';
			}
			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 '<h2>Non classé</h2>';
			} 
			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 '<h2><a href="'.$plxShow->plxMotor->aConf['racine'].'?categorie'.intval($cat_num).'/'.$cat_url.'">'.$cat_name.'</a></h2>';				
			}
			echo "<ul>";
			# 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::dateIsoToHum($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>";
        }

    }
}
?>
</div>
Ça n'as pas marché ..., au lieu de sa la liste s'est affiché en dessous de l'article, alors qu'il doit être sur le côté !!

testiu.th.png

Donc avez vous une idée pour permettre une liste d'article dynamique en fonction des pages statiques avec une position de sidebar ?

Réponses

  • Tu peux mettre ton code dans une page statique, et faire un include de cette page dans ton fichier sidebar.php.

    Je l'ai fait chez moi, ça fonctionne parfaitement :)
  • znkznk Member
    J'y ai pas pense mais aussi associer un theme modifie a un article/page statique aussi.
    Sinon merci, je l'ai fait sur mon localhost
Connectez-vous ou Inscrivez-vous pour répondre.