Jump to content

Edit History

JoliBazar

JoliBazar


remplacement d'une partie de la question après analyse plus fine de la situation

Bonjour à tous,

Après avoir modifié les structure simplifiées dans "CONFIGURER > Paramètres de la boutique > Trafic et SEO" afin que l'identifiant s'affiche tout à la fin, j'observe que cela fonctionne correctement pour les URL de pages CMS (p. ex. "Mentions légales", "Conditions générales", etc.), mais pas pour les celles de catégories telles que présentes dans le menu principal, pour lesquelles l'identifiant de catégorie reste au début.

Dans le gestionnaire, la valeur du champ "Route vers la catégorie" est établie sur : {rewrite}-{id}
mais le menu s'obstine à créer les liens vers les catégories dans l'ordre {id}-{rewrite}.

J'ai jeté un coup d'oeil à classes/Link.php, ou la règle pour les catégories semble définie dans la fonction getCategoryLink:

$rule = 'category_rule';  // ligne 455
(...)
return $url . Dispatcher::getInstance()->createUrl($rule, $idLang, $params, $this->allow, '', $idShop);  // ligne 470

et surtout à classes/Dispatcher.php qui contient la méthode createUrl.

J'ai créé un double de "classes/Dispatcher.php", comme "/overrides/classes/Dispatcher.php" et j'ai modifié ce fichier à la ligne 31

class Dispatcher extends DispatcherCore

et à la ligne 63 et suivantes (cf. ligne 65):

 'category_rule' => [
    'controller' => 'category',
    'rule' => '{rewrite}-{id}',
    'keywords' => [
     'id' => ['regexp' => '[0-9]+', 'param' => 'id_category'],
    'rewrite' => ['regexp' => self::REWRITE_PATTERN],
    'meta_keywords' => ['regexp' => '[_a-zA-Z0-9-\pL]*'],
    'meta_title' => ['regexp' => '[_a-zA-Z0-9-\pL]*'],
 ],

Mais rien n'y fait : mon menu principal continue d'insérer l'identifiant de catégorie au début (et on à la fin) des URL simplifiées.

Je pense que le problème doit se trouver du côté de la fonction createUrl débutant à la ligne 945 de Dispatcher.php.

Cette fonction a une section "// Build an url which match a route" débutant à la ligne 987
et une section construisant une url par défaut, dès la ligne 1019.

Mon hypothèse est donc qu'une route n'est pas appelée pour construire l'URL de la catégorie.
Qui saurait m'indiquer la bonne direction ?

JoliBazar

JoliBazar

Bonjour à tous,

Après avoir modifié les structure simplifiées dans "CONFIGURER > Paramètres de la boutique > Trafic et SEO" afin que l'identifiant s'affiche tout à la fin, j'observe que cela fonctionne correctement pour les URL de pages CMS (p. ex. "Mentions légales", "Conditions générales", etc.), mais pas pour les celles de catégories telles que présentes dans le menu principal, pour lesquelles l'identifiant de catégorie reste au début.

Dans le gestionnaire, la valeur du champ "Route vers la catégorie" est établie sur : {rewrite}-{id}
mais le menu s'obstine à créer les liens vers les catégories dans l'ordre {id}-{rewrite}.

J'ai jeté un coup d'oeil à classes/Link.php, ou la règle pour les catégories semble définie dans la fonction getCategoryLink:

$rule = 'category_rule';  // ligne 455
(...)
return $url . Dispatcher::getInstance()->createUrl($rule, $idLang, $params, $this->allow, '', $idShop);  // ligne 470

et surtout à classes/Dispatcher.php qui contient la méthode createUrl.

J'ai créé un double de "classes/Dispatcher.php", comme "/overrides/classes/Dispatcher.php" et j'ai modifié ce fichier à la ligne 31

class Dispatcher extends DispatcherCore

et à la ligne 63 et suivantes (cf. ligne 65):

 'category_rule' => [
    'controller' => 'category',
    'rule' => '{rewrite}-{id}',
    'keywords' => [
     'id' => ['regexp' => '[0-9]+', 'param' => 'id_category'],
    'rewrite' => ['regexp' => self::REWRITE_PATTERN],
    'meta_keywords' => ['regexp' => '[_a-zA-Z0-9-\pL]*'],
    'meta_title' => ['regexp' => '[_a-zA-Z0-9-\pL]*'],
 ],

Mais rien n'y fait : mon menu principal continue d'insérer l'identifiant de catégorie au début (et on à la fin) des URL simplifiées.

Je pense que cela pourrait tenir à l'endroit où il faut placer les overrides.

J'utilise un thème perso comme thème enfant du thème "classic".

J'ai remarqué qu'il y a des override un peu partout :

  • le dossier override à la racine du site
  • le thème classic, avec son propre dossier de modules qui semblent remplacer (ou étendre) ceux du dossier modules à la racine du site
  • mon propre thème perso, qui vient lui même primer sur le thème classic

Je crois comprendre que les overrides au sens strict sont pour les classes et les contrôleurs, tandis que surclasser des modules se ferait dans les thèmes, mais j'avoue être encore être quelque peu perdu quant à l'endroit où placer les overrides (au sens large) dans l'arborescence de Pretashop que je découvre progressivement et qui m'apparaît encore comme une véritable jungle.

Merci pour votre coup de pouce.

 

 

×
×
  • Create New...