Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

¿Cómo mostrar dos columnas de entradas en WordPress‏‏?

Estas en el tema de ¿Cómo mostrar dos columnas de entradas en WordPress‏‏? en el foro de WordPress en Foros del Web. Hola! En primer lugar y antes de nada quisiera presentarme, soy un estudiante de informática y como proyecto fin de carrera estoy haciendo un periódico ...
  #1 (permalink)  
Antiguo 28/08/2012, 10:11
 
Fecha de Ingreso: agosto-2012
Mensajes: 14
Antigüedad: 11 años, 7 meses
Puntos: 0
¿Cómo mostrar dos columnas de entradas en WordPress‏‏?

Hola!

En primer lugar y antes de nada quisiera presentarme, soy un estudiante de informática y como proyecto fin de carrera estoy haciendo un periódico deportivo digital en WordPress.
El diseño de mi tema lo he desarrollado yo íntegramente pero quiero darle un aire lo más profesional posible y quisiera que tanto en mi página principal como en las categorías, las entradas se ordenen en dos columnas (dos columnas de entradas, no el contenido de las entradas a dos columnas) de la siguiente forma:

En las categorías, quiero que las entradas vayan ordenándose según el orden de inserción (la más nueva, arriba a la izquierda; la segunda más nueva, arriba a la derecha; la tercera más nueva, debajo de la primera,…) de esta forma:



En la página principal, quiero que la 1ª noticia sea la 1ª de la categoría fútbol (por ejemplo), la 2ª noticia sea la 1ª de la categoría baloncesto, la 3ª noticia sea la 1ª de la categoría tenis, etc., es decir, que en mi portada tenga siempre la última noticia insertada en cada una de mis categorías:



He leído que se podría hacer mediante loops pero el problema que tengo es que no estoy muy puesto en ese tema y estoy haciendo muchas probaturas sin éxito. ¿Tiene alguien el código (exacto o aproximado) de cómo se haría y, si es posible, adjuntar una pequeña explicación que me pueda hacer entenderlo? Como digo, me estoy volviendo loco y es lo último que me falta (referente al diseño) para terminar mi proyecto.

Espero haber explicado bien lo que necesito. No obstante, si algo no os ha quedado claro, podéis preguntar y trataré de ser más concreto.

Muchas gracias por vuestra atención y recibid un cordial saludo ;)
  #2 (permalink)  
Antiguo 28/08/2012, 10:30
Avatar de science  
Fecha de Ingreso: julio-2011
Mensajes: 42
Antigüedad: 12 años, 9 meses
Puntos: 6
Respuesta: ¿Cómo mostrar dos columnas de entradas en WordPress‏‏?

Pues justo hace nada acabo de postear un código que con un cambio servirá para esto. A ver, hay que hacerlo con loops. Cada categoría es un loop.

1. Anotas el ID de cada categoría que quieres mostrar.
2. Crear una plantilla de página para Wordpress. Es un fichero (loops-personalizados.php) que pondrás en la carpeta del theme, al lado de las demás páginas, con este contenido:

Código PHP:
Ver original
  1. <?php
  2. /**
  3.  * Template Name: Loops personalizados
  4.  *
  5.  * A custom page template without sidebar.
  6.  *
  7.  * The "Template Name:" bit above allows this to be selectable
  8.  * from a dropdown menu on the edit page screen.
  9.  *
  10.  * @package WordPress
  11.  * @subpackage Theme
  12.  * @since Theme 3.0
  13.  */
  14.  
  15. get_header(); ?>
  16.  
  17. [ESPACIO DONDE PONDREMOS EL CÓDIGO DE LOS LOOPS].
  18.  
  19. <?php get_sidebar(); ?>
  20. <?php get_footer(); ?>

3. Entras a Wordpress y creas una página nueva, le pones un título y seleccionas la plantilla de esta página que ya aparece. Guardas y cierras. Ahora editaremos la plantilla.
4. En el espacio indicado puedes pegar el siguiente código tantas veces como categorías quieras mostrar:

