Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/04/2011, 17:59
Avatar de zanguanga
zanguanga
Moderadora
 
Fecha de Ingreso: julio-2009
Ubicación: España
Mensajes: 1.686
Antigüedad: 15 años, 4 meses
Puntos: 429
¿Se puede mejorar este código? Ultimo post diferente

Buenas, he visto este magnífico tip, para agregar una clase al primer post: http://www.forosdelweb.com/f118/tips...6/#post3727093 y funciona a la perfección.

Pero yo necesitaba algo más que una clase pues lo que quiero es esto:

1. Primer post:
-Título de mayor tamaño que el resto (para eso la función de arriba perfecta)
-Metatags de fecha y autor
-Foto a tamaño completo
-Contenido partido a mano por el editor (post completo con el quicktag more)
-Categorias, tags y número comentarios
2. Los 3 posts siguientes:
-Miniatura flotando a la izquierda
-Título, después de la miniatura mucho más pequeño que el del primer post
-Metatags de fecha y autor
-Extracto
-Categorias, tags y número comentarios
Para ello, estoy creando un child theme de Twenty Ten (por cierto, para los que no somos programadores es un lío un poco desagradable eso de los loops en trozos, pero bueno, ese es otro tema) y finalmente he conseguido lo que quería de esta forma:


Código:
<?php /* Start the Loop */ ?>

<?php //para mostrar el primer post diferente
	$page = (get_query_var('paged')) ? get_query_var('paged') : 1;
	query_posts("paged=$page"); ?>
 
	<?php $count = 1; // Seteamos count a 1 para la primera entrada ?>
 
	<?php while (have_posts()) : the_post(); ?>

 	<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

		<?php if ((!is_paged()) && ($count == 1)){ // La primera entrada se mostrara completa ?>
 
			<h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>

			<div class="entry-meta">
				<?php twentyten_posted_on(); ?>
			</div><!-- .entry-meta -->

			<div class="entry-summary">
				<?php the_content(); ?>
			</div><!-- .entry-summary -->
 
		<?php } else { // el resto de las entradas se mostraran con miniatura y extracto ?>
 
			<?php if ( has_post_thumbnail() ) { the_post_thumbnail(thumbnail); } ?>

			<h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>

			<div class="entry-meta">
				<?php twentyten_posted_on(); ?>
			</div><!-- .entry-meta -->

			<div class="entry-summary">
				<?php the_excerpt(); ?>
			</div><!-- .entry-summary -->
 
	<?php } $count++; // Final de la funcion ?>
 
 
	<div class="entry-utility">
		<?php if ( count( get_the_category() ) ) : ?>
			<span class="cat-links">
			<?php printf( __( '<span class="%1$s">Posted in</span> %2$s', 'twentyten' ), 'entry-utility-prep entry-utility-prep-cat-links', get_the_category_list( ', ' ) ); ?>
			</span>
			<span class="meta-sep">|</span>
		<?php endif; ?>

		<?php
		$tags_list = get_the_tag_list( '', ', ' );
		if ( $tags_list ):
		?>
			<span class="tag-links">
				<?php printf( __( '<span class="%1$s">Tagged</span> %2$s', 'twentyten' ), 'entry-utility-prep entry-utility-prep-tag-links', $tags_list ); ?>
			</span>
			<span class="meta-sep">|</span>
		<?php endif; ?>

			<span class="comments-link">
				<?php comments_popup_link( __( 'Leave a comment', 'twentyten' ), __( '1 Comment', 'twentyten' ), __( '% Comments', 'twentyten' ) ); ?>
			</span>

			<?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="meta-sep">|</span> <span class="edit-link">', '</span>' ); ?>
	</div><!-- .entry-utility -->
</div><!-- #post-## -->

	<?php comments_template( '', true ); ?>


<?php endwhile; // End the loop. Whew. ?>
En la home funciona, a falta de chequearlo online, pero me pregunto:
1. ¿Hay alguna forma más simple o limpia de conseguir lo mismo?
2. ¿Cómo tendría que ser el código para que sirviera para las categorías, por ejemplo? Si uso este loop en las categorías se muestran los mismos posts que en la home, o sea, todos
__________________
Mi blog personal | Mi G+