2011-01-11 2 views
1

In Wordpress suche ich nach einer Möglichkeit, eine "letzte" und eine "erste" Klasse hinzuzufügen, um Elemente in Wordpress-Widgets aufzulisten. Der HTML-Code könnte wie folgt aussehen:Eine erste und letzte Klasse zu Wordpress 'Widget Inhalt hinzufügen

<div class="widget-area"> 
<ul > 
    <li class="widget_recent_comments"> 
     <h3 class="widget-title">Recent comments</h3> 
     <ul id="recentcomments"> 
      <li class="recentcomments">Comment 1</li> 
      <li class="recentcomments">Comment 2</li> 
      <li class="recentcomments">Comment 3</li> 
      <li class="recentcomments">Comment 4</li> 
     </ul> 
    </li> 
    <li class="widget_my_links"> 
     <h3 class="widget-title">My links</h3> 
     <ul id="my-links"> 
      <li class="item">Link 1</li> 
      <li class="item">Link 2</li> 
      <li class="item">Link 3</li> 
      <li class="item">Link 4</li> 
      <li class="item">Link 5</li> 
     </ul> 
    </li> 
</ul></div> 

In diesem Beispiel oben i mit „1 Kommentar“ zu dem li hinzugefügt ersten/letzten Klassen haben möge, „Kommentar 4“, „Link-1“ und „Link 5 ".

Gibt es dafür einen einfachen Workaround? (Ich möchte dies nicht mit Javascript tun)

Vielen Dank.

+0

Suchen Sie nach Hooks in den WordPress-Widget Ausgabemethoden. Ich bin sicher, dass es am Ende mindestens eins geben sollte, bevor es alles ausspuckt. Angesichts Ihrer Anforderungen ist es die einzige Option. Ein wirklich hacky Weg ist, Ausgabepuffer zu verwenden, um die Ausgabe zu fangen und neu zu verarbeiten. Aber bei jeder Lösung müssen Sie sich in die Basis-Widget-Klasse einklinken, da Sie sie alle aktualisieren möchten. Ich empfehle die JavaScript-Lösung, es ist buchstäblich eine Zeile von jQuery, und es wird auch nicht langsam sein, da es eine einfache Traversal-und Attribut-Operation ist. – hlfcoding

Antwort

0

Ich vermute, diese Listen werden in einer Schleife generiert. Sie können also eine Variable erstellen, bevor Sie in die Schleife wechseln, und ihren Wert auf 1 setzen ($ i = 1). Als am Ende der Schleife, fügen Sie eins nach oben ($ i ++). Jetzt, wo Sie die erste/letzte Klasse angezeigt werden sollen, können Sie

<?php if($i == 1): 
    echo ' first'; 
elseif($i == $number_of_items) 
    echo 'last'; 
endif;  
?> 

Bei $ i == $ NUMBER_OF_ITEMS tun, können Sie den max mit dem aktuellen vergleichen, so dass Sie wissen, dass Sie die letzten, wenn die Aussage ist wahr.

Hoffe das beantwortet Ihre Frage.

+0

Die eigentliche Schleife (oder "die Schleife", wie sie in Wordpress aufgerufen wird) befindet sich im WordPress-Code, also kann ich das nicht ändern. Ich dachte mehr darüber nach, eine Art Filter hinzuzufügen, aber ich hoffte, dass es eine einfachere Lösung gab. – user571188

+0

Nein "die Schleife" ist die Datei, die über Posts loopt und sie auf die eine oder andere Weise anzeigt. Die Widgets sind einzelne Plugins oder Funktionen, die überschrieben werden können. Verwenden Sie die Standardvorlage von Wordpress? Denn diese Listen werden wahrscheinlich in der sidebar.php generiert, oder es wird ein Aufruf einer Funktion in sidebar.php gemacht. Es ist in Ordnung, sidebar.php zu bearbeiten. Wenn eine Funktion aufgerufen wird, können Sie diese Funktion wahrscheinlich in functions.php überschreiben oder die Funktion in functions.php kopieren, ändern und umbenennen und stattdessen diese Funktion aufrufen, –

+0

Nein @Jasper, WordPress generiert diese Arten von Listen w/o jede Zugänglichkeit zu seiner Schleife auf Seiten des Benutzers in der Weise, die Sie meinen. – JakeParis

0

Nun, der erste Punkt ist einfach, benutzen Sie einfach

ul#my-list li:first-child { 
    /* special styles */ 
} 

Es ist nicht eine Klasse hinzufügen, aber Sie können es immer noch Stil. Es gibt keine ähnliche CSS-Regel für :last-child leider

+0

Wahr. Problem ist, dass ich IE6-Unterstützung brauche, also sieht es so aus, als würde ich für das: first-child gehen und einen Javascript-Hack speziell für IE6 machen. Danke für deinen Beitrag. – user571188