Невозможно переопределить theme_links () в подтеме fusion - PullRequest
0 голосов
/ 01 марта 2011

Я настроил подтему в Fusion и создал файл template.php в своей подтеме. Я добавил следующие переопределения темы, и она отлично работает.

function ThemeName_menu_local_tasks() {
    $output = '';
  if ($primary = menu_primary_local_tasks()) {
    $output .= "<div class=\"tabs primary\">\n";
    $output .= "<ul class=\"tabs primary\">\n" . $primary . "</ul>\n";
    $output .= "</div>\n";
  }
  if ($secondary = menu_secondary_local_tasks()) {
    $output .= "<div class=\"tabs secondary\">\n";
    $output .= "<ul class=\"tabs secondary\">\n" . $secondary . "</ul>\n";
    $output .= "</div>\n";    
  }
  return $output;
}

function ThemeName_filter_tips_more_info () {
    return '';
}

function ThemeName_filter_tips() {
    return '';
}

Однако, когда я пытаюсь переопределить theme_links, он вообще не работает.

function ThemeName_links($links, $attributes = array('class' => 'links')) {
  global $language;
  $output = '';

  if (count($links) > 0) {
    $output = '<div class = "abc"><ul' . drupal_attributes($attributes) . '>';

    $num_links = count($links);
    $i = 1;

    foreach ($links as $key => $link) {
      $class = $key;

      // Add first, last and active classes to the list of links to help out themers.
      if ($i == 1) {
        $class .= ' first';
      }
      if ($i == $num_links) {
        $class .= ' last';
      }
      if (isset($link['href']) && ($link['href'] == $_GET['q'] || ($link['href'] == '<front>' && drupal_is_front_page()))
           && (empty($link['language']) || $link['language']->language == $language->language)) {
        $class .= ' active';
      }
      $output .= '<li' . drupal_attributes(array('class' => $class)) . '>';

      if (isset($link['href'])) {
        // Pass in $link as $options, they share the same keys.
        $output .= l($link['title'], $link['href'], $link);
      }
      else if (!empty($link['title'])) {
        // Some links are actually not links, but we wrap these in <span> for adding title and class attributes
        if (empty($link['html'])) {
          $link['title'] = check_plain($link['title']);
        }
        $span_attributes = '';
        if (isset($link['attributes'])) {
          $span_attributes = drupal_attributes($link['attributes']);
        }
        $output .= '<span' . $span_attributes . '>' . $link['title'] . '</span>';
      }

      $i++;
      $output .= "</li>\n";
    }

    $output .= '</ul></div>';
  }

  return $output;
}

Кстати, я добавил следующее в ThemeName_links () выше для тестирования.

<div class = "abc"> and </div>

Я также очистил Очистить весь кеш, используя Devel.

1 Ответ

0 голосов
/ 01 марта 2011

Все, что вы делаете, правильно (я имею в виду способ, которым вы делаете переопределение тем), и система тем Fusion также работает хорошо. Сначала, когда я пытаюсь использовать тему Fusion, я сталкиваюсь с той же проблемой, что и вы. Но после того, как я прошел систему Fusion и увидел, как Fusion показывает ссылки (включая первичные ссылки, вторичные ссылки), я обнаружил, что внутри файла fusion / fusion_core / page.tpl.php они называют это функция theme ('grid_block', $ primary_links_tree, 'primary-menu') для отображения первичных ссылок. Это функциональная тема, написанная Fusion. Поэтому все, что вам нужно сделать, это просто. Вы можете вызвать функцию ссылок на темы по умолчанию в Drupal: theme ('links', $ primary_links) и переопределить ваш ThemName_links () с этого момента.

Еще одна вещь, которую я сейчас пытаюсь сделать, это переопределить функцию grid_block . Если я найду что-нибудь интересное, я опубликую позже.

...