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.
} 

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
}

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
}

?>

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)): ?>


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.