Вы здесь

Меню с иерархией и изображениями на основе таксономии

1

Приветствую.
Сейчас есть меню, сделанное с помощью Taxonomy Menu.
Очень нужно сделать меню вида "иконка + название термина" с иерархией терминов.
При том иконка должна быть полем термина (сейчас просто по CSS классу подцепляется background-image)
Вроде задача простая, на первый взгляд, но не выходит. Пробовал такие варианты:
1. Views — есть список терминов и иконки, но не выходит сделать иерархию
2. Taxonomy Menu - список и иерархия, но без иконки
3. Сниппеты вывода терминов - список есть, иконка есть, иерархии нет.

Может кто сталкивался с вопросом, как собрать такое меню?
Меню

Версия Drupal: 
7.x
Категория: 
Menu APITaxonomy APITheming
Связанные проекты: 
Taxonomy menu
Вопрос задан 12.05.2015 - 14:30

Ответы

2

Делал так (для поля field_category_icon и меню menu-categories):

/**
 * Return all categories icons.
 */
function themename_get_category_icons() {
  static $icons;

  if ($icons === NULL) {
    $query = db_select('field_data_field_category_icon', 'ci');
    $query->fields('ci', array('entity_id'));
    $query->fields('fm', array('uri'));
    $query->innerJoin('file_managed', 'fm', 'ci.field_category_icon_fid = fm.fid');
    $icons = $query->execute()->fetchAllKeyed();
  }

  return $icons;
}

/**
 * Preprocess function for theme_menu_link().
 */
function themename_preprocess_menu_link(&$vars) {
  $element = &$vars['element'];
  if ($element['#original_link']['menu_name'] == 'menu-categories') {
    $category_images = themename_get_category_icons();
    $category_tid = arg(2, $element['#href']);
    if (isset($category_images[$category_tid])) {
      $element['#attributes']['style'] = 'background-image:url(' . file_create_url($category_images[$category_tid]) . ');';
    }
  }
}
Ответ дан 12.05.2015 - 16:15
Аватар пользователя xandeadx
xandeadx
1542

Отлично, все получилось. Спасибо.

Комментарий оставлен 12.05.2015 - 16:29
0
  1. Views — есть список терминов и иконки, но не выходит сделать иерархию

https://www.drupal.org/project/views_tree (http://xandeadx.ru/blog/drupal/646)

Ответ дан 12.05.2015 - 14:42
Аватар пользователя drupby
drupby
456

Этот модуль тоже пробовал, забыл описать.
Он выводит просто дерево терминов, не давая классов активным пунктам, никаких возможностей для сворачивания-разворачивания терминов второго уровня...

Комментарий оставлен 12.05.2015 - 15:05

Пробовал патч отсюда https://www.drupal.org/node/2455257
Активный пункт получил класс active, но active-trail'a нету, а он нужен для разворачивания пунктов

Комментарий оставлен 12.05.2015 - 15:21

Тем, что категории часто добавляются/изменяются, а назначение иконки меню приходится производить неудобным образом - загрузить файл к теме, прописать CSS, указать верный класс в настройках taxonomy Menu
А нужно дать такую возможность манагеру - создал термин, загрузил картинку, полученную от дизайнера и всё.

Помимо того, Taxonomy Menu при перестроении списка скидывает классы пунктов меню, соответственно иконки пропадают (эту проблему я закрыл каким-то патчем, но вот патчить модули мне совсем не нравится).

Комментарий оставлен 12.05.2015 - 16:16