Comment réécrire des URL personnalisées dans OpenCart

Au cours de ce didacticiel, nous allons passer en revue les détails des URL personnalisées adaptées au référencement. C'est un aspect important à prendre en compte lors du développement de modules personnalisés et qui affecte également le classement général des moteurs de recherche..

Nous allons utiliser la dernière version de OpenCart, alors assurez-vous de l'avoir installée pour suivre le code.

Ce que nous allons faire en bref

Voici un résumé des étapes à suivre pour créer des URL personnalisées dans OpenCart:

  • Premièrement, nous devrons comprendre comment cela fonctionne dans le noyau.
  • Nous allons passer en revue les modifications requises dans les fichiers de base.
  • Nous examinerons rapidement les requêtes SQL pour insérer nos mappages d'URL personnalisés..
  • Nous verrons comment utiliser les fonctions de réécriture intégrées.

Donc, voilà le coup d’œil rapide de ce qui va suivre. Passons au premier sujet.

Les mappages d'URL dans une base de données

Tout d’abord, il est important de comprendre le fonctionnement des URL de référencement dans le cœur d’OpenCart..

Allez-y et explorez les entrées de la table MySQL "url_alias" en utilisant phpMyAdmin ou quelque chose de similaire. Vous verrez des correspondances comme celle-ci.

product_id = 48 ipod-classic category_id = 20 ordinateurs de bureau manufacturer_id = 8 apple information_id = 6 delivery

Il y a deux colonnes importantes à noter ici. Le premier est le question colonne qui stocke le chemin réel, et l'autre est mot-clé, qui stocke l'alias de référencement pour cette URL.

Comme vous pouvez le constater, il existe des mappages pour différentes entités telles que le produit, la catégorie, les informations et le fabricant. Chaque fois qu'une entité est enregistrée dans le back-end d'OpenCart, une entrée associée est ajoutée à cette table..

Dans l'interface frontale, chaque fois que l'utilisateur accède à l'URL, OpenCart trouve le mappage associé dans la table "url_alias". De cette manière, l'entité réelle est mappée sur l'URL conviviale pour le référencement.

Allez-y et ouvrez le fichier catalogue / controller / common / seo_url.php, et explorons l'extrait suivant de la indice méthode.

fonction publique index () // Ajoute une réécriture à la classe d'URL if ($ this-> config-> get ('config_seo_url')) $ this-> url-> addRewrite ($ this);  // Decode URL if (isset ($ this-> request-> get ['_ route_']))) $ parts = explode ('/', $ this-> request-> get ['_ route_']]); // supprime les tableaux vides de la fin if ((utf8_strlen (end ($ parts))) == 0) array_pop ($ parts);  foreach ($ parts as $ part) $ query = $ this-> db-> query ("SELECT * FROM". DB_PREFIX. "url_alias WHERE mot-clé = '". $ this-> db-> escape ($ part) . "'"); if ($ query-> num_rows) $ url = explode ('=', $ query-> row ['query']); if ($ url [0] == 'product_id') $ this-> request-> get ['product_id'] = $ url [1];  if ($ url [0] == 'category_id') if (! isset ($ this-> request-> get ['chemin'])) $ this-> request-> get ['chemin'] = $ url [1];  else $ this-> request-> get ['path']. = '_'. $ url [1];  if ($ url [0] == 'constructeur_id') $ this-> request-> obtenir ['constructeur_id'] = $ url [1];  if ($ url [0] == 'information_id') $ this-> request-> obtenir ['information_id'] = $ url [1];  if ($ query-> row ['query'] && $ url [0]! = 'information_id' && $ url [0]! = 'constructeur_id' && $ url [0]! = 'category_id' && $ url [ 0]! = 'Product_id') $ this-> request-> get ['route'] = $ query-> row ['query'];  else $ this-> request-> get ['route'] = 'error / not_found'; Pause;  if (! isset ($ this-> request-> get ['route'])) (isset ($ this-> request-> get ['product_id']))) $ this-> request-> get ['route'] = 'produit / produit';  elseif (isset ($ this-> request-> get ['chemin'])) $ this-> request-> get ['route'] = 'produit / catégorie';  elseif (isset ($ this-> request-> get ['constructeur_id'])) $ this-> request-> get ['route'] = 'produit / fabricant / info';  elseif (isset ($ this-> request-> get ['information_id'])) $ this-> request-> get ['route'] = 'information / information';  if (isset ($ this-> request-> get ['route'])) retourne une nouvelle action ($ this-> request-> get ['route']); 

Comme vous pouvez le constater, nous récupérons l’entrée associée dans la table "url_alias". Après cela, le paramètre de requête est analysé et un chemin interne associé est renvoyé..

Donc, c'est la façon dont cela fonctionne dans le noyau. Malheureusement, la configuration ne fonctionne que pour les URL principales. Pour les URL personnalisées, nous devons modifier le code principal. C'est la recette de notre prochaine section.

Les modifications du fichier de base

Allez-y et ouvrez le fichier catalogue / controller / common / seo_url.php, et remplacer le récrire méthode avec la suivante.

