Przepisywanie adresów URL w Magento
Opublikowany: 2014-09-11Niezwykle ważne jest, aby wszystkie witryny miały przyjazne adresy URL, które służą do celów SEO. Jednak nie zawsze jest nam łatwo stworzyć je w Magento, zwłaszcza gdy instalujesz moduł. Jak możemy poradzić sobie z tym problemem jako nietechniczny użytkownik? Zapewniamy 2 wykonalne rozwiązania do przepisywania adresów URL w Magento i tworzymy odpowiednie adresy URL, jak chcesz. Widzisz, to już nie będzie duży problem.
GORĄCY!! Wydano wersję 2.0 Claue
Zobacz demo
Claue – czysty, minimalistyczny motyw Magento 2&1 to doskonały szablon dla nowoczesnego i przejrzystego sklepu eCommerce z ponad 40 układami strony głównej i mnóstwem opcji dla sklepu, bloga, portfolio, układów lokalizatora sklepów i innych przydatnych stron. Claue w wersji 2.0 zawiera szereg ekskluzywnych funkcji, w tym:
- Opierając się na motywie Luma.
- Poznaj wszystkie standardy Magento Theme
- Znacząca poprawa wydajności
- Kompatybilny z większością rozszerzeń innych firm.
- W pełni kompatybilny z Magento 2.4.x
Ta druga zaawansowana wersja całkowicie różni się od poprzedniej. Tak więc, jeśli używasz Claue w wersji 1 i chcesz zaktualizować Claue w wersji 2, możesz tylko odbudować nową stronę internetową, a nie aktualizować ze starej wersji. Wróćmy teraz do głównego tematu
Zanim podejdziemy do tych dwóch rozwiązań, pokazujemy przykład, aby opisać, jak tworzony jest domyślny adres URL, i wymagamy wiedzy, aby wykluć się na pewne naprawy. Np. Stworzyliśmy moduł dla Bloga o nazwie Blog, a jego przestrzeń nazw to MGS z prostymi polami, jak
ID | tytuł | opis |
Na zapleczu, kiedy tworzymy post, musimy wstawić dwa pola, tj. Tytuł i opis. Identyfikator posta zostanie wygenerowany automatycznie. W celu wyświetlenia szczegółów posta bloga opieramy się na routerze (zadeklarowanym w pliku config.xml, zadeklarowaliśmy blog), kontrolerze (nazwaliśmy index, czyli będzie to plik IndexControler.php w folderze controllers), akcji (nazywamy view , funkcja viewAction w pliku IndexControler.php) oraz id postu.
Tak więc domyślny adres URL posta w interfejsie użytkownika będzie wyglądał tak:
http://domain.com/blog/index/view/id/1 (1 to identyfikator posta)
O ile widzimy, że ten adres URL nie jest dobry dla SEO, powinien zostać przepisany, aby stał się przyjazny dla adresu URL. Wracając do głównego celu, zaproponowaliśmy 2 metody tworzenia przyjaznego adresu URL. W obu przypadkach będziesz musiał zdefiniować żądany adres URL lub będziesz postępować zgodnie ze wspólną regułą tworzenia adresu URL (zwykle użyjemy tytułu posta, przekonwertujemy wszystkie znaki na normalny styl, zamienimy puste miejsce na -, np. Tytuł „ Jak przepisać adres URL w Magento ” zmieni się w „Jak przepisać adres URL w Magento” .
W tym artykule zastosujemy podejście do definicji adresu URL, dlatego dodamy jeszcze jedno pole do powyższej bazy danych, aby zapisać adres URL.
ID | tytuł | opis | adres URL |
Tak więc adres URL posta zostanie wypełniony.
Pierwsza technika przepisywania adresu URL
Skorzystaj z funkcji przepisywania adresów URL w Magento, więcej szczegółów znajdziesz w Katalog-> Zarządzanie przepisywaniem adresów URL.
Tam dowiesz się, że Magento tworzy moduł do zapisywania przepisywania adresów URL dla kategorii i produktu. Magento umożliwia również dodanie przepisania adresu URL, klikając „Dodaj przepisanie adresu URL”, aby dodać niestandardowy przepisany adres URL za pomocą:
Ścieżka docelowa: być adresem URL posta, np. blog/indeks/widok/id/1
Ścieżka żądania : być przepisanym adresem URL, który wstawisz, np. jak-przepisać-url-w-magento.html
Oczywiście nie dodamy ręcznie tych informacji, aby zapisać przepisywanie adresu URL. Zamiast tego użyjemy modelu url_rewrite modułu podstawowego (Mage::getModel('core/url_rewrite')) do zapisania adresu URL bloga w tabeli core_url_rewrite po zapisaniu danych bloga.
Po zapisaniu posta w Blogu użyj następującego kodu, aby zapisać przepisany adres URL:
Mage::getModel('core/url_rewrite') ->setIsSystem(true) ->setIdPath('blog/index/view/id/'.$blogId) ->setTargetPath('blog/index/view/id/'.$blogId) ->setRequestPath($url) ->save();
Uwaga: $blogId to identyfikator bloga po zapisaniu, a $url to zdefiniowany przez Ciebie adres URL.
Jeśli otrzymasz przypomnienie, powyższe polecenie jest stosowane do nowego posta, jeśli chcesz edytować istniejący post, musisz zaktualizować ten rekord.
Druga technika przepisywania adresu URL
Nadal weź moduł Blog i te same pola danych, jak wspomniano powyżej, tworzysz posty w back-endzie, w tym odpowiednie dane tytułu, opisu, url.
Przejdź do config.xml (app/code/local/MGS/Blog/etc)
W ramach globalnego tagu:
<global> … </global>
Dodaj następujący kod
<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>
W głównym folderze modułu app/code/local/MGS/Blog utworzysz kolejny folder o nazwie Controller, w którym następnie utworzysz plik o nazwie Router.php o poniższej zawartości:
<?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; } } } } }
Powyższy fragment kodu oznacza:
Na przykład, gdy wpisujesz ścieżkę w przeglądarce:
http://domena.com/jak-przepisać-url-w-magento.
Funkcja porówna ścieżkę: jak-przepisać-url-w-magento.html z adresem url w tabeli danych bloga
Jeśli ścieżka jest podobna do pola URL dowolnego rekordu w db to 4 wiersze poleceń:
$request->setModuleName('blog'); $request->setControllerName('index'); $request->setActionName('view'); $request->setParam('id', $post->getId());
pomoże systemowi zrozumieć, że adres URL odpowiada routerowi: blog, kontroler: indeks, akcja: widok, a id to identyfikator rekordu o adresie URL identycznym ze ścieżką w przeglądarce.
Np. Zapisz mając URL jak-przepisać-url-w-magento.html i id 1, a następnie:
http://domena.com/jak-przepisać-url-w-magento.html
odpowiada
http://domena.com/blog/index/view/id/1
To są dwa rozwiązania, które zalecamy, aby rozwiązać problem przyjaznych adresów URL w Magento . Mamy nadzieję, że okażą się pomocne. Bardzo dziękujemy za komentarz i dalszy wkład do artykułu.
Wielkie dzięki za poświęcony czas!
Zespół wsparcia Magesolution !