Страница терминов таксономии темы на основе глубины
Есть ли какое-либо решение о том, как разделять страницу терминов таксономии на глубину? Хотя это выполнимо с помощью 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;
}
И так далее...
2
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