Verifique se a página atual é um termo de taxonomia

8

Como posso verificar se a página atual é uma página de termo de taxonomia, semelhante ao feito com o código a seguir usado para verificar se a página atual é a primeira página?

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

Respostas:

13

Apenas para oferecer uma solução que não seja utilizada arg()(o que é recomendável evitar sempre que possível, de acordo com a página de documentos )

Você pode usar a menu_get_object()função:

$term = menu_get_object('taxonomy_term', 2);
if ($term) {
  // User is on a taxonomy term page
}
Clive
fonte
11
Eu acho que o código acima também é executado em páginas de taxonomia / termo / id / editar e alimentar também! Podemos precisar verificar o terceiro argumento?
Anil Sagar
11
@AnilSagar Holy Moly você está certo: P Estou realmente não tenho certeza o que a maneira aceitável de fazer isso é então, supondo que eu não ter feito a que pouco sobre arg()ser menos legível
Clive
Que tal aparecer um pouco && !path_is_admin(current_path())na ifdeclaração? Eu não tenho verificado ainda, mas caminhos editar prazo são páginas de administração, não :)
Chapabu
11
@Chapabu Você deve marcar isso;)
Clive
2
Cuidado: A ativação do Views substitui o carregador de termos de taxonomia, causando menu_get_object ('taxonomy_term', 2); para não funcionar mais. Veja: drupal.org/node/1468006 e 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
fonte
5

<?php if (arg(0) == 'taxonomy' && arg(1) == 'term' && arg(2)): ?> deve fazer o truque.

Caso a edição / feed (e possivelmente algumas outras páginas relacionadas) devam ser excluídas, você pode usar: <?php if (arg(0) == 'taxonomy' && arg(1) == 'term' && arg(2) && !arg(3)): ?>

Madis
fonte
Isso também retornará verdadeiro para o taxonomy/term/123/editqual não tenho certeza de que o OP deseja.
Clive
11
Sim, ele não disse exatamente o que ele está buscando, mas eu atualizei minha resposta para resolver essa preocupação.
Madis