Magento'da URL Yeniden Yazma

Yayınlanan: 2014-09-11

Tüm web sitelerinin SEO amacına hizmet etmek için uygun URL'lere sahip olması kritik derecede önemlidir. Ancak, özellikle bir modül kurduğunuzda, bunları Magento'da oluşturmak bizim için her zaman kolay değildir. Teknik bilgisi olmayan bir kullanıcı olarak bu sorunu nasıl çözebiliriz? Magento'da URL Yeniden Yazma için 2 uygun çözüm sunuyoruz ve istediğiniz gibi uygun URL'ler oluşturuyoruz. Artık büyük bir sorun olmayacağını göreceksiniz.

SICAK!! Claue'nin 2.0 sürümü yayınlandı

claue2_düzenlendi (1)

Demoyu Görüntüle

Claue – Temiz, Minimal Magento 2&1 Teması , 40'tan fazla ana sayfa düzeni ve mağaza, blog, portföy, mağaza bulma düzenleri ve diğer faydalı sayfalar için tonlarca seçenek içeren modern ve temiz bir e-ticaret mağazası için mükemmel bir şablondur. Claue sürüm 2.0, aşağıdakiler de dahil olmak üzere bir dizi özel özellikle birlikte gelir:

  • Luma temasına dayalı olmak.
  • Magento Temasının tüm standartlarını karşılayın
  • Önemli performans artışı
  • Çoğu üçüncü taraf uzantıyla uyumludur.
  • Magento 2.4.x ile tam uyumlu

Bu ikinci gelişmiş sürüm, öncekinden tamamen farklıdır. Bu nedenle, Claue sürüm 1 kullanıyorsanız ve Claue sürüm 2'ye güncelleme yapmak istiyorsanız, eski sürümden güncelleme yapmak yerine yalnızca yeni bir web sitesini yeniden oluşturabilirsiniz. şimdi asıl konuya dönelim

2 çözüme yaklaşmadan önce, varsayılan bir URL'nin nasıl oluşturulduğunu ve bazı onarımları taramak için ön koşul bilgisinin nasıl oluşturulduğunu açıklayan bir örnek gösteriyoruz. Örneğin. Blog için Blog adında bir modül oluşturduk ve namespace olarak basit alanları olan MGS'dir.

İD Başlık tanım

Arka uçta, bir gönderi oluşturduğumuzda iki alan eklememiz gerekiyor, yani. Başlık ve Açıklama. Gönderinin kimliği otomatik olarak oluşturulacaktır. Blogun gönderi ayrıntılarını görüntülemek için yönlendiriciye (config.xml dosyasında bildirildi, blog ilan ettik), denetleyiciye (dizin adını verdik, bu nedenle klasör denetleyicilerinde IndexControler.php dosyası olacak), eyleme (view adını verdik) güveniyoruz. , IndexControler.php dosyasındaki viewAction işlevi) ve gönderinin kimliği.

Bu nedenle, ön uçtaki gönderinin varsayılan URL'si şöyle görünecektir:

http://domain.com/blog/index/view/id/1 (1 yazının kimliğidir)

