Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

URL rewriting Catégories News
#9

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 :

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
Répondre


Messages dans ce sujet

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)