Sprawdź, czy bieżąca strona jest terminem taksonomicznym

8

Jak mogę sprawdzić, czy bieżąca strona jest stroną z terminem taksonomicznym, podobnie jak w przypadku poniższego kodu użytego do sprawdzenia, czy bieżąca strona jest stroną główną?

if (drupal_is_front_page()) {
  // The current page is the front page.
}
else {
  // It is not the front page.
} 
Daniel Sachs
źródło

Odpowiedzi:

13

Aby zaoferować rozwiązanie, które nie korzysta arg()(którego zaleca się unikać, gdy jest to możliwe, zgodnie ze stroną z dokumentami )

Możesz użyć menu_get_object()funkcji:

$term = menu_get_object('taxonomy_term', 2);
if ($term) {
  // User is on a taxonomy term page
}
Clive
źródło
1
Wydaje mi się, że powyższy kod jest również wykonywany na stronach taksonomii / term / id / edit & feed !! Może być konieczne sprawdzenie trzeciego argumentu?
Anil Sagar
1
@AnilSagar Holy Moly, masz rację: P Naprawdę nie jestem pewien, jaki jest to zaakceptowany sposób, zakładając, że nie zadecydowałem o tym, że jestem arg()mniej czytelny
Clive
Co powiesz na odrobinę && !path_is_admin(current_path())w ifoświadczeniu? Jeszcze tego nie sprawdziłem, ale ścieżki edycji terminów to strony administracyjne, nie :)
Chapabu
1
@Chapabu Powinieneś to znak towarowy;)
Clive
2
Przestroga: włączenie widoków zastępuje moduł ładujący pojęcie taksonomii, powodując menu_get_object ('taxonomy_term', 2); już nie pracować. Patrz: drupal.org/node/1468006 i 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
źródło
5

<?php if (arg(0) == 'taxonomy' && arg(1) == 'term' && arg(2)): ?> powinien załatwić sprawę.

W przypadku wykluczenia edycji / kanału (i ewentualnie innych powiązanych stron) możesz użyć: <?php if (arg(0) == 'taxonomy' && arg(1) == 'term' && arg(2) && !arg(3)): ?>

Madis
źródło
To również zwróci prawdę, taxonomy/term/123/editczego nie jestem pewien OP chce.
Clive
1
Tak, nie powiedział dokładnie, do czego dąży, ale zaktualizowałem swoją odpowiedź, aby rozwiązać ten problem.
Madis