Rescrierea URL-ului în Magento
Publicat: 2014-09-11Este extrem de important ca toate site-urile web să aibă adrese URL prietenoase pentru a servi scopului SEO. Cu toate acestea, nu este întotdeauna ușor pentru noi să le creăm în Magento, mai ales când instalați un modul. Cum putem aborda această problemă ca utilizator non-tehnic? Oferim 2 soluții fezabile pentru rescrierea URL-urilor în Magento și creăm adrese URL potrivite după cum doriți. Vedeți că nu va mai fi o problemă mare.
FIERBINTE!! Versiunea 2.0 a lui Claue a fost lansată
Vedeți demonstrația
Claue – Tema Clean, Minimal Magento 2&1 este un șablon excelent pentru un magazin de comerț electronic modern și curat, cu peste 40 de aspecte de pagină de pornire și o mulțime de opțiuni pentru magazin, blog, portofoliu, machete de locator de magazine și alte pagini utile. Claue versiunea 2.0 vine cu o mulțime de caracteristici exclusive, inclusiv:
- Bazat pe tema Luma.
- Îndeplinește toate standardele temei Magento
- Îmbunătățirea semnificativă a performanței
- Compatibil cu majoritatea extensiilor de la terți.
- Complet compatibil cu Magento 2.4.x
Această a doua versiune avansată se diferențiază complet de cea anterioară. Astfel, dacă utilizați Claue versiunea 1 și doriți să actualizați la Claue versiunea 2, nu puteți decât să reconstruiți un nou site web, în loc să actualizați de la versiunea veche. Acum, să revenim la subiectul principal
Înainte de a aborda cele 2 soluții, arătăm un exemplu pentru a descrie modul în care este creată o adresă URL implicită și cunoștințele prealabile pentru reparații. De exemplu. Am creat un modul pentru Blog numit Blog și spațiul său de nume este MGS cu câmpuri simple ca
id | titlu | Descriere |
În back-end, atunci când creăm o postare trebuie să inserăm două câmpuri, adică. Titlu și descriere. ID-ul postării va fi generat automat. Pentru a afișa detaliile postării blogului ne bazăm pe router (declarat în fișierul config.xml, am declarat blog), controller (noi am numit index, deci va fi fișierul IndexControler.php în folderul controlere), acțiune (noi am numit view). , funcția viewAction în fișierul IndexControler.php) și id-ul postării.
Deci, adresa URL implicită a postării de pe front-end va arăta astfel:
http://domain.com/blog/index/view/id/1 (1 este ID-ul postării)
Din câte putem vedea, această adresă URL nu este deloc bună pentru SEO, ar trebui rescrisă pentru a se transforma într-un URL prietenos. Revenind la obiectivul principal, am propus 2 metode pentru a crea URL friendly. Și, în orice fel, va trebui să definiți adresa URL dorită sau veți urma o regulă comună pentru a crea adresa URL (de obicei vom folosi titlul postării, vom converti toate caracterele în stil normal, vom înlocui spațiul gol cu -, de exemplu, titlul „ Cum se rescrie adresa URL în Magento ” va deveni „ cum se rescrie url-ul în Magento.
În acest articol vom folosi abordarea definiției URL, prin urmare, vom adăuga încă un câmp la baza de date de mai sus pentru a salva adresa URL.
id | titlu | Descriere | url |
Deci, URL-ul postării va fi completat.
Prima tehnică de rescrie URL
Utilizați funcția de rescriere URL a Magento, puteți obține mai multe detalii la Catalog-> Gestionarea rescrierii URL.
Acolo veți afla că Magento creează un modul pentru a salva rescrierea URL-ului pentru categorie și produs. Magento vă permite, de asemenea, să adăugați o rescrie URL făcând clic pe „Adăugați rescrie URL” pentru a adăuga o rescrie URL personalizată cu:
Calea țintă: fie adresa URL a postării, de ex. blog/index/view/id/1
Calea solicitării : fie rescrierea URL pe care o veți insera, de ex. cum-se-rescrie-url-in-magento.html
Evident, nu vom adăuga manual aceste informații pentru a salva rescrierea adresei URL. În schimb, vom folosi modelul url_rewrite al modulului de bază (Mage::getModel('core/url_rewrite')) pentru a salva URL-ul blogului în tabelul core_url_rewrite după salvarea datelor blogului.
După ce ați salvat o postare în Blog, utilizați următorul cod pentru a salva rescrierea adresei URL:
Mage::getModel('core/url_rewrite') ->setIsSystem(true) ->setIdPath('blog/index/view/id/'.$blogId) ->setTargetPath('blog/index/view/id/'.$blogId) ->setRequestPath($url) ->save();
Notă: $blogId este ID-ul blogului după salvare și $url este adresa URL pe care ați definit-o.

În cazul în care vi se reamintește, comanda de mai sus este aplicată unei postări noi, dacă doriți să editați o postare existentă, trebuie să actualizați această înregistrare.
A doua tehnică de rescrie URL
În continuare, luați modulul Blog și aceleași câmpuri de date ca cele menționate mai sus, creați postări în back-end, inclusiv date adecvate de titlu, descriere, url.
Accesați config.xml (app/code/local/MGS/Blog/etc)
În cadrul etichetei globale:
<global> … </global>
Adăugați următorul cod
<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>
În folderul principal al modulului app/code/local/MGS/Blog veți crea un alt folder numit Controller în care apoi creați un fișier numit Router.php cu conținutul de mai jos:
<?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; } } } } }
Codul de mai sus înseamnă:
De exemplu, când tastați o cale într-un browser:
http://domain.com/how-to-rewrite-url-in-magento.
Funcția va compara calea: how-to-rewrite-url-in-magento.html cu url din tabelul de date al blogului
Dacă calea este similară cu câmpul URL al oricărei înregistrări din db, atunci 4 linii de comandă:
$request->setModuleName('blog'); $request->setControllerName('index'); $request->setActionName('view'); $request->setParam('id', $post->getId());
va ajuta sistemul să înțeleagă că URL-ul corespunde ruterului: blog, controler: index, acțiune: vizualizare și id este id-ul înregistrării având URL-ul identic cu calea din browser.
De exemplu. Înregistrați având URL-ul how-to-rewrite-url-in-magento.html și id 1, apoi:
http://domain.com/how-to-rewrite-url-in-magento.html
corespunde
http://domain.com/blog/index/view/id/1
Acestea sunt cele două soluții pe care le recomandăm pentru a rezolva problema de utilizare a adreselor URL în Magento . Sperăm să le găsiți de ajutor. Apreciem foarte mult comentariul dumneavoastră și contribuția ulterioară la articol.
Mulțumesc mult pentru timpul acordat!
Echipa de suport Magesolution !