validation de code
Bonjour,
pour la réalisation d'un template d'accueil ( à travers une page static paramétrée comme accueil ),
je souhaite lister les articles regroupés par catégorie.
Je me suis inspiré du plugin plxMyAllArchives, peut-on me dire si ce que j'ai fait est valable ..?
code de la page static en question:
Et le résultat se trouve ici ( si ça peut donner des idées ...
)
Cordialement,
_____
D.San
pour la réalisation d'un template d'accueil ( à travers une page static paramétrée comme accueil ),
je souhaite lister les articles regroupés par catégorie.
Je me suis inspiré du plugin plxMyAllArchives, peut-on me dire si ce que j'ai fait est valable ..?
code de la page static en question:
<?php include(dirname(__FILE__).'/header.php'); ?>
<div id="description" class="grid_12">
<div class=" border_1 bg_1 text_justify paddingV_1 paddingH_1 marginB_1">
<?php $plxShow->staticContent(); ?>
</div>
</div>
<div class="grid_12">
<div class=" border_1 bg_1 text_justify paddingV_1 paddingH_1 marginB_1">
<?php echo plxUtils::strCheck($plxShow->plxMotor->aStats[$plxShow->plxMotor->cible ]['meta_description']); ?>
</div>
</div>
<?php
$plxGlob_arts = clone $plxShow->plxMotor->plxGlob_arts;
if($aFiles = $plxShow->plxMotor->plxGlob_arts->query('/^[0-9]{4}.[home|'.$plxShow->plxMotor->activeCats.',]*.[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/','art','rsort', 0, false, 'before')) {
$allArt=array();
$tabCat=array();
foreach($aFiles as $k=>$v) { # On parcourt tous les fichiers
$allArt[$k] = $plxShow->plxMotor->parseArticle(PLX_ROOT.$plxMotor->aConf['racine_articles'].$v);
$catIds = explode(',',$allArt[$k]['categorie']);
foreach($catIds as $i=>$j){
if(!array_key_exists($j,$tabCat)){
$tabCat[$j]=array();
}else{}
$tabCat[$j][0] = $plxShow->plxMotor->aCats[$j];
array_push($tabCat[$j],$allArt[$k]);
}
}
}
foreach($tabCat as $k=>$numCat){
echo "<div class=\"grid_12\">\n";
echo "<h2 class=\"marginT_2\"><a href=\"".$plxShow->plxMotor->urlRewrite('?categorie'.intval($k).'/'.$numCat[0]['url'])."\" title=\"Voir tous les articles de ".$numCat[0]['name']."\" class=\"block\">".$numCat[0]['name']."</a></h2>\n";
echo "<div class=\"border_1 bg_1 text_justify paddingV_1 paddingH_1 marginB_1\">".$numCat[0]['description']."</div>\n";
echo "<div class=\"row\">\n";
$nbArt = count($numCat)-1;
for($i=1; $i<=$nbArt; $i++){
if($i<=5){
echo "<div class=\"item grid_4 border_1 rowV_2 relative\">\n";
echo "<h3><a href=\"".$plxShow->plxMotor->urlRewrite('?article'.intval($numCat[$i]['numero']).'/'.$numCat[$i]['url'])."\" title=\"En savoir plus sur ".$numCat[$i]['title']."\">".$numCat[$i]['title']."</a></h3>\n";
echo "<div class=\"art-chapo paddingH_1 paddingV_1 text_justify\">".$numCat[$i]['meta_description']."</div>\n";
echo "<a href=\"".$plxShow->plxMotor->urlRewrite('?article'.intval($numCat[$i]['numero']).'/'.$numCat[$i]['url'])."\" title=\"En savoir plus sur ".$numCat[$i]['title']."\" class=\"abs_b paddingH_1 paddingV_1 bg_1 block width_100 text_right\">En savoir plus</a>\n";
echo "</div>\n";
}
}
if($nbArt>5){
echo "<a href=\"".$plxShow->plxMotor->urlRewrite('?categorie'.intval($k).'/'.$numCat[0]['url'])."\" title=\"Voir les autres articles de ".$numCat[0]['name']."\" class=\"grid_4 text_center paddingV_0 border_1 bg_1\">Voir les autres articles de ".$numCat[0]['name']."</a>\n";
}
echo "</div>\n";
echo "</div>\n";
}
?>
<?php include(dirname(__FILE__).'/footer.php'); ?>
Et le résultat se trouve ici ( si ça peut donner des idées ...
Cordialement,
_____
D.San
0
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
- la variable $tabCat est initialisée au mauvais endroit. Si tu ne passes pas le test if($aFiles...) tu te retrouves avec un foreach($tabCat...) douteux. Donc faire l'init $tabCat=array() avant if($aFiles....)
- préfère sizeof plutôt que count car il est plus performant
- dès que tu fais un affichage écran ne pas oublier d'utiliser plxUtils:strCheck, cela protège des failles XSS (example où tu affiches $numCat[$i])
- assure toi que l'encodage de ton fichier est bien en utf-8 sans bom, sinon tu risques d'avoir des caractères bizarres affichés dès que tu auras des accents (ça peut etre bon chez toi, mais différent chez un visiteur en fonction de son navigateur et de sa langue)
Voilà mes remarques. Je n'ai pas testé ce que fait le code
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
j'ai inclus le foreach dans la condition puisque celui-ci est responsable de l'affichage s'il y a des articles.
pour plxUtils:strCheck, faut-il aussi le faire pour l'url les liens ?
oula l'UTF8 sans BOM, par encore ce réflexe !
le code rectifié:
<?php include(dirname(__FILE__).'/header.php'); ?> <div id="description" class="grid_12"> <div class=" border_1 bg_1 text_justify paddingV_1 paddingH_1 marginB_1"> <?php $plxShow->staticContent(); ?> </div> </div> <div class="grid_12"> <div class=" border_1 bg_1 text_justify paddingV_1 paddingH_1 marginB_1"> <?php echo plxUtils::strCheck($plxShow->plxMotor->aStats[$plxShow->plxMotor->cible ]['meta_description']); ?> </div> </div> <?php $plxGlob_arts = clone $plxShow->plxMotor->plxGlob_arts; if($aFiles = $plxShow->plxMotor->plxGlob_arts->query('/^[0-9]{4}.[home|'.$plxShow->plxMotor->activeCats.',]*.[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/','art','rsort', 0, false, 'before')) { $allArt=array(); $tabCat=array(); foreach($aFiles as $k=>$v) { # On parcourt tous les fichiers $allArt[$k] = $plxShow->plxMotor->parseArticle(PLX_ROOT.$plxMotor->aConf['racine_articles'].$v); // création d'un tableau des tous les articles $catIds = explode(',',$allArt[$k]['categorie']); // création d'un tableau des catégories de chaque article foreach($catIds as $i=>$j){ // création d'un tableau général des catégories ( évite les doublons ) if(!array_key_exists($j,$tabCat)){ $tabCat[$j]=array(); }else{} $tabCat[$j][0] = $plxShow->plxMotor->aCats[$j]; // insertion des infos de la catégorie dans la première ligne du tableau des catégories array_push($tabCat[$j],$allArt[$k]); // insertion des articles liés à cette catégorie } } foreach($tabCat as $k=>$numCat){ // boucle responsable de l'affichage echo "<div class=\"grid_12\">\n"; // on affiche d'abord les infos de la catégorie ( titre + description ) echo "<h2 class=\"marginT_2\"><a href=\"".$plxShow->plxMotor->urlRewrite('?categorie'.intval($k).'/'.$numCat[0]['url'])."\" title=\"Voir tous les articles de ".plxUtils::strCheck($numCat[0]['name'])."\" class=\"block\">".plxUtils::strCheck($numCat[0]['name'])."</a></h2>\n"; echo "<div class=\"border_1 bg_1 text_justify paddingV_1 paddingH_1 marginB_1\">".$numCat[0]['description']."</div>\n"; echo "<div class=\"row\">\n"; $nbArt = sizeof($numCat)-1; for($i=1; $i<=$nbArt; $i++){ // affichage des articles liés à cette catégorie ( titre + meta-description ) if($i<=5){ echo "<div class=\"item grid_4 border_1 rowV_2 relative\">\n"; echo "<h3><a href=\"".$plxShow->plxMotor->urlRewrite('?article'.intval($numCat[$i]['numero']).'/'.$numCat[$i]['url'])."\" title=\"En savoir plus sur ".plxUtils::strCheck($numCat[$i]['title'])."\">".plxUtils::strCheck($numCat[$i]['title'])."</a></h3>\n"; echo "<div class=\"art-chapo paddingH_1 paddingV_1 text_justify\">".plxUtils::strCheck($numCat[$i]['meta_description'])."</div>\n"; echo "<a href=\"".$plxShow->plxMotor->urlRewrite('?article'.intval($numCat[$i]['numero']).'/'.$numCat[$i]['url'])."\" title=\"En savoir plus sur ".plxUtils::strCheck($numCat[$i]['title'])."\" class=\"abs_b paddingH_1 paddingV_1 bg_1 block width_100 text_right\">En savoir plus</a>\n"; echo "</div>\n"; }else{} } if($nbArt>5){ // s'il y a plus de 5 articles dans la catégorie, on affiche un lien pour voir l'ensemble des articles echo "<a href=\"".$plxShow->plxMotor->urlRewrite('?categorie'.intval($k).'/'.$numCat[0]['url'])."\" title=\"Voir les autres articles de ".plxUtils::strCheck($numCat[0]['name'])."\" class=\"grid_4 text_center paddingV_0 border_1 bg_1\">Voir les autres articles de ".plxUtils::strCheck($numCat[0]['name'])."</a>\n"; }else{} echo "</div>\n"; echo "</div>\n"; } }else{} ?> <?php include(dirname(__FILE__).'/footer.php'); ?>ce que fait le code se trouve dans le lien sus-indiqué
merci
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Quel est celui que tu utilises ?
une bonne chose de faite, des galères en moins
Merci