我在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清除了Flush所有缓存。
答案 0 :(得分:0)
你所做的一切都是正确的(我指的是你做主题覆盖的方式),而Fusion主题系统也运作良好。首先,当我尝试使用Fusion主题时,我会遇到与您相同的问题。但在我浏览Fusion系统后,看看Fusion如何显示链接(包括主链接,辅助链接),我发现在他们调用的 fusion / fusion_core / page.tpl.php 文件中此功能主题('grid_block',$ primary_links_tree,'primary-menu')以显示主要链接。这是Fusion编写的功能主题。所以你需要做的很简单,你可以调用Drupal的默认主题链接功能:主题('links',$ primary_links)并从那里覆盖你的ThemName_links()。
我现在要做的另一件事是覆盖grid_block函数。如果我发现一些有趣的东西,我会稍后发布。