Gördüğümüz kadarıyla bu URL SEO için tamamen iyi değil, URL dostu olacak şekilde yeniden yazılmalıdır. Ana amaca geri dönersek, URL dostu oluşturmak için 2 yöntem önerdik. Ve her iki şekilde de istediğiniz URL'yi tanımlamanız gerekecek veya URL'yi oluşturmak için ortak bir kural izleyeceksiniz (genellikle gönderinin başlığını kullanırız, tüm karakterleri normal stile dönüştürürüz, boş alanı - ile değiştiririz, ör. Başlık. " Magento'da url nasıl yeniden yazılır ", "magento'da nasıl yeniden yazılır-url'ye dönüşür.

Bu yazıda URL tanımlama yaklaşımını kullanacağız, bu nedenle yukarıdaki veritabanına URL'yi kaydetmek için bir alan daha ekleyeceğiz.

İD Başlık tanım url

Böylece, gönderinin URL'si doldurulacaktır.

URL'yi yeniden yazmak için ilk teknik

Magento'nun URL yeniden yazma işlevini kullanın, Katalog-> URL Yeniden Yazma Yönetimi'nde daha fazla ayrıntı alabilirsiniz.

Resim1

Orada Magento'nun Kategori ve Ürün için URL yeniden yazmayı kaydetmek için bir modül oluşturduğunu öğreneceksiniz. Magento ayrıca, aşağıdakilerle özel bir URL yeniden yazma eklemek için “Url Yeniden Yazma Ekle” seçeneğini tıklayarak URL yeniden yazma eklemenize izin verir:

Hedef Yol: Gönderinin URL'si olun, ör. blog/dizin/görünüm/kimlik/1

İstek Yolu : ekleyeceğiniz URL'yi yeniden yazın, örn. nasıl yeniden yazılır-url-in-magento.html

Açıkçası, URL'yi yeniden yazmak için bu bilgileri manuel olarak eklemeyeceğiz. Bunun yerine, blog verilerini kaydettikten sonra Blog'un URL'sini core_url_rewrite tablosuna kaydetmek için çekirdek modülün url_rewrite modelini (Mage::getModel('core/url_rewrite')) kullanacağız.

Blog'da bir gönderiyi kaydettikten sonra, URL'yi yeniden yazmak için aşağıdaki kodu kullanırsınız:

Mage::getModel('core/url_rewrite')
    ->setIsSystem(true)
    ->setIdPath('blog/index/view/id/'.$blogId)
    ->setTargetPath('blog/index/view/id/'.$blogId)
    ->setRequestPath($url)
    ->save();

Not: $blogId, kaydedildikten sonra blogun kimliğidir ve $url, tanımladığınız URL'dir.

Hatırlatmak gerekirse yukarıdaki komut yeni gönderiye uygulanır, mevcut bir gönderiyi düzenlemek istiyorsanız bu kaydı güncellemeniz gerekir.

URL'yi yeniden yazmak için ikinci teknik

Yine de Blog modülünü ve yukarıda belirtilen aynı veri alanlarını alın, yeterli başlık, açıklama, url verilerini içeren arka uçta gönderiler oluşturursunuz.

config.xml'e gidin (app/code/local/MGS/Blog/etc)

Global etiket içinde:

<global>
…
</global>

Aşağıdaki kodu ekleyin

<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>

app/code/local/MGS/Blog modülünün ana klasöründe Controller adında başka bir klasör oluşturacaksınız ve burada daha sonra aşağıdaki içeriğe sahip Router.php adında bir dosya oluşturacaksınız:

<?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;
         }
      }
    }
  }
}

Yukarıdaki kod parçası şu anlama gelir:
Örneğin, bir tarayıcıya bir yol yazdığınızda:
http://domain.com/how-to-rewrite-url-in-magento.

İşlev şu yolu karşılaştırır: nasıl yapılır-url-in-magento.html blogun veri tablosundaki url ile
Yol, db'deki herhangi bir kaydın URL alanına benziyorsa, 4 komut satırı:

$request->setModuleName('blog');
$request->setControllerName('index');
$request->setActionName('view');
$request->setParam('id', $post->getId());

sistemin, URL'nin yönlendirici: blog, denetleyici: dizin, eylem: görünüm ve id'ye karşılık geldiğini anlamasına yardımcı olur ve id, URL'nin tarayıcıdaki yolla aynı olan kaydın kimliğidir.

Örneğin. Nasıl yapılır-yeniden yazılır-url-in-magento.html URL'sine ve 1 kimliğine sahip olarak kaydedin, ardından:

http://domain.com/how-to-rewrite-url-in-magento.html

karşılık geliyor

http://domain.com/blog/index/view/id/1

Bunlar, Magento'daki URL dostu sorunu çözmek için önerdiğimiz iki çözümdür. Onları yararlı bulacağınızı umuyoruz. Yorumunuz ve makaleye daha fazla katkınız için çok teşekkür ederiz.

Zaman ayırdığınız için çok teşekkürler!

Magesolution destek ekibi!