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


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' && arg(2)): ?> должен сделать свое дело.

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


Это также вернет истину, для taxonomy/term/123/editкоторой я не уверен, что ОП хочет.
Клайв

1
Да, он не сказал, к чему именно стремится, но я обновил свой ответ, чтобы устранить эту проблему.
Мадис
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.