fonction publique rewrite ($ link) $ url_info = parse_url (str_replace ('&', '&', $ link)); $ url = "; $ data = array (); parse_str ($ url_info ['query'], $ data); foreach ($ data en tant que $ key => $ value) if (isset ($ data ['route'] )) if (($ data ['route'] == 'produit / produit' && $ key == 'produit_id') || (($ data ['route'] == 'produit / fabricant / info' | | | $ data ['route'] == 'produit / produit') && $ key == 'fabricant_id') || ($ data ['route'] == 'information / information' && $ key == 'information_id' )) $ query = $ this-> db-> query ("SELECT * FROM". DB_PREFIX. "url_alias WHERE 'query' = '". $ this-> db-> escape ($ key.' = '. int) $ value). "'"); if ($ requête-> num_rows && $ requête-> ligne [' mot clé ']) $ url. =' / '. $ requête-> ligne [' mot clé ']; unset ($ data [$ clé]); elseif ($ clé == 'chemin') $ catégories = exploser ('_', $ valeur); foreach ($ catégories en tant que $ catégorie) $ query = $ this -> db-> query ("SELECT * FROM". DB_PREFIX. "url_alias WHERE 'query' = 'category_id =". (int) $ category. "'"); if ($ query-> num_rows && $ query-> rangée ['mot clé']) $ url. = '/'. $ requête-> rangée ['mot clé']; else $ url = "; Pause;  unset ($ data [$ key]); // NOTRE CODE PERSONNEL else $ query = $ this-> db-> query ("SELECT * FROM". DB_PREFIX. "Url_alias WHERE 'query' = '". $ Data [' route ']. "" ") ; if ($ query-> num_rows && $ query-> row ['mot clé']) $ url. = '/'. $ requête-> ligne ['mot clé'];  else $ url = "; break; // NOTRE CODE PERSONNALISÉ if ($ url) unset ($ data ['route']); $ query ="; if ($ data) foreach ($ data as $ key => $ value) $ query. = '&'. rawurlencode ((chaîne) $ clé). '='. rawurlencode ((chaîne) $ valeur);  if ($ query) $ query = '?' . str_replace ('&', '&', trim ($ query, '&'));  retourne $ url_info ['schéma']. ': //'. $ url_info ['hôte']. (isset ($ url_info ['port'])? ':'. $ url_info ['port']: "). str_replace ('/ index.php',", $ url_info ['chemin']). $ url. $ query;  else return $ link; 

le récrire Cette méthode est utilisée pour convertir une URL interne en une URL conviviale pour le référencement. Mais cela ne concerne que les URL internes. Par conséquent, nous devons ajouter du code personnalisé pour que cela fonctionne également pour nos modules personnalisés. Dans nos modifications de code, nous avons fourni le dernier autre cas qui charge le mappage pour notre module personnalisé. Nous n'avons pas encore ajouté notre mapping personnalisé, alors faisons-le dans notre prochaine section.

Bien que nous ayons directement modifié le fichier core, ce n’est que pour des raisons de simplicité. Vous devez utiliser OCMOD pour modifier le fichier principal sans le modifier réellement..

Ajouter des entrées MySQL

Dans cette section, nous allons ajouter un mappage d'URL de référencement pour notre module personnalisé. Encore une fois, c'est un SQL simple à titre d'exemple. Vous pouvez y parvenir à l'aide de scripts d'installation de module..

INSERT INTO 'url_alias' ('requête', 'mot clé') VALEURS ('custom / custom', 'custom-rewrite');

Allez-y et lancez-le dans votre base de données OpenCart.

Dans la prochaine et dernière section, nous verrons comment utiliser la fonction d'assistance pour produire des liens orientés SEO.

Comment ça marche

Allez-y et créez un nouveau fichier catalogue / contrôleur / custom / custom.php avec le contenu suivant.

url-> link ('custom / custom'); $ this-> response-> setOutput ('Lien de réécriture d'URL personnalisé'); 

Maintenant, dans le frontal, ouvrez l’URL http://www.yourstore.com/index.php?route=custom/custom.

Oui, c'est un écran blanc ordinaire avec un seul lien, et c'est ce que nous voulions. La chose importante à noter ici est la URL de ce lien, il est maintenant SEO-friendly! Cliquez dessus pour charger la même page, car nous avons ajouté le mappage correspondant dans la table "url_alias".

Donc, c'est tout le concept démontré d'une manière simple. Vous pouvez l'étendre et créer un modèle pour insérer des liens conviviaux pour votre module personnalisé..

Conclusion

Aujourd'hui, nous avons abordé un sujet important dans les URL OpenCart personnalisées pour le référencement. Nous avons adopté une approche très simple pour l'expliquer, et j'espère que cela vous a été utile..

Si vous recherchez des outils, utilitaires, extensions, etc. OpenCart supplémentaires que vous pouvez exploiter dans vos propres projets ou pour votre propre éducation, n'oubliez pas de voir ce que nous avons sur le marché..

N'hésitez pas à poster vos questions et suggestions en utilisant le flux ci-dessous.