Cum pot adăuga CSS personalizat doar anumitor widget-uri

19 aug. 2010, 00:53:47
Vizualizări: 1.89K
Voturi: 6

Am o bară laterală dinamică standard folosind register_sidebar și dynamic_sidebar și am nevoie ca ultimul widget din bara laterală (care nu va avea un număr fix de widget-uri) să aibă o clasă distinctivă ('last_widget') adăugată la tag-ul <li> care îl înconjoară. Care este cea mai bună metodă pentru a face acest lucru?

0
Toate răspunsurile la întrebare 3
0

Salut John:

Cred că asta este ceea ce cauți (aș explica codul dar cred că se înțelege de la sine; dă-mi de știre dacă nu):

<?php
add_filter('dynamic_sidebar_params','my_dynamic_sidebar_params');
function my_dynamic_sidebar_params($params) {
    $sidebar_id = $params[0]['id'];
    $sidebar_widgets = wp_get_sidebars_widgets();
    $last_widget_id = end($sidebar_widgets[$sidebar_id]);
    if ($last_widget_id==$params[0]['widget_id'])
        $params[0]['before_widget'] = str_replace(' class="',' class="last_widget ',$params[0]['before_widget']);
    return $params;
}
19 aug. 2010 01:36:52
0

De asemenea, poți utiliza CSS pentru a selecta ultimul widget folosind :last-child (deși IE nu ar fi încântat de această soluție), sau poți folosi jQuery pentru a-l selecta. Dar codul PHP de mai sus este probabil cea mai bună metodă de a realiza acest lucru.

19 aug. 2010 01:48:22
0

Am scris un patch care face asta pentru codul de bază, tichetul asociat este #12615 - Adaugă clase CSS "first" și "last" pentru fiecare Widget în barele laterale (Frontend)

Patch-ul reprezintă o soluție funcțională, există câteva aspecte interne ale widget-urilor care fac ca utilizarea lui end() pe array-ul sidebar să nu funcționeze corect, așa cum sugerează mike cu codul său (Da, ar fi fost prea simplu, nu? :P ).

Anunță-mă dacă patch-ul nu se mai aplică corect. Am rulat acest patch cu succes pe site-uri cu versiunea 2.9.2.

19 aug. 2010 09:23:52