Reescritura de URL en Magento
Publicado: 2014-09-11Es de vital importancia que todos los sitios web tengan URL compatibles con el propósito de SEO. Sin embargo, no siempre es fácil para nosotros crearlos en Magento, especialmente cuando instala un módulo. ¿Cómo podemos abordar este problema a partir de un usuario no técnico? Brindamos 2 soluciones factibles para la reescritura de URL en Magento y creamos las URL apropiadas que desee. Como ves, ya no será un gran problema.
¡¡CALIENTE!! La versión 2.0 de Claue ha sido lanzada
Ver demostración
Claue: Clean, Minimal Magento 2&1 Theme es una excelente plantilla para una tienda de comercio electrónico moderna y limpia con más de 40 diseños de página de inicio y toneladas de opciones para tiendas, blogs, portafolios, diseños de localizador de tiendas y otras páginas útiles. Claue versión 2.0 viene con un montón de características exclusivas que incluyen:
- Estar basado en el tema Luma.
- Cumple con todos los estándares de Magento Theme
- Mejora significativa del rendimiento
- Compatible con la mayoría de las extensiones de terceros.
- Totalmente compatible con Magento 2.4.x
Esta segunda versión avanzada se diferencia por completo de la anterior. Por lo tanto, si está utilizando la versión 1 de Claue y desea actualizar a la versión 2 de Claue, solo puede reconstruir un nuevo sitio web en lugar de actualizar desde la versión anterior. Ahora, volvamos al tema principal.
Antes de abordar las 2 soluciones, mostramos un ejemplo para describir cómo se crea una URL predeterminada y el conocimiento previo necesario para realizar algunas reparaciones. P.ej. Creamos un módulo para Blog llamado Blog y su espacio de nombres es MGS con campos simples como
identificación | título | descripción |
En el back-end, cuando creamos una publicación, debemos insertar dos campos, es decir. Título y Descripción. El ID de la publicación se generará automáticamente. Para mostrar los detalles de la publicación del blog, confiamos en el enrutador (declarado en el archivo config.xml, declaramos blog), el controlador (lo llamamos índice, por lo que será el archivo IndexControler.php en la carpeta de controladores), la acción (lo llamamos vista , función viewAction en el archivo IndexControler.php) e id de la publicación.
Entonces, la URL predeterminada de la publicación en el front-end se verá así:
http://domain.com/blog/index/view/id/1 (1 es el ID de la publicación)
Por lo que podemos ver, esta URL no es del todo buena para SEO, debería reescribirse para convertirla en una URL amigable. Volviendo al objetivo principal, propusimos 2 métodos para crear URL amigables. Y de cualquier manera, deberá definir la URL que desea o seguirá una regla común para crear la URL (por lo general, usaremos el título de la publicación, convertiremos todos los caracteres al estilo normal, reemplazaremos el espacio vacío con -, por ejemplo, Título “ Cómo reescribir una URL en Magento ” se convertirá en “ cómo-reescribir-una-url-en-magento.
En este artículo utilizaremos el enfoque de definición de URL, por lo tanto, agregaremos un campo más a la base de datos anterior para guardar la URL.
identificación | título | descripción | URL |
Entonces, se completará la URL de la publicación.
Primera técnica para reescribir URL
Utilice la función de reescritura de URL de Magento, puede obtener más detalles en Catálogo-> Gestión de reescritura de URL.
Allí descubrirá que Magento crea un módulo para guardar la reescritura de URL para la categoría y el producto. Magento también le permite agregar reescritura de URL haciendo clic en "Agregar reescritura de URL" para agregar una reescritura de URL personalizada con:
Ruta de destino: sea la URL de la publicación, p. blog/índice/vista/id/1
Solicitud de ruta : sea la reescritura de URL que insertará, por ejemplo. como-reescribir-url-en-magento.html
Obviamente, no agregaremos manualmente esta información para guardar la reescritura de URL. En su lugar, utilizaremos el modelo url_rewrite del módulo principal (Mage::getModel('core/url_rewrite')) para guardar la URL del blog en la tabla core_url_rewrite después de guardar los datos del blog.
Después de haber guardado una publicación en el Blog, use el siguiente código para guardar la reescritura de la 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 es la identificación del blog después de guardarlo y $url es la URL que definiste.
Si se le recuerda, el comando anterior se aplica a la nueva publicación, si desea editar una publicación existente, debe actualizar este registro.
Segunda técnica para reescribir URL
Aún tome el módulo Blog y los mismos campos de datos que se mencionaron anteriormente, cree publicaciones en el back-end que incluyen datos adecuados de título, descripción y URL.
Vaya a config.xml (aplicación/código/local/MGS/Blog/etc)
Dentro de la etiqueta global:
<global> … </global>
Agregue el siguiente código
<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>
En la carpeta principal del módulo app/code/local/MGS/Blog , creará otra carpeta llamada Controller en la que luego creará un archivo llamado Router.php con el siguiente contenido:
<?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; } } } } }
El fragmento de código anterior significa:
Por ejemplo, cuando escribe una ruta en un navegador:
http://domain.com/how-to-rewrite-url-in-magento.
La función comparará la ruta: how-to-rewrite-url-in-magento.html con url en la tabla de datos del blog
Si la ruta es similar al campo URL de cualquier registro en la base de datos, entonces 4 líneas de comando:
$request->setModuleName('blog'); $request->setControllerName('index'); $request->setActionName('view'); $request->setParam('id', $post->getId());
ayudará al sistema a comprender que la URL corresponde al enrutador: blog, controlador: índice, acción: vista e id es la identificación del registro que tiene la URL idéntica a la ruta en el navegador.
P.ej. Registre con URL how-to-rewrite-url-in-magento.html e id 1, luego:
http://dominio.com/como-reescribir-url-en-magento.html
es correspondiente a
http://dominio.com/blog/index/view/id/1
Esas son las dos soluciones que recomendamos para resolver el problema de URL amigable en Magento . Esperamos que te hayan sido utiles. Apreciamos mucho su comentario y su contribución adicional al artículo.
¡Muchas gracias por su tiempo!
¡Equipo de soporte de Magesolution !