Código PHP:
Ver original
  1. <?php   global $wpdb;
  2.  
  3.         //Cambias el 3 por el ID de una categoría, y showposts es el número de posts a mostrar.
  4.         $categoria3 = new WP_Query();
  5.         $categoria3->query('cat=3&showposts=1');
  6.  
  7.         while($categoria3->have_posts()) : $categoria3->the_post(); ?>
  8.  
  9.             <!--Esto es el loop habitual. Aquí se muestra el título con enlace.-->
  10.             <h2><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>
  11.  
  12.             <!--Aquí se muestra el autor y la fecha. Debe estar definido en functions.php. Se puede borrar.-->
  13.             <?php twentyten_posted_on(); ?>
  14.  
  15.             <!--Aquí se muestra el número de comentarios. Debe estar definido en functions.php. Se puede borrar.-->
  16.             <span class="postcomments"><?php comments_popup_link( __( 'Comentar', 'twentyten' ), __( '1 Comentario', 'twentyten' ), __( '% Comentarios', 'twentyten' ) ); ?></span>
  17.             <p class="entry">
  18.  
  19.             <!--Este es el extracto del post. También se puede borrar, no es indispensable.-->
  20.             <?php echo get_the_excerpt(); ?></p>
  21.  
  22. <?php endwhile; ?>

5. Cada loop lo puedes meter, por ejemplo, dentro de un contenedor DIV con sus estilos. El tema de ponerlo en dos columnas ya es cosa del CSS: dos columnas, una con float:left y otra con float:right.
6. Si lo deseas, puedes ir a las opciones de Wordpress, Settings » Reading, y seleccionas 'Static Page' para después seleccionar en 'Front Page' la página que hemos creado.

Saludos.
  #3 (permalink)  
Antiguo 28/08/2012, 11:02
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Respuesta: ¿Cómo mostrar dos columnas de entradas en WordPress‏‏?

Cita:
En la página principal, quiero que la 1ª noticia sea la 1ª de la categoría fútbol (por ejemplo), la 2ª noticia sea la 1ª de la categoría baloncesto, la 3ª noticia sea la 1ª de la categoría tenis, etc., es decir, que en mi portada tenga siempre la última noticia insertada en cada una de mis categorías
Hola. Yo para esto haría algo así:

Código:
<?php 
$cat_args = array(
  'orderby' => 'name',
  'order' => 'ASC',
  'child_of' => 0
);

$categories =   get_categories($cat_args);

foreach($categories as $category) {
    echo '<dl>';
    echo '<dt> <a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a></dt>';
	
     $post_args = array(
      'numberposts' => 1,
      'category' => $category->term_id 
    );

    $posts = get_posts($post_args);
	
	foreach($posts as $post) {
	?>
		<dd><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></dd>
	<?php 
	} 
	echo '<dd class="view-all"> <a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>View all posts in ' . $category->name.'</a></dd>';
	echo '</dl>';
} 
?>
El marcado html es lo de menos, es sólo la idea lo importante.
__________________
...___...
  #4 (permalink)  
Antiguo 04/09/2012, 03:59
 
Fecha de Ingreso: agosto-2012
Mensajes: 14
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: ¿Cómo mostrar dos columnas de entradas en WordPress‏‏?

Bien, he conseguido hacer lo de las categorías y separar los posts en dos columnas pero aún me falla algo: los posts van en zig-zag:



Este es mi código:

Código:
<?php if (have_posts()) : ?>
<div>
<?php query_posts( ‘cat=3&posts_per_page=1′ );
while (have_posts()) : the_post(); ?>

<div <?php post_class() ?> id=”post-<?php the_ID(); ?>”>
<h2><a href=”<?php the_permalink() ?>” rel=”bookmark” title=”<?php the_title_attribute(); ?>”><?php the_title(); ?></a></h2>
<div><?php the_excerpt(); ?></div>
</div>
<?php endwhile; ?>
</div>
<div>
<?php query_posts( ‘cat=4&posts_per_page=1′ );
while (have_posts()) : the_post(); ?>

<div <?php post_class() ?> id=”post-<?php the_ID(); ?>”>
<h2><a href=”<?php the_permalink() ?>” rel=”bookmark” title=”<?php the_title_attribute(); ?>”><?php the_title(); ?></a></h2>
<div><?php the_excerpt(); ?></div>
</div>
<?php endwhile; ?>
</div>
<?php else : ?>
No hay nada
<?php endif; ?>
¿Cómo podría conseguir que estén alineados?

¡Gracias otra vez por vuestra ayuda! ;)
  #5 (permalink)  
Antiguo 04/09/2012, 05:28
Avatar de Nekko
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 3.141
Antigüedad: 16 años, 1 mes
Puntos: 656
Respuesta: ¿Cómo mostrar dos columnas de entradas en WordPress‏‏?

