Jump to content

Redirection CMS Category vers une page cms fille


LETB

Recommended Posts

Bonsoir la communauté,

 

voilà je cherche à créer une redirection d'une page catégorie cms vers sa page fille, en gros je veux que lorsque l'internaute clique sur l'item de la page catégorie il soit redirigé vers le premier enfant de celle-ci donc une page CMS.

 

J'ai essayé d'implémenter du HTML dans le champ description pour faire un redirect mais celui-ci n'accepte pas le code. Comment faire ?

 

Merci à vous.

Link to comment
Share on other sites

Bonsoir la communauté,

 

voilà je cherche à créer une redirection d'une page catégorie cms vers sa page fille, en gros je veux que lorsque l'internaute clique sur l'item de la page catégorie il soit redirigé vers le premier enfant de celle-ci donc une page CMS.

 

J'ai essayé d'implémenter du HTML dans le champ description pour faire un redirect mais celui-ci n'accepte pas le code. Comment faire ?

 

Merci à vous.

 

Si je décortique l'utilisation que tu souhaites faire des pages cms et des catégories, j'ai l'impression que tu utilises les catégories cms comme alias de page , et rien d'autre.

Pourquoi alors ne pas simplement nommer tes pages avec leur alias respectif et utiliser le bloc cms sans ces catégories inutiles ?

Link to comment
Share on other sites

  • 2 months later...

J'ai le même problème. Ce n'est pas que j'utilise une catégorie comme un alias, c'est lié à la façon dont fonctionne le module blocktopmenu.

 

J'utilise blocktopmenu pour avoir un menu rempli de quelques catégories CMS. Du coup, sous chaque bouton de menu, on a une liste des pages qu'on peut atteindre. Mais quand on clique dans le bouton proprement dit, on tombe sur la catégorie.

 

Je préférerai pouvoir atteindre une page spécifique de la catégorie dans ce cas, et la page par défaut listant la catégorie ne me semble pas super utile.

 

J'ai cherché trois angles d'attaque, aucun des trois ne semble marcher :

  1. Une option dans blocktopmenu me permettant de décider où pointe le bouton
  2. Une option dans les catégories CMS pour personnaliser la page qui liste la catégorie. Il n'y a pas grand chose. Même la description de la catégorie n'apparaît pas, seulement la liste des pages filles.
  3. Une redirection par un autre moyen

Bon, ben va falloir bidouiller le PHP, mais je pense que ça serait utile.

Link to comment
Share on other sites

Bon, ben va falloir bidouiller le PHP, mais je pense que ça serait utile.

 

Alors j'ai fait un choix (arbitraire) de faire que blocktopmenu sélectionne le premier article de la catégorie par défaut. La modification de blocktopmenu est la suivante:

 

 

diff --git a/modules/blocktopmenu/blocktopmenu.php b/modules/blocktopmenu/blocktopmenu.php                                                                                                                                                                                    
index a47f6cc..d9cf25d 100755                                                                                                                                                                                                                                                 
--- a/modules/blocktopmenu/blocktopmenu.php                                                                                                                                                                                                                                   
+++ b/modules/blocktopmenu/blocktopmenu.php                                                                                                                                                                                                                                   
[spam-filter] -542,7 +542,7 [spam-filter] class Blocktopmenu extends Module
                                       $category = new CMSCategory((int)$id, (int)$id_lang);                                                                                                                                                                                 
                                       if (count($category))                                                                                                                                                                                                                 
                                       {                                                                                                                                                                                                                                     
-                                               $this->_menu .= '<li><a href="'.$category->getLink().'">'.$category->name.'</a>';                                                                                                                                             
+                                               $this->_menu .= '<li><a href="'.$this->getCMSCategoryLink($category).'">'.$category->name.'</a>';                                                                                                                             
                                               $this->getCMSMenuItems($category->id);                                                                                                                                                                                        
                                               $this->_menu .= '</li>'.PHP_EOL;                                                                                                                                                                                              
                                       }                                                                                                                                                                                                                                     
[spam-filter] -694,6 +694,22 [spam-filter] class Blocktopmenu extends Module
               }                                                                                                                                                                                                                                                             
       }                                                                                                                                                                                                                                                                     

+       private function getCMSCategoryLink($category)                                                                                                                                                                                                                        
+       {                                                                                                                                                                                                                                                                     
+               $id_lang = (int)Context::getContext()->language->id;                                                                                                                                                                                                          
+                                                                                                                                                                                                                                                                             
+               $pages = $this->getCMSPages((int) $category->id);                                                                                                                                                                                                             
+                                                                                                                                                                                                                                                                             
+               if (count($pages))                                                                                                                                                                                                                                            
+               {                                                                                                                                                                                                                                                             
+                    $page = $pages[0];                                                                                                                                                                                                                                       
+                    $cms = new CMS($page['id_cms'], (int)$id_lang);                                                                                                                                                                                                          
+                    $links = $cms->getLinks((int)$id_lang, array((int)$cms->id));                                                                                                                                                                                            
+                    return $links[0]['link'];                                                                                                                                                                                                                                
+               }                                                                                                                                                                                                                                                             
+                return $category->getLink();                                                                                                                                                                                                                                 
+       }                                                                                                                                                                                                                                                                     
+                                                                                                                                                                                                                                                                             
       private function getCMSOptions($parent = 0, $depth = 1, $id_lang = false)                                                                                                                                                                                             
       {                                                                                                                                                                                                                                                                     
               $id_lang = $id_lang ? (int)$id_lang : (int)Context::getContext()->language->id;                                                                                                                                                                               

  • Like 1
Link to comment
Share on other sites

  • 1 year later...
  • 4 months later...
  • 2 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...