Ссылки меню стилей меню в Drupal 7 - PullRequest
0 голосов
/ 09 марта 2012

Я пытаюсь стилизовать блок в Drupal 7, и мне очень трудно разобраться!

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

Само оформление должно быть простым, но я действительно изо всех сил пытаюсь найти заголовок темы / имя файла шаблона, который я должен использовать для стилизации.

Я пытался подключиться к theme_menu_tree и theme_menu_link, но они слишком много мест, и я не вижу, что я стилизую. Я пробовал menu-tree--menu-block--main-menu.tpl.php, но переменные не похожи на то, что мне нужно.

Я думаю, что мне нужно стилизовать переменную $content в block.tpl.php, но я не могу понять, как это сделать для конкретного блока. Куда мне подключиться, если я хочу оформить пункты меню, когда отображается блок (тип блока) (в нижнем колонтитуле)?

Ответы [ 3 ]

2 голосов
/ 13 июня 2013

У меня была очень похожая проблема, когда я пытался понять, как правильно назвать мои шаблоны и хуки.Поиск в Google не помог (слишком много шума), но в конце концов я попробовал документацию для модуля меню *1001* на drupal.org, и это привело меня в правильном направлении ...

Шаблон:menu-block-wrapper--main-menu.tpl.php

<nav role="navigation" id="siteNavigation">
<?php echo render($content); ?>
</nav>

Крючки: THEMENAME_menu_tree__menu_block__MENUNAME() и THEMENAME_menu_link__menu_block__MENUNAME():

function THEME_menu_tree__menu_block__main_menu($vars) {
    return '<ul class="my-custom-menu-wrapper">' . $vars['tree'] . '</ul>';
}

function THEME_menu_link__menu_block__main_menu($data) {

    $el = $data['element'];

    // ... render any classes or other attributes that need to go in this <li> 
    $attr = drupal_attributes($el['#attributes']);

    // ... render the menu link
    $link = l($el['#title'], $el['#href'], $el['#localized_options']);

    // ... and render any submenus
    $sub_menu = drupal_render($el['#below']);

    return sprintf("\n<li %s>%s %s</li>", $attr, $link, $sub_menu);
}
2 голосов
/ 09 марта 2012

Я думаю, что самое простое (не обязательно лучшее) место для этого в hook_block_view_alter()

function MYMODULE_block_view_alter(&$data, $block) {
 if ($block->module == 'menu_block') {
    // Extract the links from the available data
    $links = element_children($data['content']['#content']);
    $content = '';

    // Loop through the links and build up the required output.
    foreach ($links as $link) {
      $content .= '<div class="something">' . l($link['#title'], $link['#href']) . '</div>';
    }

    // Assign the new output to the block content...done :)
    $data['content'] = $content; 
  }
}

Модуль Devel и его удобная функция dpm() являются вашим лучшим другом здесь ... они позволят вам изучить любую переменную PHP в хорошо структурированном формате в области стандартных сообщений. Если у вас его еще нет, я бы посоветовал сделать это, это абсолютно необходимо для разработки на Drupal.

Не забудьте очистить кеш Drupal после того, как вы внедрили этот хук, иначе система его не захватит.

0 голосов
/ 04 марта 2015

С темой печати вы можете поместить стили CSS в

...