Функция препроцессинга темы Drupal - первичные ссылки - PullRequest
4 голосов
/ 25 марта 2010

Я недавно написал функцию темы, чтобы добавить класс к моим основным ссылкам, который прекрасно работает. Затем я написал несколько классов CSS для стилизации этих ссылок с пользовательскими фоновыми изображениями. Отлично сработало. Теперь возникает проблема, текст ссылки для основных ссылок по-прежнему отображается. Обычно это не проблема, так как я бы просто обернул объект в свой класс «hide». Например:

<span class="hide"><a href="#">Link Text</a></span>

Итак, мой вопрос: как я могу пройти по основным ссылкам и обернуть текст без <span>, как в моем примере? Вот моя функция темы, которую я использовал для добавления своих классов.

function zkc_preprocess_page(&$vars, $hook) {

// Make a shortcut for the primary links variables
  $primary_links = $vars['primary_links'];
// Loop thru the menu, adding a new class for CSS selectors
    $i = 1;

    foreach ($primary_links as $link => $attributes){
        // Append the new class to existing classes for each menu item
        $class = $attributes['attributes']['class'] . " item-$i";
        // Add revised classes back to the primary links temp variable
        $primary_links[$link]['$attributes']['class'] = $class;
        $i++;
        } // end the foreach loop

// reset the variable to contain the new markup
$vars['primary_links'] = $primary_links;

}

Ответы [ 4 ]

2 голосов
/ 25 марта 2010

Если вам нужно только скрыть текст ссылки, почему бы вам просто не использовать что-то вроде text-indent: -9999px;?

2 голосов
/ 25 марта 2010

Является ли JQuery вариант?

Попробуйте что-то вроде этого:

$(document).ready(function(){
  $('#primary li a')
  .wrapInner('<span class="hide">' + '</span>');
});

EDIT:

Или, если вы хотите перейти на Drupal, включите этого парня в цикл foreach:

$link['title'] = '<span class="hide">' . check_plain($link['title']) . '</span>';

1 голос
/ 26 марта 2010

Правильные методы для изменения вывода ссылок меню могут быть выполнены на уровне тем. Вы были на правильном пути с использованием хука предварительной обработки, но есть кое-что еще.

Обратитесь к этому для получения дополнительной информации:

http://drupal.org/node/352924#comment-1189890

http://api.drupal.org/api/function/theme_links/6

0 голосов
/ 26 марта 2010

Опечатка?

$primary_links[$link]['$attributes']['class'] = $class;

Следует читать;

$primary_links[$link]['attributes']['class'] = $class;

...