Создание удобного меню в Drupal на основе списка словаря таксономии

Очень часто необходимо иметь на сайте меню (или несколько меню), которые были бы составлены на основе списка словарей таксономии и сохраняли вложенность словаря. И хорошо бы, чтобы они автоматически обновлялись при добавлении/удалении термина в словаре и показывали количество материала с использованием конкретного термина.

Для создания подобного меню можно применить следующий код на php, который нужно просто добавить в новый блок, не забыв установить в нем формат вывода «php». Единственной настройкой получившегося меню будет указание словаря, на основе которого это меню будет составлено.


<?php
$vid = 3; // Номер словаря
$pole = array();
$items = array();
$terms = taxonomy_get_tree($vid);
//var_dump($terms);

foreach ( $terms as $term ) {
$count = db_result(db_query(«SELECT COUNT(nid) FROM {term_node} WHERE tid = %d», $term->tid));
$pole[]=Array ((($count) ? l($term->name, «taxonomy/term/$term->tid»).» («.$count.»)» : $term->name), $term->depth, $count, $term->tid);
}
$depth =-1;
foreach ($pole as $list) {
//$depth- глубина предыдущего уровня
//$list[1] — глубина текущего элемента
if ($list[1] == $depth) {
echo »

«;
next;
}
while ($list[1] != $depth) {
if ($list[1] > $depth) {
$depth++;
echo «\n

    «;
    next;
    }
    if ($list[1] < $depth) {
    $depth—;
    echo «\n

    \n

«;
}
}

echo «\n

  • $list[0]»;
    $depth=$list[1];
    }
  • //Закрываем все открытые теги до нулевого уровня:
    $depth=0;
    while ($list[1] != $depth) {
    if ($list[1] > $depth) {
    $depth++;
    echo »

    \n

    «;
    }
    }
    ?>

    Ниже показан пример реализации меню с использованием этого кода

    Очень часто необходимо иметь на сайте меню (или несколько меню), которые были бы составлены на основе списка словарей таксономии и сохраняли вложенность словаря. И хорошо бы, чтобы они автоматически обновлялись при добавлении/удалении термина в словаре и показывали количество материала с использованием конкретного термина.

    Для создания подобного меню можно применить следующий код на php, который нужно просто добавить в новый блок, не забыв установить в нем формат вывода «php». Единственной настройкой получившегося меню будет указание словаря, на основе которого это меню будет составлено.

    <?php
    $vid = 3; // Номер словаря
    $pole = array();
    $items = array();
    $terms = taxonomy_get_tree($vid);
    //var_dump($terms);

    foreach ( $terms as $term ) {
    $count = db_result(db_query(«SELECT COUNT(nid) FROM {term_node} WHERE tid = %d», $term->tid));
    $pole[]=Array ((($count) ? l($term->name, «taxonomy/term/$term->tid»).» («.$count.»)» : $term->name), $term->depth, $count, $term->tid);
    }
    $depth =-1;
    foreach ($pole as $list) {
    //$depth- глубина предыдущего уровня
    //$list[1] — глубина текущего элемента
    if ($list[1] == $depth) {
    echo «

    «;
    next;
    }
    while ($list[1] != $depth) {
    if ($list[1] > $depth) {
    $depth++;
    echo «\n

    • «;
      next;
      }
      if ($list[1] < $depth) {
      $depth—;
      echo «\n

      \n

     

    «;
    }
    }

    echo «\n

    • $list[0]»;
      $depth=$list[1];
      }

     

    //Закрываем все открытые теги до нулевого уровня:
    $depth=0;
    while ($list[1] != $depth) {
    if ($list[1] > $depth) {
    $depth++;
    echo «

    \n

    «;
    }
    }
    ?>

    Ниже показан пример реализации меню с использованием этого кода

    Яндекс.Метрика