4 Stimmen

Drupal-Theme-Vorverarbeitungsfunktion - primäre Links

Ich habe vor kurzem eine Themenfunktion geschrieben, um eine Klasse zu meinen primären Links hinzuzufügen, die hervorragend funktioniert. Ich habe dann einige CSS-Klassen geschrieben, um diese Links mit benutzerdefinierten Hintergrundbildern zu gestalten. Das klappte hervorragend. Jetzt kommt das Problem, dass der Linktext für die primären Links immer noch angezeigt wird. Normalerweise ist dies kein Problem, da ich einfach die in einem mit einem benutzerdefinierten "hide" Klasse wickeln würde. Zum Beispiel:

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

Also meine Frage ist, wie kann ich Schleife durch die primären Links und wrap den Text w / a <span> wie mein Beispiel? Hier ist mein Thema Funktion, die ich verwendet, um meine Klassen hinzufügen.

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;

}

2voto

Erik Ahlswede Punkte 2037

Ist jQuery eine Option?

Versuchen Sie so etwas:

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

EDITAR:

Oder wenn Sie Drupal verwenden möchten, können Sie diesen Typ in Ihre foreach-Schleife einbauen:

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

2voto

googletorp Punkte 32775

Wenn Sie nur den Linktext ausblenden wollen, warum verwenden Sie nicht einfach etwas wie text-indent: -9999px; ?

1voto

Kevin Punkte 12936

Die korrekten Methoden zur Änderung der Ausgabe der Menülinks können auf der Thematisierungsebene vorgenommen werden. Mit der Verwendung des Vorverarbeitungshakens waren Sie auf dem richtigen Weg, aber es gehört noch ein bisschen mehr dazu.

Hier finden Sie weitere Informationen:

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

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

0voto

abitofcode Punkte 1

Tippfehler?

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

Sollte lauten;

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X