Afișează miniatură doar pentru primul post din buclă?

25 mar. 2011, 09:46:52
Vizualizări: 17.3K
Voturi: 3

Care este cea mai bună metodă de a folosi <?php the_post_thumbnail();?> în bucla mea DAR să afișez o miniatură doar pentru PRIMUL post? Adică, doar primul post din buclă să aibă imaginea afișată?

Iată un exemplu de buclă care afișează imaginea pentru TOATE postările:

<!-- Începe bucla. -->
 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
 <!-- Afișează titlul ca link către permalink-ul postării. -->
 <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Link permanent către <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<!-- Afișează miniatura imaginii postării -->
<?php the_post_thumbnail();?>
 <!-- Afișează data și un link către alte postări ale aceluiași autor. -->
 <small><?php the_time('F jS, Y') ?> de <?php the_author_posts_link() ?></small>
 <!-- Afișează conținutul postării într-un div. -->
 <div class="entry">
   <?php the_content(); ?>
 </div>

Mulțumesc!

0
Toate răspunsurile la întrebare 4
1
13
  • adăugați o variabilă înainte de buclă (înainte de while), de exemplu $first = true;
  • adăugați o verificare în interiorul buclei pentru această variabilă
  • după utilizare, modificați flag-ul

Cod:

<!-- Începeți Bucla. -->
 <?php $first = true; ?>
 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
 <!-- Afișați Titlul ca link către legătura permanentă a Postării. -->
 <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Legătură Permanentă către <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<!-- Afișați imaginea miniatură a postării -->
    <?php if ( $first ): ?>
      <?php the_post_thumbnail();?>
      <?php $first = false; ?>
    <?php endif; ?>
 <!-- Afișați data și un link către alte postări ale acestui autor. -->
 <small><?php the_time('F jS, Y') ?> de <?php the_author_posts_link() ?></small>
 <!-- Afișați Conținutul Postării într-o cutie div. -->
 <div class="entry">
   <?php the_content(); ?>
 </div>
25 mar. 2011 10:05:53
Comentarii

Am ales această soluție deoarece am considerat-o cea mai elegantă și ușor de înțeles. Vă mulțumesc pentru răspuns.

OneFishTaco OneFishTaco
25 mar. 2011 21:33:55
2

Acest cod în template-ul tău va afișa thumbnail-ul postării doar pentru prima postare:

<?php 
    ! isset ( $loop_first ) and the_post_thumbnail();
    $loop_first = 1;
?>
25 mar. 2011 10:00:20
Comentarii

Mulțumesc pentru răspuns. Nu ar trebui să setezi $loop_first=0 sau ceva similar după aceea?

OneFishTaco OneFishTaco
25 mar. 2011 21:34:50

@Pwn, Funcția isset() te scutește de necesitatea de a crea o variabilă în prealabil.

fuxia fuxia
26 mar. 2011 00:58:13
1

Aceasta este soluția pe care o folosesc în proiectele mele și funcționează bine pentru mine. Am modificat codul pe care l-ai furnizat pentru a se potrivi. Pur și simplu adaugă-l și va afișa thumbnail-ul postării doar pentru prima postare.

<!-- Începe bucla. -->
 <?php $i = 1 ; ?>
 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
 <!-- Afișează titlul ca link către permalink-ul postării. -->
 <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Legătură permanentă către <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<?php if ($i == 1): ?>
<!-- Afișează thumbnail-ul imaginii postării -->
<?php the_post_thumbnail();?>
<?php endif; ?>
 <!-- Afișează data și un link către alte postări ale aceluiași autor. -->
 <small><?php the_time('F jS, Y') ?> de <?php the_author_posts_link() ?></small>
 <!-- Afișează conținutul postării într-un div. -->
 <div class="entry">
   <?php the_content(); ?>
 </div>
<?php $i++; endwhile; endif; ?>
25 mar. 2011 13:00:41
Comentarii

Da, asta pare să funcționeze bine și așa. Am ales soluția de mai sus pentru că am considerat-o mai simplă de utilizat. Mulțumesc pentru timpul acordat, succes!

OneFishTaco OneFishTaco
25 mar. 2011 21:37:50
0

Doar verifică valoarea current_post

global $wp_query; // obține interogarea globală - funcționează și în interogări personalizate
if(0 == $wp_query->current_post){ /**este primul articol**/ }
20 oct. 2017 22:31:37