Programación

Foro WordPress » WordPress » Programación

posts pares e impares (get odd/even posts) (9 mensajes)

Acerca de este hilo

Tags

  1. pfd

    4.0
    Antiguedad: Nov 2009
    Mensajes: 82

    offline

    Publicado hace 1 año
    #

    Estoy intentando crear una página con 8 posts distribuidos en dos columnas de 4 posts cada una y con una paginación en el pie de página, sinembargo hay algo que estoy haciendo muy mal, ya que no consigo que me salga.

    Dejo el código agradeciendo mucho cualquier ayuda que me permita solucionar mi problema:

    < ?php get_header(); ? >
    < div id="content" >
    < div class="post page" id="post-< ?php the_ID(); ? >" >
                < ?php include (TEMPLATEPATH . "/post-head.php"); ? >

    < ?php query_posts(array('posts_per_page' = > 8, 'cat' = > '1710')); ? >

    < div class="column-odd" >
    < ?php
    $i=1;
    foreach($myposts as $post) :
    if($i%2 != 0) :
    setup_postdata($post);
    ? >

        < ?php while (have_posts()) : the_post(); ? >
            < div class="post" id="post-< ?php the_ID(); ? >" >
            < !-- google_ad_section_start -- >
            < ?php include (TEMPLATEPATH . "/post-head2.php"); ? >
                < div class="post-body" >
                    < ?php the_excerpt(); ? >
                    < p class="more white" ><a>" title="< ?php the_title(); ? >" >leer más</a>< /p >
                    < div class="
    clear" > < /div >
                < /div >
                < !-- google_ad_section_end -- >
            < /div >

    < ?php endif;
    $i++;
    endforeach;
    ? >
    < /div >

    < div class="
    column-even" >
    < ?php
    $i=1;
    foreach($myposts as $post) :
    if($i%2 != 0) :
    setup_postdata($post);
    ? >

        < ?php while (have_posts()) : the_post(); ? >
            < div class="
    post" id="post-< ?php the_ID(); ? >" >
            < !-- google_ad_section_start -- >
            < ?php include (TEMPLATEPATH . "
    /post-head2.php"); ? >
                < div class="
    post-body" >
                    < ?php the_excerpt(); ? >
                    < p class="
    more white" ><a>" title="< ?php the_title(); ? >" >leer más</a>< /p >
                    < div class="clear" > < /div >
                < /div >
                < !-- google_ad_section_end -- >
            < /div >

    < ?php endif;
    $i++;
    endforeach;
    ? >

    < /div >

    < ?php endwhile; ? >
        < ?php include (TEMPLATEPATH . "/nav.php"); ? >
        < div class="clear" > < /div >
    < /div >

    < ?php get_footer(); ? >

  2. LGrusin

    Moderador
    Antiguedad: Feb 2011
    Mensajes: 1.801

    offline
    Mejor respuesta

    Publicado hace 1 año
    #

    Desde crearedesign podrías coger esta idea. En el archivo index.php o home.php o loop.php o en el archivo que quieras y según tu theme. Puedes poner al principio dentro del Loop (bucle while) lo siguiente:

    < ?php $odd_or_even = 'odd'; ? >
    < div class="post_< ?php echo $odd_or_even; ? >" >
    < ?php $odd_or_even = ('odd'==$odd_or_even) ? 'even' : 'odd'; ? >

    Después defines en style.css el aspecto, posición, etc, de las comunas, definidas como

    < div class="post_even" < /div >

    y

    < div class="post_odd" < /div >

    o sea .post_even y .post_odd

    Estas cajas div sustituyen a la que contenga el post en tu theme, class="post"

    Lo de mostrar 8 posts eso lo configuras desde el DashBoard, puedes mostrar los que quieras preferiblemente en número par.

    La verdad es que no lo he probado pero no creo que haya que modificar mucho para adaptarlo a cada theme.

    Por cierto, en tu código realizas dos consultas, es posible que se interfieran. Debe haber un sólo bucle while para las dos consultas que es lo que hace el código que he puesto.

    Espero que te sirva.

    Un saludo

  3. LGrusin

    Moderador
    Antiguedad: Feb 2011
    Mensajes: 1.801

    offline

    Publicado hace 1 año
    #

    ... el aspecto, posición, etc, de las comunas, definidas como...

    Quise decir columnas, en que estaría yo pensando....

  4. Pedro Raul

    5.0
    Antiguedad: Ene 2010
    Mensajes: 812

    offline

    Publicado hace 1 año
    #

    no es necesario, event ....

    Solo pon los post en una lista, dale la mitad -15px de ancho a cada
    y hazlos flotar a la izquierda.

    releyendo tu pregunta:

    ¿que es lo que no te sale?
    ¿el maqueado?
    ¿el paginado?
    ¿este paginado debe ser para cada columna?

    Wordpresslatino.net: ¡Se Brinda ayuda gratis para tu wordpress! -->- CLICK EN MI NICK
    ¡quieres que lo HAGA por ti! ---> CLICK EN MI NICK
  5. LGrusin

    Moderador
    Antiguedad: Feb 2011
    Mensajes: 1.801

    offline

    Publicado hace 1 año
    #

    Efectivamente con reducir el ancho de las columnas a un poco menos de la mitad es suficiente. Pero queda mejor tener la posibilidad de aplicar estilos por separado a cada columna.

    Por cierto,

    < ?php $odd_or_even = 'odd'; ? >

    Va fuera del Loop el resto dentro.

    Saludos

  6. pfd

    4.0
    Antiguedad: Nov 2009
    Mensajes: 82

    offline

    Publicado hace 1 año
    #

    Muchas gracias por las respuestas, voy a mirarme todo lo que proponeis con cuidado y vuelvo para comentarlo.

  7. pfd

    4.0
    Antiguedad: Nov 2009
    Mensajes: 82

    offline

    Publicado hace 1 año
    #

    Hola LGrusin,

    Te agradezco mucho tus indicaciones, sinembargo no consigo los resultados esperados. De hecho tengo dos problemas:

    - Ninguno de los dos listados (columnas) de posts distinguen entre impares y pares (aparecen todos en ambas columnas)

    - Al cambiar de página en nav.php aparecen siempre los mismos posts de la primera página (se cambia la página a .../page/2/, pero siempre aparecen los mismos posts)

    Vuelvo a dejar el código por si alguien puede ayudarme:

    < ?php
    /*
    Template Name: Articles1
    */

    ? >
    < ?php get_header(); ? >
    < div id="content" >
    < div class="post page" id="post-< ?php the_ID(); ? >" >
                < ?php include (TEMPLATEPATH . "/post-head.php"); ? >
    < ?php $postCount = 1; ? >

    < ?php query_posts(array('posts_per_page' = > 4, 'cat' = > '1710')); ? >

    < div class="post-odd" >
    < ?php $odd_or_even = 'odd'; ? >
        < ?php while (have_posts()) : the_post(); ? >
            < div class="post-< ?php echo $odd_or_even; ? >" >
            < ?php $odd_or_even = ('odd'==$odd_or_even) ? 'even' : 'odd'; ? >
                < ?php include (TEMPLATEPATH . "/post-head2.php"); ? >
                    < ?php the_excerpt(); ? >
                    < p class="more white" ><a>" title="< ?php the_title(); ? >" >leer m&aacute;s</a>< /p >
                    < /div >   

    < ?php endwhile; ? >< /div >

    < div class="
    post-even" >

        < ?php while (have_posts()) : the_post(); ? >

            < ?php $odd_or_even = 'even'; ? >
            < div class="
    post-< ?php echo $odd_or_even; ? >" >
            < ?php $odd_or_even = ('even'==$odd_or_even) ? 'even' : 'odd'; ? >
                < ?php include (TEMPLATEPATH . "
    /post-head2.php"); ? >
                    < ?php the_excerpt(); ? >
                    < p class="
    more white" ><a>" title="< ?php the_title(); ? >" >leer m&aacute;s</a>< /p >
                    < /div >

    < ?php endwhile; ? >< /div >
            < ?php $postCount++; ? >
        < /div >
    < div class="clear" >&nbsp;< /div >
        < ?php include (TEMPLATEPATH . "/nav.php"); ? >
        < div class="clear" >&nbsp;< /div >
    < div class="cloud" >
    < ?php wp_tag_cloud(array(
      'smallest' = > 10,      // size of least used tag
      'largest' = > 28,       // size of most used tag
      'unit' = > 'px',        // unit for sizing
      'orderby' = > 'name',   // alphabetical
      'order' = > 'ASC',      // starting at A
                            // exclude=ID of tag to exclude from list
    )); ? >< /div >
    < ?php get_footer(); ? >

  8. pfd

    4.0
    Antiguedad: Nov 2009
    Mensajes: 82

    offline

    Publicado hace 1 año
    #

    ¡Albricias! ¡albricias!

    Finalmente lo he entendido. Como no se nada de php todo me cuesta 50 veces más.

    Dejo el código por si le es útil a alguien:

    < ?php get_header(); ? >
    < div id="content" >
    < div class="post page" id="post-< ?php the_ID(); ? >" >
                < ?php include (TEMPLATEPATH . "/post-head.php"); ? >

    < ?php query_posts(array('posts_per_page' = > 8, 'cat' = > '1710')); ? >
    < ?php $odd_or_even = 'odd'; ? >
    < ?php while (have_posts()) : the_post(); ? >
            < div class="post_< ?php echo $odd_or_even; ? >" id="post-< ?php the_ID(); ? >" >
            < ?php $odd_or_even = ('odd'==$odd_or_even) ? 'even' : 'odd'; ? >< ?php include (TEMPLATEPATH . "/post-head3.php"); ? >
                < div class="post-body" >
                    < ?php the_excerpt(); ? >
                    < p class="more white" ><a>" title="< ?php the_title(); ? >" >leer m&aacute;s</a>< /p >
                < /div >
        < /div >
    < ?php endwhile; ? >

    Muchas gracias LGrusin por tu ayuda inestimable.

  9. LGrusin

    Moderador
    Antiguedad: Feb 2011
    Mensajes: 1.801

    offline

    Publicado hace 1 año
    #

    Es que te dije que iba fuera del Loop, o sea, el While porque al principio me di cuenta del fallo.
    También te dije que sólo había que poner un bucle, Loop o While. Bueno ya aprenderás la dichosa terminología que tanto nos trae de cabeza.

    ¿A que es más sencillo cuando se sabe?

    Saludos

Responder

Debes Identificarte para publicar.

Foro WordPress » WordPress » Programación