WordPress.org

Ready to get started?Download WordPress

Forums

[resolved] Getting blog to paginate properly in 'blog.php' template (9 posts)

  1. multiplier
    Member
    Posted 6 years ago #

    I'm building a site which uses WP as a CMS. The homepage needs to merely display one paragraph of text and pull three of the latest blog headlines. Then there will be a separate page called 'blog' which functions as usual. For this, I've created a 'blog.php' template.

    *I realize WP2.1+ allows you to configure your homepage as a flat page and display your blog elsewhere (Options->Reading), but I'd like to avoid any extra configuration steps.*

    Anyway, I copied over the standard Loop code from 'index.php' to 'blog.php' then saved it, but it doesn't seem to work. So I added a query_posts function -- now it displays some posts, but when you click "Previous Posts" at the bottom, it doesn't pull from the archive, it simply repeats the posts. Can anyone help with this code?

    <?php
    /*
    Template Name: blog
    */
    ?>
    
    <?php get_header(); ?>
    
    	<div id="content">
    
    <?php query_posts(); ?>
    	<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    
    			<div class="post" id="post-<?php the_ID(); ?>">
    				<h3><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
    
    				<p class="postmetadata">Posted by <?php the_author_posts_link(); ?> on <?php the_time('F jS, Y') ?> | Categorized as <?php the_category(', ') ?> | Tagged as <?php the_tags(''); ?> | <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?>
    				</p>
    
    				<div class="entry">
    					<?php the_content('Read the rest of this entry &raquo;'); ?>
    				</div>
    			</div>
    
    		<?php endwhile; ?>
    
    		<?php else : ?>
    
    		<h2 class="center">Not Found</h2>
    		<p class="center">Sorry, but you are looking for something that isn't here.</p>
    		<?php include (TEMPLATEPATH . "/searchform.php"); ?>
    
    	<?php endif; ?>
    
    	</div>
    
    <?php get_sidebar(); ?>
    
    <?php get_footer(); ?>
  2. multiplier
    Member
    Posted 6 years ago #

    Crap. Still not able to get the main Loop to work properly on a custom template ('blog.php'). Any suggestions?

  3. moshu
    Member
    Posted 6 years ago #

    *I realize WP2.1+ allows you to configure your homepage as a flat page and display your blog elsewhere (Options->Reading), but I'd like to avoid any extra configuration steps.*

    You know what the solution is. You preferred extra headache instead of a one-step configuration.
    Why are you surprized? The navigation code looks for the index.php not your "blog.php"...

  4. multiplier
    Member
    Posted 6 years ago #

    You know what the solution is.

    I said I knew what A solution was. I'm asking for potential alternatives. If there aren't any, I accept that.

    You preferred extra headache instead of a one-step configuration.

    No one on this forum seeks extra headaches -- just advice on coding. If you've got any for this particular dilemma, please let me know.

  5. Samuel Wood (Otto)
    Tech Ninja
    Posted 6 years ago #

    Use query_posts($query_string); instead.

    Better yet, do it the right way in the first place. But the above should work too.

  6. SimonJ
    Member
    Posted 6 years ago #

    Hello multiplier

    Well... I'm not sure If I really understand what you wanna do.

    You said : " The homepage needs to merely display one paragraph of text and pull three of the latest blog headlines. Then there will be a separate page called 'blog' which functions as usual. For this, I've created a 'blog.php' template."

    And : "I realize WP2.1+ allows you to configure your homepage as a flat page and display your blog elsewhere (Options->Reading), but I'd like to avoid any extra configuration steps."

    Ok. What is your final goal ?

    When people visit your site, you want to display a main page with "one paragraph" and "three of the latest blog headlines"

    Then, if they click on "blog", they go to the full blog, displayed as usual.

    But, you don't wanna define a "Page" as your home page in the wp-admin section ?

    Do I understand well ?

    S.

  7. multiplier
    Member
    Posted 6 years ago #

    "Then, if they click on "blog", they go to the full blog, displayed as usual."

    Exactly. All I'm experimenting with is a way to separate the homepage and the blog, but without the configuration step. Maybe it's not possible, but worth learning about.

    Use query_posts($query_string); instead.

    Thanks, Otto. I actually just read a bit about this. But when I replaced my previous query_posts with this...

    <?php query_posts($query_string . '&orderby=date'); ?>

    ...the pagination still did not work correctly, it just repeated the same posts.

  8. SimonJ
    Member
    Posted 6 years ago #

    Maybe this link could help you :

    http://wordpress.org/support/topic/57912?replies=8#post-312858

    Kafkaesqui wrote there the trick to get the "posts_nav_link" works with a query...

    I had almost the same problem, and as far as I understand, the posts_nav_link wont works with query_posts... Because, even if you call the next page, it will still read your query...

    So you have to use :

    <?php
    $page = (get_query_var('paged')) ? get_query_var('paged') : 1;
    query_posts("cat=29&showposts=9&paged=$page");
    ?>

    This is my query, where I specify a category and a number of posts... But I guess you can use it without these specification...

    <?php
    $page = (get_query_var('paged')) ? get_query_var('paged') : 1;
    query_posts("showposts=9&paged=$page");
    ?>

    Of course, you can replace the number of post by any number you want, or maybe just delete it... (?)

    Hope it can help...

    S.

  9. multiplier
    Member
    Posted 6 years ago #

    Hallelujah -- SimonJ, I owe you (and Kafkaesqui, as usual) a beer, that worked like a charm! Situation resolved.

Topic Closed

This topic has been closed to new replies.

About this Topic