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.
Voici un résumé des étapes à suivre pour créer des URL personnalisées dans OpenCart:
Donc, voilà le coup d’œil rapide de ce qui va suivre. Passons au premier sujet.
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.
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..
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.
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é..
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.