Trable s Widgety

Zvolené téma obsahuje celkem 7 odpovědí. Do diskuze (3 účastníci) se naposledy zapojil uživatel  sjiamnocna a poslední změna je stará 10 let, 9 měsíců.

Aktuálně je na stránce zobrazeno 8 příspěvků - 1. až 8. (z celkem 8)
  • Autor
    Příspěvky
  • #3503

    sjiamnocna
    Participant
    Web

    Ahoj. Už po delší době promýšlení, jsem se pustil do vývoje šablony (a nějakých vychytávek) pro náš pěvecký sbor.

    1. po “zWordpressnění” šablony (zatím jen soubory index, style a functions) mi WordPress odstranil styl widgetu style=”margin-right:2.5%;” , který jsem při registraci widget plochy zadával do parametru before_widget. Máte s tímto někdo zkušenosti? Pro výsledný vzhled je to téměř nezbytné…

    2. Snažil jsem se udělat widget plochy tak, aby se jedna používala pokud je uživatel přihlášen, a druhá pokud není. Vytvořil jsem tedy dva widgety pro každou stranu, a dělil je podle podmínek dynamic_sidebar() a is_user_logged_in(). Nevím proč, když jsem byl přihlášen, zobrazovalo to stejný widget, jako když jsem byl odhlášen.

    3. Zadal jsem celkem 4 widget plochy, z nich se mi v Adminovi zobrazují jen tři. Kód je takový:

    add_action('widgets_init','ks_theme_widgetize');
    function ks_theme_widgetize(){
    register_sidebar(array(
    'name' => __('Left sidebar','kstheme'),
    'id' => 'leftsbnlog',
    'description' => __('Left sidebar panel for not logged in visitors','kstheme'),
    'class' => '',
    'before_widget' => '<div id="%1$s" class="sbpanel visitor %2$s" style="margin-right:2.5%;">',
    'after_widget' => '</div>',
    'before_title' => '<h4>',
    'after_title' => '</h4>'));
    register_sidebar(array(
    'name' => __('Left sidebar','kstheme'),
    'id' => 'leftsblog',
    'description' => __('Left sidebar panel for members','kstheme'),
    'class' => '',
    'before_widget' => '<div id="%1$s" class="sbpanel member %2$s" style="margin-right:2.5%;">',
    'after_widget' => '</div>',
    'before_title' => '<h4>',
    'after_title' => '</h4>'));
    register_sidebar(array(
    'name' => __('Right sidebar','kstheme'),
    'id' => 'rightsbnlog',
    'description' => __('Right sidebar panel for not logged in visitor','kstheme'),
    'class' => '',
    'before_widget' => '<div id="%1$s" class="sbpanel visitor %2$s" style="margin-left:2.5%;">',
    'after_widget' => '</div>',
    'before_title' => '<h4>',
    'after_title' => '</h4>'));
    register_sidebar(array(
    'name' => __('Right sidebar','kstheme'),
    'id' => 'rightsbnlog',
    'description' => __('Right sidebar panel for logged in visitor','kstheme'),
    'class' => '',
    'before_widget' => '<div id="%1$s" class="sbpanel member %2$s" style="margin-left:2.5%;">',
    'after_widget' => '</div>',
    'before_title' => '<h4>',
    'after_title' => '</h4>'));
    }

    Celé je to v provozu na zkušební doméně http://www.ksgtest.g6.cz/

    #15959

    Musilda
    Participant
    Web

    Ten <div id=”%1$s” class=”sbpanel visitor %2$s” style=”margin-left:2.5%;”> inline styl vyhoď a ostyluj tu třídu.

    A jsi přihlášený jako admin, když vidíš ten původní widget? Tak jsem s tím měl problém, ale když jsem se přihlásil jako návštěvník, tak to normálně fungovalo.

    #15960

    Lukenzi
    Participant

    Asi bych raději použil funkci register_sidebars místo téhle hromady kódu.

    Vypadalo by to nějak takto:

    <?php

    add_action('widgets_init','ks_theme_widgetize');

    function ks_theme_widgetize(){

    $number = 4; // počet sidebarů

    $args = array(

    'name' => sprintf(__('Sidebar %d'), $i ),

    'id' => "sidebar-$i",

    'before_widget' => '<div id="%1$s" class="sbpanel visitor %2$s">',

    'after_widget' => '</div>',

    'before_title' => '<h4>',

    'after_title' => '</h4>',

    );

    register_sidebars( $number, $args );

    }

    ?>

    A určitě bych otestoval co funkce is_user_logged_in() vrací pokud jsi přihlášený (true) a pokud ses odhlásil (false), zas tak 100% nefunguje, proto se kontrola přihlášení občas řeší oklikou tedy kontrolou existence přihlašovací cookies, je to sice složitější ale vždy funkční.

    #15961

    sjiamnocna
    Participant
    Web

    Problém ten, že inline tam být musí – mám na obou stranách stejnou třídu, jen tam potřebuju mít margin na jiné straně, a zbytečně kopírovat dvě stejné třídy je podle mně moc blbé na to, že rozdíl je jen v jednom marginu… Potřebuju něco jak to tam dostat EDIT: tak to asi vyřeším přidáním další třídy marginleft a marginright a zbytek nechám tak. Díky :)

    Lukenzi: Je možné, aby měly tímto způsobem sidebary vlastní název a popis?

    #15962

    sjiamnocna
    Participant
    Web

    Přidal jsem toto do contentu:

    <?php if(is_user_logged_in()){
    echo "baf";
    } else {echo"lek";}
    ?>

    a normálně to bafá… ale výměna SB nefunguje

    #15963

    Lukenzi
    Participant

    Název mají každý jiný stejně tak jako ID, místo proměnné $i se dosadí číslo. Podle toho čísla by se dalo porovnávat, který to je sidebar a pak doplňovat nějaký konkrétní popis nebo název. Nebo by se dalo každému přiřadit prázdný popis a jinou CSS třídu (widget-1, widget-2 atd) a popis pak doplnit přes CSS (ale nezkoušel jsem). Ale přehlednější určitě bude pokud to doplníš každému sidebaru zvlášť, je pravda že třeba za dva roky při nějakých úpravách bys nemusel pochopit proč to je tak a né jinak :))

    Já jen, že to je taky možnost. Používá se to hlavně třeba v patičce, kde je fuk jak se sidebary jmenují nebo jaký mají popis.

    K bafání…a cache prohlížeče nebo cache jako plugin?

    #15964

    Lukenzi
    Participant

    Jinak můžeš použít plugin Widget Logic ten ti umožňuje jednoduchou podmínkou určovat který widget se má kdy zobrazit. Možná ti to pomůže :)

    #15965

    sjiamnocna
    Participant
    Web

    Má to být web pro uživatele, kteří zřejmě ani zcela nepochopí WP natožpak aby dosazovali widgety do areí 1,2,3 atp. Chtěl bych, aby to bylo user-friendly. Bohužel nejsem také moc zaběhlý, a asi mi budeš muset vysvětlit, jak přidám takto vytvořeným widget plochám srozumitelný popis :)

    Díky za plugin. Já jsem pořád hledal něco jako private widget atp. a nic nevyhovovalo – toto vypadá dobře.

    _______________

    Nappíšu jak to funguje :D

    _______________

    Tak jsem našel ještě více User-friendly plugin Restrict Widgets, taktéž pod tagem widget logic – je to výborně funkční (zatím), a pochopí to snad každý, kdo umí kapku anglicky. Zkoušel jsem také Widget Logic visual, ale ten úplně zablokuje správu widgetů – a jak jsem se později dočetl, tak nejsem sám komu se to stalo.

Aktuálně je na stránce zobrazeno 8 příspěvků - 1. až 8. (z celkem 8)

Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.

WordPress – novinky, návody a zajímavosti