Страница терминов таксономии темы на основе глубины


Есть ли какое-либо решение о том, как разделять страницу терминов таксономии на глубину? Хотя это выполнимо с помощью Views + TVI, мы обычно не разрешаем администратору управлять TVI, но они могут добавлять новые термины и им разрешено изменять условия. Я бы хотел, чтобы каждая глубина имела разную компоновку, но автоматически изменялась в зависимости от ее глубины. Это можно сделать с помощью крючков или как добиться этого в представлениях?

Например:

if ($depth == 0) {
  print $views_0;
}
elseif ($depth == 1) {
  print $views_1;
}
elseif ($depth == 2) {
  print $views_2;
}
else {
  print $views_default;
}

И так далее...

Author: Madelyn Cruz, 2015-11-19

2 answers

Создайте функцию для повторного определения глубины термина

//Gets the depth of the term id
function MYMODULE_term_depth($tid) {
  $parent = db_query("SELECT parent FROM {taxonomy_term_hierarchy} WHERE tid = :tid", array(':tid' => $tid))->fetchField();
  if($parent == 0) {
    return 1;
  }else  {
    return 1+MYMODULE_term_depth($parent);
  }
}

И распечатайте виды на основе глубины

$depth = MYMODULE_term_depth($tid)
if ($depth == 0) {
  print views_embed_view('views_0');
}
elseif ($depth == 1) {
  print views_embed_view('views_1');
}
elseif ($depth == 2) {
  print views_embed_view('views_2');
}
else {
  print views_embed_view('views_default');
}

Передайте имя машины просмотра в views_embed_view

 1
Author: adal, 2015-11-19 13:20:04

Вероятно, самый простой способ - это использовать taxonomy_get_parents_all():

$depth = count(taxonomy_get_parents_all($tid));
 0
Author: Clive, 2015-11-19 11:29:39