Probablemente sea sólo un problema de CSS. Hacé los contenedores un poquito mas angostos, o pasanos la URL en donde lo podemos ver para comentarte mejor.
__________________
Taller para crear themes wordpress desde cero | Presupuestos para trabajos particulares vía MP
  #6 (permalink)  
Antiguo 04/09/2012, 06:05
 
Fecha de Ingreso: agosto-2012
Mensajes: 14
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: ¿Cómo mostrar dos columnas de entradas en WordPress‏‏?

Este es el código en mi index.html (lo pongo así porque en el anterior post no sale el "col-left" y el "col-right"):

<?php if (have_posts()) : ?>
<div class="col-left">
<?php query_posts( 'cat=3&posts_per_page=1' );
while (have_posts()) : the_post(); ?>

<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<div class="extracto"><?php the_excerpt(); ?></div>
</div>
<?php endwhile; ?>
</div>
<div class="col-right">
<?php query_posts( 'cat=4&posts_per_page=1' );
while (have_posts()) : the_post(); ?>

<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<div class="extracto"><?php the_excerpt(); ?></div>
</div>
<?php endwhile; ?>
</div>
<?php else : ?>
No hay nada
<?php endif; ?>

Y este el relacionado con el mismo que está en mi style.css:

.col-left {
width:350px;
}

.col-right {
float:right;
width:350px;
}

Aún no lo he subido a ningún servidor, luego no tiene URL. He probado a poner las columnas menos anchas (250px cada una) pero el problema persiste.
  #7 (permalink)  
Antiguo 04/09/2012, 09:50
Avatar de Nekko
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 3.141
Antigüedad: 16 años, 1 mes
Puntos: 656
Respuesta: ¿Cómo mostrar dos columnas de entradas en WordPress‏‏?

A .col-left agregale float:left;
__________________
Taller para crear themes wordpress desde cero | Presupuestos para trabajos particulares vía MP
  #8 (permalink)  
Antiguo 04/09/2012, 14:27
 
Fecha de Ingreso: agosto-2012
Mensajes: 14
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: ¿Cómo mostrar dos columnas de entradas en WordPress‏‏?

¡Perfecto! Al fin he solucionado el problema! Muchas gracias ;)
  #9 (permalink)  
Antiguo 05/09/2012, 15:51
 
Fecha de Ingreso: agosto-2012
Mensajes: 14
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: ¿Cómo mostrar dos columnas de entradas en WordPress‏‏?

Una ¿última? duda...
Me ha quedado muy bien la portada de mi diario, exactamente como quería, pero al hacer lo mismo en mi category.php me ha surgido un problema:
Empiezo con esta parte de código:

<?php if (have_posts()) : ?>
<div class="col-left">
<?php query_posts( 'posts_per_page=4' );
while (have_posts()) : the_post(); ?>

y sí me muestra 4 posts, pero son los últimos 4 posts que he escrito en cualquier categoría. Es decir, si entro en mi categoría 3 puedo ver posts de otras categorías si han sido los últimos que he escrito. ¿A qué puede deberse?
Gracias otra vez ;)
  #10 (permalink)  
Antiguo 06/09/2012, 05:10
Avatar de zanguanga
Moderadora
 
Fecha de Ingreso: julio-2009
Ubicación: España
Mensajes: 1.686
Antigüedad: 14 años, 9 meses
Puntos: 429
Respuesta: ¿Cómo mostrar dos columnas de entradas en WordPress‏‏?

Hola ya te han contestado en otro foro. Sería bueno que avisaras cuando posteas la misma consulta en varios foros y ya ha sido solucionada, así nadie perderá su tiempo en contestar a algo que ya te respondieron. El tiempo es oro! Saludos.
__________________
Mi blog personal | Mi G+
  #11 (permalink)  
Antiguo 06/09/2012, 05:28
 
Fecha de Ingreso: agosto-2012
Mensajes: 14
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: ¿Cómo mostrar dos columnas de entradas en WordPress‏‏?

Sí, sí, desde luego, de hecho escribí un post indicando que por fin había podido solucionar el problema pero, poco después, me encontré con el problemilla que describí en el post siguiente y que aún no he podido solucionar. Tan pronto como lo solucione, lo notificaré en los foros en los que he posteado.

Un saludo y gracias ;)

Etiquetas: columnas, entradas, página, tema
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 00:04.