drupal nodes – Reemplazar la ruta de nodo estándar en Drupal 8

Pregunta:

Todavía soy nuevo en toda la semántica de Symfony. ¿Cuál sería la forma más fácil de cambiar las URL canónicas de los nodos para que sean /article/[node-title] lugar de /node/[node-id] ? Siguiendo esta documentación probé el código (que esperaba producir al menos una estructura de URL como /article/[node-id] )

<?php
/**
 * @file
 * Contains \Drupal\example\Routing\ExampleRoutes.
 */

namespace Drupal\example\Routing;
use Symfony\Component\Routing\Route;
/**
 * Defines dynamic routes.
 */
class ExampleRoutes {

  /**
   * {@inheritdoc}
   */
  public function routes() {
    $routes = array();
    // Declares a single route under the name 'example.content'.
    // Returns an array of Route objects. 
    $routes['entity.node.canonical'] = new Route(
      // Path to attach this route to:
      '/article/{node}',
      // Route defaults:
      array(
        '_controller' => '\Drupal\node\Controller\NodeViewController::view',
        '_title' => 'Hello'
      ),
      // Route requirements:
      array(
        '_permission'  => 'access content',
      )
    );
    return $routes;
  }

}
?>

Pero lamentablemente no está cambiando nada …

Respuesta:

Si bien teóricamente ahora es compatible, eso no es posible de esta manera.

No puede cargar un nodo de manera confiable en función del título del nodo, no se garantiza que sea único y, para convertirse en una URL práctica, se deben realizar una serie de reemplazos, como reemplazar espacios, ponerlo en minúsculas, etc.

Use el sistema de alias de ruta para esto, al igual que en Drupal 7. Mantenemos un puerto no oficial del módulo pathauto , que le permite configurar patrones de token para generar automáticamente un alias para cada nodo. También necesita token.module, que puede obtener desde aquí .

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım