¿Cómo puedo obtener el título de la página?


13

drupal_get_title() se ha eliminado de Drupal 8. ¿Cómo puedo obtener el título de la página en Drupal 8?

Respuestas:


21

Si verifica los registros de cambios, debería encontrar lo siguiente: drupal_set_title () y drupal_get_title () fueron eliminados .

Tendrá que leer el aviso de cambio para toda la información, pero aquí hay un punto de partida:

drupal_get_title ()

Como los títulos en las rutas ahora se pueden configurar de varias maneras (ver arriba), se ha eliminado drupal_get_title (). En su lugar, debe llamar al servicio title_resolver.

Drupal 7

<?php
  $title = drupal_get_title();
?>

Drupal 8

<?php
  $request = \Drupal::request();
  if ($route = $request->attributes->get(\Symfony\Cmf\Component\Routing\RouteObjectInterface::ROUTE_OBJECT)) {
    $title = \Drupal::service('title_resolver')->getTitle($request, $route);
  }
?>

1
La respuesta aceptada está desactualizada: vea en otra parte de este hilo para CurrentRouteMatch.
JP

7

Según batch_test.module(D8.4) lo siguiente debería funcionar bien:

$request     = \Drupal::request();
$route_match = \Drupal::routeMatch();
$title       = \Drupal::service('title_resolver')->getTitle($request, $route_match->getRouteObject());

Para más información ver public function TitleResolver::getTitle.


0

Nota

La respuesta aceptada para esta pregunta no está actualizada: consulte Parámetros de solicitud, nombre de ruta y objeto de ruta debe accederse a través de RouteMatch .

Debe usar el servicio current_route_match para recuperar la ruta actual y luego leer o modificar sus parámetros. Esto envuelve cualquier magia de Symfony, etc.

En el código de procedimiento, usaría un código similar al siguiente.

$route = \Drupal::routeMatch()->getCurrentRouteMatch()->getRouteObject();
$title = $route->getDefault('_title');

En el código orientado a objetos, debe usar la inyección de dependencia e inyectar el servicio.


¿Qué hacer si no hay $route->getDefault('_title');sino solo un $route->getDefault('_title_callback');?
leymannx

Por ejemplo, en example.com/user/1
leymannx

2
Esto evita el TitleResolver, por lo que no maneja todas las situaciones. api.drupal.org/api/drupal/…
imclean

El uso de esta solución obtendrá el título no traducido.
Saud Alfadhli

-3

Drupal 8

$request = \Drupal::request();
  // Assuming the Request is $request.
  if ($request->attributes->has('_title')) {
    return $request->attributes->get('_title');
  }

No marqué esta respuesta, pero parece que ->get('_MAGIC')desafortunadamente el método está en desuso y se eliminó principalmente de D8: drupal.org/node/2124749
JP
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.