Paginar resultados del loop de index y personalizar pagina de resultados

Inicio Foros WordPress Themes y Diseño Paginar resultados del loop de index y personalizar pagina de resultados

Este debate contiene 28 respuestas, tiene 2 mensajes y lo actualizó  LGrusin hace 5 años, 9 meses.

  • Autor
    Publicaciones
  • #67095

    malder
    Participante

    Hola, mi objetivo anterior de separar el loop en varias columnas, lo conseguí gracias a que me echaron una mano en otro foro, con este código publicado en una web gringa:

     
    // FIRST LOOP: display posts 1 thru 5 <?php query_posts('showposts=5'); ?> <?php $posts = get_posts('numberposts=5&offset=0'); foreach ($posts as $post) : start_wp(); ?> <?php static $count1 = 0; if ($count1 == "5") { break; } else { ?> <?php the_title(); ?> <?php the_content(); ?> <?php $count1++; } ?> <?php endforeach; ?> // SECOND LOOP: display posts 6 thru 10 <?php query_posts('showposts=5'); ?> <?php $posts = get_posts('numberposts=5&offset=5'); foreach ($posts as $post) : start_wp(); ?> <?php static $count2 = 0; if ($count2 == "5") { break; } else { ?> <?php the_title(); ?> <?php the_content(); ?> <?php $count2++; } ?> <?php endforeach; ?> // THIRD LOOP: display posts 11 thru 15 <?php query_posts('showposts=5'); ?> <?php $posts = get_posts('numberposts=5&offset=10'); foreach ($posts as $post) : start_wp(); ?> <?php static $count3 = 0; if ($count3 == "5") { break; } else { ?> <?php the_title(); ?> <?php the_content(); ?> <?php $count3++; } ?> <?php endforeach; ?>

    El problema que tengo ahora, es que no me paginan los resultados :( estará algo mal
    en el loop? como puedo hacer para que me pagine correctamente
    y personalizar la pagina de destino?

    Gracias

  • #67105

    LGrusin
    Miembro

    Si te refieres a mostrar los posts en columnas lo puedes hacer con CSS. De esta forma te conserva la paginación.

    En el antiguo foro puedes encontrar hilos sobre esto:
    https://ayudawp.com/foro/topic/posts-pares-e-impares-get-oddeven-posts
    https://ayudawp.com/foro/topic/mostrar-posts-en-dos-columnas

    Un saludo

  • #67128

    malder
    Participante

    No consigo entender las soluciones a las que me derivas LGrusin 🙁

    el caso es que no muestro los post en dos columnas, eso es relativamente fácil, con un poco de css y flotar a la derecha. El código que puse en mi primer mensaje, me da la posibilidad de colocar los articulos en divs distintos, colocados por zonas distintas de la web, no necesariamente consecutivas. Y el resultado es lo que buscaba, pero el problema es que no me realiza la paginación.

    Hace el cambio de pagina hacia /?paged=2 pero lo que imprime es el mismo index con las mismas entradas

    ¿que puedeo hacer?

  • #67131

    LGrusin
    Miembro

    Es complicado hacer la paginación con tantas consultas a la base de datos, alguna tiene que tener preferencia o ser la principal. En esa línea si es posible encontrar una solución.

    Perdona mi torpeza pero si lo que quieres es cambiar la presentación, el estilo o personalización, eso se hace con CSS, no es necesario tanto bucle. Sigo creyendo que se puede hacer de otra forma más sencilla.

    Para la paginación en una consulta en tu caso sería, en el primer bucle
    <?php query_posts( ‘showposts=5&paged=’ . $paged); ?>

    Además tantas consultas simultáneas pueden ralentizar mucho el blog.

    Estoy seguro de que hay códigos similares en el Foro, a ver si lo encuentro.

    Por cierto, el otro hilo sobre lo mismo también es tuyo. ¿Qué pasó con aquella solución? https://ayudawp.com/foros/hilo/ayuda-con-loop-personalizado/
    Tanto hilo para lo mismo confunde al personal…

    Un saludo

  • #67133

    malder
    Participante

    Hola y gracias por preocuparte.

    A mi también me preocupa bastante el rendimiento de la base de datos, ya que tengo muchos articulos pero hasta el día de hoy ha sido la única solución que he encontrado.

    En el post que mencionas, tuvimos el problema de que no era capaz de enseñarte el diseño ya que estaba en localhost, y al encontrar la forma de hacer el loop, pasé a publicar otro tema porque era diferente, ahora el problema es la paginación.

    Gracias a una persona que me ayudó, dí con esta web, de donde saqué el código para mostrar los articulos de la manera que yo pretendía, dando un estilo y colocación diferente dependiendo del orden de publicación, a continuación la web de donde saqué el código, es el apartado nº4:

    http://digwp.com/2010/03/wordpress-post-content-multiple-columns/

    Con este código conseguí adaptar mi plantilla, se me ocurre que puedo mostrarte una captura de pantalla para que así se pueda comprender mejor lo que quiero conseguir:

    http://postimage.org/image/ay2tdeb2v/

    Si piensas que se puede conseguir este tipo de maquetación, con otro loop que consuma menos recursos, estaré muy agradecido de tu ayuda 🙂 me pierdo un poco (mucho) en php

     

    Por favor, si en algún momento he hecho mal en publicar otro mensaje a parte, pido disculpas.

  • #67147

    LGrusin
    Miembro

    Bueno, insisto en lo de antes. Para lograr la maquetación o personalización del aspecto de la página lo tienes que hacer con CSS. Si has conseguido hacer esta parte sólo tienes que sustituir el código HTML por el PHP anterior que has puesto al inicio del hilo.

    Tienes que organizar qué artículos vas a mostrar en cada zona. Normalmente en este tipo de themes en donde se muestran diferentes apartados no hay paginación. Cada zona son los posts correspondientes a una categoría. Sólo hay paginación cuando se consulta desde una categoría.

    Siguiendo el ejemplo que has puesto, las dos columnas se usan para mostrar mayor número de posts del resto de categorías. En esta consulta podría estar la paginación. Las primeras zonas incluso pueden mostrarse posts aleatoriamente.

    Un saludo

  • #67151

    malder
    Participante

    El css está preparado, no hay problema va todo perfecto igual que la imagen, y con el código que he puesto los artículos se muestran perfectamente. Pero me falta la paginación.

    Verás, la idea no es mostrar posts por categorías, porque hay muchas, si no que se muestren de forma cronológica y natural como siempre, con este código se muestra así, pero para que la estructura sea accesible necesito integrar la paginación, ¿no es posible?

    Un amigo me ha comentado que pruebe con unos códigos para resetear los loops, mañana probaré a ver que tal. Lo que me preocupa es que todo esto realice demasiadas consultas y se ralentice.

  • #67169

    LGrusin
    Miembro

    Me parece que no nos entendemos…

    Vamos a ver, voy a guiarme por la imagen que has puesto. Si no vas a diferenciar las zonas para mostrar diferentes posts por categorías, entonces no es necesario hacer tres consultas diferentes. Es lo que te he querido decir desde el principio.

    Según tú vas a mostrar todos los posts pero con vistas diferentes. Los dos primeros de una forma, los 3 siguientes de otra y el resto en dos columnas de 3 posts cada una ( 6 posts ) . Pues para eso no hace falta realizar varias consultas, lo puedes hacer de una misma pasada, es decir, con un sólo bucle while.

    Es lo que habías puesto en tu anterior hilo. https://ayudawp.com/foros/hilo/ayuda-con-loop-personalizado/#post-66961

    … y además no tienes el problema de la paginación…

    Un saludo

  • #67198

    malder
    Participante

    Bueno, ahora no se en que hilo contestar, perdona.

    Probé ese código, y el problema que tengo es que los 2 primeros articulos, al estar en un div diferente, ademas de estar dentro de otros divs, pues al usar este código, los otros componentes cercanos, estos divs de los que hablo, entran en el bucle y se repiten, con lo cual todo se deshace.

    No se si me explico bien. he realizado un pastebin para que puedas ver como coloco  el código, creo que algo estoy haciendo mal:

    http://pastebin.com/Kmb5Z39Y

     

    Un saludo y gracias por tu ayuda

  • #67205

    LGrusin
    Miembro

    Creo que tienes algunas cajas div de más, y el cierre </div> también veo alguno de más. Por ejemplo, si estilo2 y resumen2 es lo mismo, sobra uno. Igual con estilo3 resumen3.

    <div class=”estilo2″> sobra

    La última parte debería ser así:
    <?php } else { ?>
    <div class=”resumen3″>
    <?php if ( has_post_thumbnail() ) { the_post_thumbnail( ‘home-thumb’ ); } ?>
    <span class=”titulo”><a href=”<?php the_permalink() ?>” title=”<?php the_title(); ?>”><?php the_title(); ?></a></span>
    <span class=”desc”><?php echo excerpt(35); ?></span>
    </div>
    <?php } ?>
    <?php endwhile; ?>

    Si no me he equivocado…

    Deberías crear una página con el código HTML funcionando bien y las cajas bien definidas en los estilos css. Una vez tengas esto le añades el código PHP. Si no lo haces así creerás que es culpa del código PHP cuando realmente no lo es.

    Un saludo

  • #67219

    malder
    Participante

    Hola tienes razón, supongo que tuve un problema con el botón deshacer, porque la parte inferior me la mostraba correctamente, no así la parte superior, que es digamos la más problematica, pues al estar separada, es cuando se descoloca todo, ya que los divs colindantes entran en el loop y se duplican las capas.

    http://pastebin.com/qEgzgQng

    Ahora adjunto una captura de pantalla.

    http://postimage.org/image/723wsjeyh/

    Por supuesto, antes de comenzar con wordpress, la estructura ya la tenía afinada en un html y css, el problema es el loop. (creo)

    Creo que vamos llegando a la cuestión del asunto, gracias por tu ayuda.

  • #67231

    LGrusin
    Miembro

    Me temo que te está saliendo lo que tienes puesto. Es decir, post a la izquierda, video a la derecha y debajo publicidad de Gigas y Google. Eso se repite dos veces.

    Si lo que quieres es dos posts a la izquierda, video a la derecha y debajo de todo eso la publicidad pues no lo tienes bien. Todo lo que pongas dentro del bucle se te va a repetir tantas veces como pasadas haga según la variable contador.

    Se me ocurre, para no complicar más el asunto, que aproveches la variable contador para el video y la publicidad de manera que sólo se muestre una vez. Algo como,
    <?php if ($contador == 1) { ?>
    <div id=”viral”>
    ….. código video ….
    </div>
    <?php } ?>

    <?php if ($contador == 1) { ?>
    <div class=”horizontal”>
    …. código Gigas …..
    …. código Adsense …..
    </div>
    <?php } ?>

    De todas formas revisa bien porque creo que tienes cierres de cajas </div> de más…

    Saludos

  • #67272

    malder
    Participante

    Pues creo que lo he puesto mal, o algo falla

    http://postimage.org/image/6ymhuyqyn/

    http://pastebin.com/K7HyRJVp

  • #67365

    malder
    Participante

    Me he quedado atascado, creo que estoy colocando el código bien pero no me aparece nada.

  • #67367

    LGrusin
    Miembro

    Intenta ponerme una imagen a pantalla completa, no es necesario que se pueda leer, sólo quiero ver la disposición de las cajas en toda la página. Usa Control – en el navegador para que te quepa la captura.

    Por cierto, antes de cada <?php if (contador == 1) { ?> hay un </div>
    ¿Qué cajas cierran?

    EDITO: A la variable contador le falta el signo $.Es decir, donde pone:
    <?php if (contador == 1) { ?>
    debe poner
    <?php if ($contador == 1) { ?>

    Lo siento, las prisas…

    Un saludo

  • #67368

    malder
    Participante

    uf, vamos evolucionando 😛

    Verás he subido el theme a mi blog de pruebas para que puedas verlo mejor.
    http://www.malder.info

    Como ves, el inicio perfecto, pero en la segunda noticia se va del sitio, y me duplica capas con ids que van después

    Lo tengo maquetado por zonas, entonces la capa destacadas, es donde van las 2 noticias, luego al lado va el vídeo, y cierro la capa estructural. A continuación meto la publicidad horizontal y luego el otro loop, parece que estamos consiguiendolo, te estoy muy agradecido, va a ser mi mejor regalo de navidad 🙂

    Y adelantándome, una vez arreglemos este detalle, como haría para personalizar los resultados de la paginación, porque si te das cuenta, la paginación funciona perfectamente, pero sigue usando la misma estructura, yo he personalizado las paginas de categorias, archivo, tags, pero como hago para personalizar las paginaciondes desde index?

    Un saludo y muchisimas gracias!

  • #67373

    LGrusin
    Miembro

    Bueno, veo algunas cosillas raras pero vamos a probar de uno en uno.

    …Estoy pensando…

    Por otro lado no sé si te has dado cuenta
    <?php } elseif ($contador > 2 && $contador < 5) { ?>
    Sólo muestra los posts 3 y 4 puesto que es mayor que 2 y menor que 5, por tanto en el 5 hay que poner un 6.

    Sobre lo de tener diferente aspecto según la paginación, haré como que no lo he leído… 😉

    No vayas tan rápido que no me has dado tiempo a terminar de escribir…

  • #67374

    malder
    Participante

    Hola, he hecho esos cambios, pero se me descuadra el blog, ya que el div cuerpo y contenido entran en el bucle y mira lo que pasa: http://www.malder.info

     

  • #67375

    malder
    Participante

    Así es como tengo el index.php

     

    http://pastebin.com/yP5idz5E

  • #67376

    LGrusin
    Miembro

    Dajalo como estaba me di cuenta tarde ya lo habías modificado. Dejalo así https://ayudawp.com/foros/hilo/paginar-resultados-del-loop-de-index-y-personalizar-pagina-de-resultados/#post-67272 pero cambiando el 5 por el 6.

  • #67377

    LGrusin
    Miembro

    Bueno aquí tienes el resultado con todos los cambios. Por favor, antes de copiar y pegar haz copia o comprueba con lo que tienes.

    http://pastebin.com/b4PENWjj

    EDITO: Ahora que lo veo bien esto tampoco te va a funcionar. Tienes tantas cajas que es complicado controlarlas desde el bucle while. Aunque me estoy haciendo una idea, si supiera la estructura de las cajas podría decirte mejor. De esta forma es dificil averiguarlo.

    Puedes dejarlo como estaba y partimos de ahí.

    Saludos

  • #67378

    malder
    Participante

    Tampoco es que sea una eminencia en CSS seguro que hay algo mal, o demasiadas cajas, te paso el html que preparé antes de intentar hacer el theme:

    http://malder.info/test/

    Creo que así puedes verlo mejor?

    Gracias!

  • #67383

    LGrusin
    Miembro

    El problema es cómo encajar tantas cajas dentro del bucle, prueba el siguiente código que emula el orden exacto según el HTML que me has pasado.

    http://pastebin.com/rWP9urQr

    Anota todos los cambios por si acaso.

    Saludos

  • #67384

    malder
    Participante

    Vuelve a romper las capas y duplicarlas 🙁

    se puede ver en http://www.malder.info

  • #67386

    LGrusin
    Miembro

    Esta claro que hacer las cosas de memoria no funciona. A ver si esta es la definitiva:

    http://pastebin.com/KGnnnY1T

    Un saludo

  • #67414

    malder
    Participante

    snif, snif…. funciona 🙂 muchas gracias, estudiaré el código a ver si me entero de algo para cuando tenga que modificarlo. voy a seguir terminando el theme, seguiré dando guerra por aqui muchas gracias LGrusin 😉 felices fiestas

  • #67433

    LGrusin
    Miembro

    Bueno, te quedan algunas cosillas como por ejemplo aumentar el ancho de la caja de búsqueda de Google que hace que se desborde un poco la caja estructura.

    Felices Fiestas también para ti, y para los demás usuarios, colaboradores, moderadores, y Fernando, que debe estar orgulloso de lo conseguido…

    Un saludo

  • #67438

    malder
    Participante

    Desde donde lo ves? yo no aprecio ningun desborde

  • #67443

    LGrusin
    Miembro

    Ocurre con todos los navegadores, algunas cajas se desbordan apareciendo las barras de desplazamiento horizontal y/o vertical. Esto ocurre porque el contenido de la caja no cabe en ella. La solución pasa por redimensionar las cajas o adaptar el contenido a las dimensiones de la caja.

    Un saludo

El foro ‘Themes y Diseño’ está cerrado y no se permiten nuevos debates ni respuestas.

Pin It on Pinterest