Riscrittura URL in Magento

Pubblicato: 2014-09-11

È di fondamentale importanza che tutti i siti Web dispongano di URL compatibili con lo scopo SEO. Tuttavia non è sempre facile per noi crearli in Magento soprattutto quando installi un modulo. Come possiamo affrontare questo problema come utente non tecnico? Forniamo 2 soluzioni fattibili per la riscrittura degli URL in Magento e creiamo gli URL appropriati come desideri. Vedete, non sarà più un grosso problema.

CALDO!! La versione 2.0 di Claue è stata rilasciata

claue2_edita (1)

Visualizza la demo

Claue – Clean, Minimal Magento 2&1 Theme è un modello eccellente per un negozio di eCommerce moderno e pulito con oltre 40 layout di home page e tonnellate di opzioni per negozi, blog, portfolio, layout di store locator e altre pagine utili. Claue versione 2.0 include una serie di funzionalità esclusive tra cui:

  • Essendo basato sul tema Luma.
  • Soddisfa tutti gli standard del tema Magento
  • Miglioramento significativo delle prestazioni
  • Compatibile con la maggior parte delle estensioni di terze parti.
  • Pienamente compatibile con Magento 2.4.x

Questa seconda versione avanzata si differenzia completamente dalla precedente. Pertanto, se stai utilizzando Claue versione 1 e desideri eseguire l'aggiornamento a Claue versione 2, puoi ricostruire un nuovo sito Web solo no anziché aggiornare dalla vecchia versione. Ora, torniamo all'argomento principale

Prima di avvicinarci alle 2 soluzioni, mostriamo un esempio per descrivere come viene creato un URL predefinito e le conoscenze prerequisite per schiudere alcune riparazioni. Per esempio. Abbiamo creato un modulo per Blog chiamato Blog e il suo spazio dei nomi è MGS con campi semplici come

ID titolo descrizione

Nel back-end, quando creiamo un post dobbiamo inserire due campi, es. Titolo e descrizione. L'ID del post verrà generato automaticamente. Per visualizzare i dettagli dei post del Blog ci affidiamo a router (dichiarato nel file config.xml, abbiamo dichiarato blog), controller (abbiamo chiamato index, quindi sarà il file IndexControler.php nella cartella controllers), action (abbiamo chiamato view , funzione viewAction nel file IndexControler.php) e id del post.

Quindi, l'URL predefinito del post nel front-end sarà simile a questo:

http://domain.com/blog/index/view/id/1 (1 è l'ID del post)

Per quanto possiamo vedere, questo URL non è assolutamente buono per la SEO, dovrebbe essere riscritto per trasformarlo in un URL friendly. Tornando all'obiettivo principale, abbiamo proposto 2 metodi per creare URL friendly. E in entrambi i modi dovrai definire l'URL che desideri o seguirai una regola comune per creare l'URL (di solito useremo il titolo del post, convertiremo tutti i caratteri in uno stile normale, sostituiremo lo spazio vuoto con -, ad es. Titolo “ Come riscrivere l'url in Magento ” diventerà “ come-riscrivere-l'url-in-magento.

In questo articolo utilizzeremo l'approccio alla definizione dell'URL, quindi aggiungeremo un altro campo al database sopra per salvare l'URL.

ID titolo descrizione url

Quindi, l'URL del post verrà compilato.

Prima tecnica per riscrivere l'URL

Usa la funzione di riscrittura URL di Magento, puoi ottenere maggiori dettagli su Catalogo-> Gestione riscrittura URL.

Immagine1

Lì scoprirai che Magento crea un modulo per salvare la riscrittura dell'URL per la categoria e il prodotto. Magento ti consente anche di aggiungere la riscrittura dell'URL facendo clic su "Aggiungi riscrittura URL" per aggiungere una riscrittura URL personalizzata con:

Percorso di destinazione: essere l'URL del post, ad es. blog/indice/visualizza/id/1

Percorso della richiesta : sii riscrivi l'URL che inserirai, ad es. come-riscrivere-l'url-in-magento.html

Ovviamente non aggiungeremo manualmente queste informazioni per salvare la riscrittura dell'URL. Invece utilizzeremo il modello url_rewrite del modulo principale (Mage::getModel('core/url_rewrite')) per salvare l'URL del blog nella tabella core_url_rewrite dopo aver salvato i dati del blog.

Dopo aver salvato un post in Blog, utilizzi il codice seguente per salvare la riscrittura dell'URL:

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

Nota: $blogId è l'ID del blog dopo il salvataggio e $url è l'URL che hai definito.

Se ti viene ricordato, il comando sopra viene applicato al nuovo post, se desideri modificare un post esistente, devi aggiornare questo record.

Seconda tecnica per riscrivere l'URL

Sempre prendendo il modulo Blog e gli stessi campi dati di cui sopra, crei post nel back-end includendo dati adeguati di titolo, descrizione, url.

Vai a config.xml (app/code/local/MGS/Blog/etc)

All'interno del tag globale:

<global>
…
</global>

Aggiungi il codice seguente

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

Nella cartella principale del modulo app/code/local/MGS/Blog creerai un'altra cartella denominata Controller in cui creerai un file chiamato Router.php con il contenuto seguente:

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

La parte di codice sopra significa:
Ad esempio, quando digiti un percorso in un browser:
http://domain.com/how-to-rewrite-url-in-magento.

La funzione confronterà il percorso: how-to-rewrite-url-in-magento.html con url nella tabella dati del blog
Se il percorso è simile al campo URL di qualsiasi record nel db, allora 4 righe di comando:

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

aiuterà il sistema a capire che l'URL corrisponde al router: blog, controler: index, action: view e id è l'id del record con URL identico al percorso nel browser.

Per esempio. Registra con URL how-to-rewrite-url-in-magento.html e id 1, quindi:

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

è corrispondente a

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

Queste sono le due soluzioni che consigliamo per risolvere il problema relativo all'URL friendly in Magento . Ci auguriamo che li troviate utili. Apprezziamo molto il tuo commento e l'ulteriore contributo all'articolo.

Grazie mille per il vostro tempo!

Team di supporto di Magesoluzione !