26/04/2013, 14:37:57
http://dev.cmsmadesimple.org/bug/view/8880 pretty url de catégorie impossible donc
Par contre tu peux manipuler toi même ces urls afin de sortir de News leur traitement.
Exemple pratique, je vais utiliser l'url http://localhost/cmsms/categorie/3__2_248/Vacances comme url propre et le transformer en son équivalent : http://localhost/cmsms/index.php?mact=Ne...turnid=248
Je fais un rapide mapping :
categorie/99_99_99_99/blabla
les 4 chiffres sont respectivement les informations suivantes :
number
detailpage
categoryId
returnId
le texte avant et après ne sert qu'au décors. Tous les nombres sont facultatifs ce qui expliquera un 99__99_99 par exemple si detailpage n'est pas renseigné ce qui est souvent le cas.
mon .htaccess s'enrichit d'une nouvelle ligne en conséquence :
C'est barbare mais c'est uniquement du rewrite. Un test dans mon navigateur http://localhost/cmsms/categorie/3__2_248/Vacances me ramène bien à la liste des articles de cette catégorie #2 (Vacances)
Maintenant la partie chiante : comment constituer cette url depuis le gabarit de sommaire.
dans un gabarit standard fournit de base j'ai choisit de placer l'url à cliquer sur l'information de la catégorie de chaque article.
J'ai trouvé :
que j'ai remplacé par
et j'ai ajouté un UDT nommé getCategorieId qui me convertit un titre de catégorie en son ID correspondant, voici le code :
Le résultat : http://img4.hostingpics.net/pics/1685112...143651.png
Par contre tu peux manipuler toi même ces urls afin de sortir de News leur traitement.
Exemple pratique, je vais utiliser l'url http://localhost/cmsms/categorie/3__2_248/Vacances comme url propre et le transformer en son équivalent : http://localhost/cmsms/index.php?mact=Ne...turnid=248
Je fais un rapide mapping :
categorie/99_99_99_99/blabla
les 4 chiffres sont respectivement les informations suivantes :
number
detailpage
categoryId
returnId
le texte avant et après ne sert qu'au décors. Tous les nombres sont facultatifs ce qui expliquera un 99__99_99 par exemple si detailpage n'est pas renseigné ce qui est souvent le cas.
mon .htaccess s'enrichit d'une nouvelle ligne en conséquence :
Code :
[== Indéfini ==]
#rewrite categorie
# categorie/number_detailpage_categoryId_returnId/texte
RewriteRule ^categorie/([0-9]*)_([0-9]*)_([0-9]*)_([0-9]*)\/(.*)$ index.php?&mact=News,cntnt01,default,0&cntnt01number=$1&cntnt01detailpage=$2&cntnt01category_id=$3&cntnt01returnid=$4 [NC,L]
C'est barbare mais c'est uniquement du rewrite. Un test dans mon navigateur http://localhost/cmsms/categorie/3__2_248/Vacances me ramène bien à la liste des articles de cette catégorie #2 (Vacances)
Maintenant la partie chiante : comment constituer cette url depuis le gabarit de sommaire.
dans un gabarit standard fournit de base j'ai choisit de placer l'url à cliquer sur l'information de la catégorie de chaque article.
J'ai trouvé :
Code :
<div class="NewsSummaryCategory">
{$category_label} {$entry->category}'>
</div>
que j'ai remplacé par
Code :
<div class="NewsSummaryCategory">
{$category_label} <a href='{root_url}/categorie/{$param_number}_{$param_detailpage}_{getCategorieId name=$entry->category}_{$returnid}/{$entry->category}'>{$entry->category}</a>
</div>
et j'ai ajouté un UDT nommé getCategorieId qui me convertit un titre de catégorie en son ID correspondant, voici le code :
Code :
[== Indéfini ==]
$db = cmsms()->getDb();
$sql = "SELECT news_category_id FROM ".cms_db_prefix()."module_news_categories WHERE news_category_name = ?";
$parametreSql = array();
$parametreSql[] = $params['name'];
$dbretour= $db->Execute($sql, $parametreSql);
while ($row = $dbretour->FetchRow()){
echo $row['news_category_id'];
return;
}
echo -1;
Le résultat : http://img4.hostingpics.net/pics/1685112...143651.png