Hi Leute!!
Ich brauch mal wieder professionelle Hilfe von euch!
Dank eurer Hilfe habe ich jetzt ein äußerlich schön formattiertes Menü mit einem individuellen Walker, den mir Markus.Kober hier aus dem forum geschrieben hat.
Dieser Walker müsste jetzt aber noch ein wenig getunt werden, damit das Menü wirklich perfekt ist.
Momentan sieht das Menü ungefähr so aus: [COLOR=DeepSkyBlue]home | store | about[/COLOR]
Ich möchte aber, dass es so aussieht: [COLOR=DeepSkyBlue][COLOR=Black]h[/COLOR]ome | [COLOR=Black]s[/COLOR]tore | [COLOR=Black]a[/COLOR]bout[/COLOR]
Dass kann ich selber mit CSS auch in 0,nix erledigen, aber dazu muss er jeweils erste Buchstabe eines Menüpunktes in ein <span> eingehüllt werden.
Hier ist mein aktueller Menü Walker:
class MyWalker extends Walker_Nav_Menu {
var $sep = '';
function start_el(&$output, $item, $depth, $args) {
global $wp_query;
$indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
$class_names = $value = '';
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
$classes[] = 'menu-item-' . $item->ID;
$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args ) );
$class_names = ' class="' . esc_attr( $class_names ) . '"';
$id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args );
$id = strlen( $id ) ? ' id="' . esc_attr( $id ) . '"' : '';
$output .= $indent;
// adds a seperator between the top-level menu items
if( $depth == 0 ) {
$output .= $this->sep;
if( empty( $this->sep ) )
$this->sep = '<li class="seperator"> | </li>';
}
$output .= '<li' . $id . $value . $class_names .'>';
$attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : '';
$attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : '';
$attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) .'"' : '';
$attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : '';
$item_output = $args->before;
$item_output .= '<a'. $attributes .'>';
$item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
$item_output .= '</a>';
$item_output .= $args->after;
$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
}// function end
}// class end
Alles anzeigen
Er unterscheidet sich kaum, vom 'normalen' Walker, fügt halt Trennstriche zwischen die Menüpunkte.
Ich bin mir ziemlich sicher, dass ich die
apply_filters( 'the_title', $item->title, $item->ID )
durch eine andere, selbsgecodete Funktion ersetzten muss, bin dazu aber unfähig, da ich die Funktionsweise von apply_filters() nicht so ganz verstehe. Wenn ich z.B. $item->ID rausnehm, macht die Funktion immernoch das selbe und die Referänz unter
http://codex.wordpress.org/Function_Reference/apply_filters
hilft mir auch nicht weiter.
Kann mir die mal jemand ausführlich auf Deutsch erklären und die Beispielfunktion im speziellen??
Außerdem möchte ich mein Markup, d.h. den Seitenquelltext schöner formatieren. Wenn ich jedoch nach dem Seperator String ein \n oder ein einfüge, erzeugt das keinen Zeilenumbruch im Quelltext, sondern ein paar \n\n\n bzw. hinter dem Menü.
Was mache ich das falsch?? Wie formatiert man den allgemein seinen Quelltext??
Auch Links, die zu anderen Beiträgen oder Blogs führen sind jederzeit wilkommen, solange sie mir bei dem Problem weiterhelfen. Bitte keine Verweise auf Suchfunktionen!!
Vielen Dank schonmal im Vorraus,
B1fr0st