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
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 du projet (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 ! pas bien :cool:
le code rectifié:
ce que fait le code se trouve dans le lien sus-indiqué
merci
Consultant PluXml
Ancien responsable du projet (2010 à 2018)
Quel est celui que tu utilises ?
une bonne chose de faite, des galères en moins
Merci