URL lisibles par l'utilisateur avec des catégories imbriquées comme/category/sous-catégorie/n-sous-catégories/article. J'utilise CakePHP 2.2.3 et je ne trouve pas de solution appropriée pour un problème de routage. En utilisant 2 tableaux:Itinéraires SEO pour les catégories imbriquées avec paginateur et articles
- articles (pourrait aussi être produits ou messages ou ...)
- ont juste une vue normale "unique"
- un article appartient à une catégorie
- catégories
- imbriquée (comportement Arbre à n niveaux)
- une catégorie peut avoir de nombreux articles
- listes catégorie Voir tous les articles, qui sont liés à cette catégorie
- vue catégorie utilise paginator pour montrer l'article répertorie
Un exemple très courant I deviner. Mais comment dois-je définir le routeur maintenant, pour obtenir des chemins-URL avec les catégories imbriquées comme celui-ci:
/categoryname1 (showing category view)
/categoryname1/articlename1 (showing article view)
/categoryname2/articlename2 (showing article view)
/categoryname2/subcategoryname1 (showing category view)
/categoryname2/subcategoryname2/articlename4 (showing article view)
/n-categoryname/././...n-subcategoryname (showing category view)
/n-categoryname/././...n-subcategoryname/n-articlename (article view)
j'ai essayé de faire tous les itinéraires fixer dans le routes.php, mais ce n'est pas très confortable et Je pense qu'il devrait y avoir une solution dynamique. J'ai également essayé de générer automatiquement toutes les routes hors catégorie et article-alias et les enregistrer dans une table de base de données "itinéraires" séparée - cela a fonctionné, mais je ne pense pas qu'il est vraiment nécessaire de définir des hunderets de routes simples ?!
J'ai aussi essayé simplement de définir toutes les catégories fixer dans le routeur, comme
Router::connect(
'/any-category-name',
array('controller' => 'categories', 'action' => 'view', 1)
);
et pour les articles
Router::connect(
'/any-category-name/:slug',
array('controller' => 'articles', 'action' => 'view'),
array('pass' => array('slug'))
);
Mais avec cette méthode, tous les articles sont disponibles dans toutes les catégories, ce qui n'est pas une bonne solution. Et je pensais à l'aide
Router::connect(
'/:slug', ...
mais je ne sais pas comment continuer, parce qu'il ya deux contrôleurs et deux points de vue différents différentes possibles (aussi je ne sais pas si Pagination continue de fonctionner dans ce cas et que se passera-t-il, si je veux aussi utiliser plus de contrôleurs/actions dans l'installation).
Je pense qu'il ne devrait pas être si difficile d'obtenir des URL imbriquées avec deux contrôleurs (catégories et articles) dans Cake ?! Merci pour tout conseil utile!
Merci beaucoup, je vais devoir essayer de cette façon, mais ça me semble être une bonne solution. Je pense que Category-Slug et Article-Slug doivent être uniques pour que cela fonctionne, mais c'est aussi nécessaire si je stocke des Routes dans une table de base de données ... Merci! –