Compruebe si la página actual es un término de taxonomía

8

¿Cómo puedo verificar si la página actual es una página de término de taxonomía, de manera similar a lo que se hace con el siguiente código utilizado para verificar si la página actual es la página principal?

if (drupal_is_front_page()) {
  // The current page is the front page.
}
else {
  // It is not the front page.
} 
Daniel Sachs
fuente

Respuestas:

13

Solo para ofrecer una solución que no utilice arg()(que se recomienda evitar siempre que sea posible según la página de documentos )

Puedes usar la menu_get_object()función:

$term = menu_get_object('taxonomy_term', 2);
if ($term) {
  // User is on a taxonomy term page
}
Clive
fuente
1
Supongo que el código anterior también se ejecuta en taxonomía / término / id / edición y páginas de alimentación también. ¿Es posible que necesitemos verificar el tercer argumento?
Anil Sagar
1
@AnilSagar Holy Moly, tienes razón: P Realmente no estoy seguro de cuál es la forma aceptada de hacer esto, suponiendo que no haya inventado esa parte de arg()ser menos legible
Clive
¿Qué hay de aparecer un poco && !path_is_admin(current_path())en la ifdeclaración? Todavía no lo he verificado, pero las rutas de edición de términos son páginas de administración, no :)
Chapabu
1
@Chapabu Deberías marcar eso;)
Clive
2
Precaución: Habilitar vistas reemplaza el cargador de términos de taxonomía, lo que provoca menu_get_object ('taxonomy_term', 2); para no trabajar más. Ver: drupal.org/node/1468006 y api.drupal.org/comment/45018#comment-45018
Manu
5
<?php

if (arg(0) ==  "taxonomy" && arg(1) == "term" && is_numeric(arg(2)) && arg(3) == "") {
  // Taxonomy term page
}

?>
Anil Sagar
fuente
5

<?php if (arg(0) == 'taxonomy' && arg(1) == 'term' && arg(2)): ?> debería hacer el truco.

En caso de que la edición / feed (y posiblemente algunas otras páginas relacionadas) se excluyan, puede usar: <?php if (arg(0) == 'taxonomy' && arg(1) == 'term' && arg(2) && !arg(3)): ?>

Madis
fuente
Eso también será cierto para lo taxonomy/term/123/editque no estoy seguro de que el OP quiera.
Clive
1
Sí, no dijo exactamente a qué apunta, pero actualicé mi respuesta para abordar esa preocupación.
Madis