Проверьте, является ли текущая страница термином таксономии

8

Как я могу проверить, является ли текущая страница страницей термина таксономии, аналогично тому, как это делается с помощью следующего кода, используемого для проверки, является ли текущая страница главной страницей?

if (drupal_is_front_page()) {
  // The current page is the front page.
}
else {
  // It is not the front page.
} 
Даниэль Сакс
источник

Ответы:

13

Просто чтобы предложить решение, которое не использует arg()(которого рекомендуется избегать, где это возможно, согласно странице документов )

Вы можете использовать menu_get_object()функцию:

$term = menu_get_object('taxonomy_term', 2);
if ($term) {
  // User is on a taxonomy term page
}
Клайв
источник
1
Я думаю, что код выше также выполняется на страницах таксономии / term / id / edit & feed !! Возможно, нам нужно проверить третий аргумент?
Анил Сагар
1
@AnilSagar Святая моли, вы правы: P Я действительно не уверен, каков тогда принятый способ сделать это, предполагая, что я не придумал, как arg()быть менее читабельным
Клайв
Как насчет того, чтобы добавить немного && !path_is_admin(current_path())в ifутверждение? Я еще не проверил это, но пути редактирования термина - страницы администратора, нет :)
Chapabu
1
@Chapabu Вы должны торговую марку, что;)
Клайв
2
Предостережение: включение представлений заменяет загрузчик терминов таксономии, вызывая menu_get_object ('taxonomy_term', 2); больше не работать. См .: drupal.org/node/1468006 и api.drupal.org/comment/45018#comment-45018
Ману
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)): ?> должен сделать свое дело.

В случае, если редактирование / подача (и, возможно, некоторые другие связанные страницы) должны быть исключены, вы можете использовать: <?php if (arg(0) == 'taxonomy' && arg(1) == 'term' && arg(2) && !arg(3)): ?>

Мадис
источник
Это также вернет истину, для taxonomy/term/123/editкоторой я не уверен, что ОП хочет.
Клайв
1
Да, он не сказал, к чему именно стремится, но я обновил свой ответ, чтобы устранить эту проблему.
Мадис