stylování výpisu článků ternárním operátorem

Úvodní stránka Fórum podpory WordPressu Čeština pro WordPress stylování výpisu článků ternárním operátorem

Štítky: 

Zvolené téma obsahuje celkem 6 odpovědí. Do diskuze (2 účastníci) se naposledy zapojil uživatel  martin a poslední změna je stará 12 let, 2 měsíce.

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

    martin
    Participant

    Ahoj, prosím o radu, používám přepracovanou šablonu tweny eleven a pokouším se stylovat výpis článků v kategorii (vlastně všude). Zkoušel jsem nacpat ternární op. do content.php, index.php ale nechce nikde fungovat. Přijde mi to, jako když php zapomene poslední stav podmínky.

    potřebuju se dopracovat funkčního <?php $i+=1; echo’ class=”‘.($i % 2 == 0 ? “even” : “odd”).'”‘;?>

    #10274

    admin
    Keymaster
    Web

    V čem je konkrétně problém? Zkuste nám ten kód zasadit do nějaké souvislosti… Nějaká proměnná ztrácí svou hodnotu? Ternární operátor je vlastně jen stručně zapsaná podmínka…

    #10275

    martin
    Participant

    když proženu loopem content.php tak se mi zobrazuje pouze class=”odd” u <article> viz hned první řádek kodu – buď tam mám chybu a nebo jsem nepochopil jak funguje loop, ale myslel jsem že je to jako while…

    <!
    
    content.php
    >
    <article id="post-<?php the_ID();?>" <?php $i+=1; echo' class="'.($i % 2 == 0 ? "even" : "odd").'"';?>>
    <div class="article-header">
    <?php if ( is_sticky() ) : ?>
    <hgroup><h3 class="sticky"><?php _e( 'Featured', 'twentyeleven' ); ?></h3>
    <h2 class="entry-title"><a href="<?php the_permalink(); ?>">" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
    </hgroup>
    <?php else : ?>
    <h2 class="entry-title"><a href="<?php the_permalink(); ?>">" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
    <strong class="heading"><? echo get_post_meta($post->ID, "podnadpis", true); ?>
    ...

    Aktualizoval admin: Upraveno zobrazení zdrojového kódu. Z nějakého důvodu zlobí HTML code a je třeba využívat obrácené apostrofy.

    #10276

    admin
    Keymaster
    Web

    Ano, loop je klasická smyčka, ale nikde nevidím, kde je definována původní hodnota proměnné $i, se kterou zde pracujete?

    Podobné úpravy se také nezapisují přímo do šablony, ale využívá se filtr pro úpravu tříd zobrazovaného příspěvku (viz manuál). A zejména pokud jde o výchozí šablonu, která bývá aktualizována a o všechny úpravy tak můžete přijít…

    #10277

    martin
    Participant

    v index.php mám následující

    <?php while ( have_posts() ) : the_post();  if (isset($i)) $i+=1; else $i="1";  ?>

    <?php get_template_part( 'content', get_post_format() ); ?>

    <?php endwhile; ?>

    děkuji za odkaz, ale tím bych vyřešil jen jeden příspěvek, nebo se pletu?

    já bych potřeboval napřeskáčku obarvit pozadí excerptů ve výpise, k tomu mi přijde lepší sudý/lichý

    a vlastně jen sudý, bude tak míň kodu…

    jinak tu šablonu mám vlastní, jen jsem vyšel z “2011”

    #10278

    admin
    Keymaster
    Web

    Nikoli, pomocí filtru post_class to vyřešíte elegantně bez většího zásahu do šablony. Kód vložíte do souboru functions.php nebo přímo vytvoříte samostatný plugin.

    Našel jsem dvě podobná řešení, která byste mohl použít. První globalizuje proměnnou a nastaví ji hodnotu “odd” a po každém průchodu pak testuje, zda je “odd” a poté ji nastaví “even”. Druhou možností (pod názvem “Custom Post Class”) je pak také testování dělitelnosti číslem 2, stejně jako to používáte v uvedeném příkladu.

    Proč nefunguje vlastní řešení přesně nevím (nezkoušel jsem to), ale myslím, že by mohl být problém právě s předáváním proměnné mezi soubory index.php a content.php, kde se hodnota patrně ztratí. Budete to jinak muset řešit pomocí nějaké funkce, případně proměnnou nastavit jako globální.

    Mimochodem, pro zájemce (a na vysvětlenou) dodávám odkaz na článek o ternárních operátorech a upozorním na nutnost jejich správného využití, aby nedocházelo ke zbytečnému zpomalování.

    #10279

    martin
    Participant

    díky, mrknu na to.

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

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

WordPress – novinky, návody a zajímavosti