Réécriture d'URL dans Magento
Publié: 2014-09-11Il est extrêmement important que tous les sites Web aient des URL conviviales pour servir à des fins de référencement. Cependant il n'est pas toujours facile pour nous de créer celles-ci dans Magento surtout lorsque vous installez un module. Comment pouvons-nous résoudre ce problème en tant qu'utilisateur non technique ? Nous fournissons 2 solutions réalisables pour la réécriture d'URL dans Magento et créons les URL appropriées comme vous le souhaitez. Vous voyez que ce ne sera plus un gros problème.
CHAUD!! La version 2.0 de Claue est sortie
Voir la démo
Claue - Clean, Minimal Magento 2 & 1 Theme est un excellent modèle pour une boutique de commerce électronique moderne et propre avec plus de 40 mises en page de page d'accueil et des tonnes d'options pour les mises en page de magasin, de blog, de portefeuille, de localisateur de magasin et d'autres pages utiles. La version 2. 0 de Claue est livrée avec un tas de fonctionnalités exclusives, notamment :
- Être basé sur le thème Luma.
- Répondre à toutes les normes du thème Magento
- Amélioration significative des performances
- Compatible avec la plupart des extensions tierces.
- Entièrement compatible avec Magento 2.4.x
Cette deuxième version avancée se différencie complètement de la précédente. Ainsi, si vous utilisez la version 1 de Claue et que vous souhaitez mettre à jour vers la version 2 de Claue, vous ne pouvez que reconstruire un nouveau site Web plutôt que de mettre à jour à partir de l'ancienne version. Maintenant, revenons au sujet principal
Avant d'aborder les 2 solutions, nous montrons un exemple pour décrire comment une URL par défaut est créée et les connaissances préalables pour faire éclore certaines réparations. Par exemple. Nous avons créé un module pour Blog nommé Blog et son espace de noms est MGS avec des champs simples comme
identifiant | Titre | la description |
Dans le back-end, lorsque nous créons un message, nous devons insérer deux champs, c'est-à-dire. Titre et descriptif. L'identifiant de la publication sera généré automatiquement. Afin d'afficher les détails des publications du blog, nous nous appuyons sur le routeur (déclaré dans le fichier config.xml, nous avons déclaré blog), le contrôleur (nous avons nommé index, il s'agira donc du fichier IndexControler.php dans le dossier controllers), l'action (nous avons appelé view , fonction viewAction dans le fichier IndexControler.php) et id du post.
Ainsi, l'URL par défaut de la publication sur le front-end ressemblera à ceci :
http://domain.com/blog/index/view/id/1 (1 est l'ID du message)
Pour autant que nous puissions voir, cette URL n'est absolument pas bonne pour le référencement, elle devrait être réécrite pour devenir une URL conviviale. De retour à l'objectif principal, nous avons proposé 2 méthodes pour créer une URL conviviale. Et dans les deux cas, vous devrez définir l'URL que vous souhaitez ou vous suivrez une règle commune pour créer l'URL (généralement, nous utiliserons le titre du message, convertirons tous les caractères en style normal, remplacerons l'espace vide par -, par exemple. Titre " Comment réécrire l'url dans Magento " deviendra " comment-réécrire-l-url-dans-magento".
Dans cet article, nous utiliserons l'approche de définition d'URL, par conséquent, nous ajouterons un champ supplémentaire à la base de données ci-dessus pour enregistrer l'URL.
identifiant | Titre | la description | URL |
Ainsi, l'URL du message sera remplie.
Première technique pour réécrire l'URL
Utilisez la fonction de réécriture d'URL de Magento, vous pouvez obtenir plus de détails dans Catalogue-> Gestion de la réécriture d'URL.
Vous y découvrirez que Magento crée un module pour enregistrer la réécriture d'URL pour la catégorie et le produit. Magento vous permet également d'ajouter une réécriture d'URL en cliquant sur "Ajouter une réécriture d'URL" pour ajouter une réécriture d'URL personnalisée avec :
Chemin cible : être l'URL du message, par exemple. blog/index/vue/id/1
Request Path : être une réécriture d'URL que vous insérerez, par exemple. comment-réécrire-url-dans-magento.html
Évidemment, nous n'ajouterons pas manuellement ces informations pour enregistrer la réécriture d'URL. Au lieu de cela, nous utiliserons le modèle url_rewrite du module principal (Mage :: getModel('core/url_rewrite')) pour enregistrer l'URL du blog dans la table core_url_rewrite après avoir enregistré les données du blog.
Après avoir enregistré un article dans Blog, vous utilisez le code suivant pour enregistrer la réécriture d'URL :
Mage::getModel('core/url_rewrite') ->setIsSystem(true) ->setIdPath('blog/index/view/id/'.$blogId) ->setTargetPath('blog/index/view/id/'.$blogId) ->setRequestPath($url) ->save();
Remarque : $blogId est l'identifiant du blog après l'enregistrement et $url est l'URL que vous avez définie.
Si vous vous rappelez que la commande ci-dessus est appliquée au nouveau message, si vous souhaitez modifier un message existant, vous devez mettre à jour cet enregistrement.
Deuxième technique pour réécrire l'URL
Prenez toujours le module Blog et les mêmes champs de données que ceux mentionnés ci-dessus, vous créez des publications en back-end comprenant des données adéquates de titre, description, url.
Accédez à config.xml (app/code/local/MGS/Blog/etc)
Dans la balise globale :
<global> … </global>
Ajoutez le code suivant
<events> <controller_front_init_routers> <observers> <blog_custom_router> <class>MGS_Blog_Controller_Router</class> <method>initControllerRouters</method> </blog_custom_router> </observers> </controller_front_init_routers> </events>
Dans le dossier principal du module app/code/local/MGS/Blog , vous allez créer un autre dossier nommé Controller dans lequel vous créez ensuite un fichier nommé Router.php avec le contenu ci-dessous :
<?php class MGS_Blog_Controller_Router extends Mage_Core_Controller_Varien_Router_Abstract { /** * Initialize Controller Router * * @param Varien_Event_Observer $observer */ public function initControllerRouters($observer) { /* @var $front Mage_Core_Controller_Varien_Front */ $front = $observer->getEvent()->getFront(); $front->addRouter('blog', $this); } /** * Validate and Match Cms Page and modify request * * @param Zend_Controller_Request_Http $request * @return bool */ public function match(Zend_Controller_Request_Http $request) { if (!Mage::isInstalled()) { Mage::app()->getFrontController()->getResponse() ->setRedirect(Mage::getUrl('install')) ->sendResponse(); exit; } $identifier = trim($request->getPathInfo(), '/'); $condition = new Varien_Object(array( 'identifier' => $identifier, 'continue' => true )); if ($condition->getRedirectUrl()) { Mage::app()->getFrontController()->getResponse() ->setRedirect($condition->getRedirectUrl()) ->sendResponse(); $request->setDispatched(true); return true; } if (!$condition->getContinue()) { return false; } $collection = Mage::getModel('blog/blog') ->getCollection(); if(count($collection)>0){ foreach($collection as $post){ if($identifier == $post->getUrl()){ $request->setModuleName('blog'); $request->setControllerName('index'); $request->setActionName('view'); $request->setParam('id', $post->getId()); return true; } } } } }
Le morceau de code ci-dessus signifie:
Par exemple, lorsque vous saisissez un chemin dans un navigateur :
http://domain.com/how-to-rewrite-url-in-magento.
La fonction comparera le chemin : how-to-rewrite-url-in-magento.html avec l'url dans la table de données du blog
Si le chemin est similaire au champ URL de n'importe quel enregistrement dans la base de données, alors 4 lignes de commande :
$request->setModuleName('blog'); $request->setControllerName('index'); $request->setActionName('view'); $request->setParam('id', $post->getId());
aidera le système à comprendre que l'URL correspond à router : blog, controler : index, action : view et id est l'identifiant de l'enregistrement ayant une URL identique au chemin dans le navigateur.
Par exemple. Enregistrez l'URL how-to-rewrite-url-in-magento.html et l'id 1, puis :
http://domain.com/how-to-rewrite-url-in-magento.html
correspond à
http://domain.com/blog/index/view/id/1
Ce sont les deux solutions que nous recommandons pour résoudre le problème d'URL conviviale dans Magento . Nous espérons que vous les trouverez utiles. Nous apprécions grandement votre commentaire et votre contribution à l'article.
Merci beaucoup pour votre temps!
L'équipe d'assistance de Magesolution !