WordPress.org

Ready to get started?Download WordPress

Forums

Pages AND Posts - want custom /home/ page & /blogs/ to list blogs (12 posts)

  1. boundforhome
    Member
    Posted 4 years ago #

    Hey there,

    I'm using the 1 install of WP as a CMS to run my site (Pages), and a blogging engine (Posts) at /blog/.

    What I'm after is a completely custom /home/ page, but every other page running off the same / similar template.

    Under Reading settings I have both static pages set - Home and Blog. Based on what I have read this appears to be correct.

    What I have trouble with is identifying the /home/ and /blog/ page in the PHP template.

    I originally wrote something like:

    <?php if ( is_home() || is_front_page() ) {
    		include(TEMPLATEPATH . '/myhome.php');
    	} else {
    		include(TEMPLATEPATH . '/body.php');
    	} ?>

    ... where myhome.php is a unique template specifically for the /home/ page (I don't want the headers, and have slightly different CSS), and body.php is for every other page. Works wonders.

    Until I click the /blog/ link.

    This seems to load some cross of the /myhome.php template without the appropriate stylesheets. Can't quite work it out, but it's definitely falling into the is_home() || is_front_page() if statement. This makes sense, I guess? - I've set /blog/ as the front page.

    I'm thinking there's a correct combination of is_home(), is_front_page(), is_page(), etc. that should do this correctly for me.

    Anyone successfully written a theme like this, or got some template suggestions, with a custom /home/ page and the /blog/ page simply listing the blogs like it should, and all other ./pages displaying correctly too?

    Jason

  2. esmi
    Forum Moderator
    Posted 4 years ago #

    Your approach is logical but wrong for WordPress.
    Sstart by creating a custom page template, then apply that template to your chosen home Page.

  3. boundforhome
    Member
    Posted 4 years ago #

    You are quite right. A custom page template for /home/ can be applied as such, and works quite well. Nice.

    Thanks.

    Still don't have the blog working quite right but I have seen it so I must have tweaked my PHP a little too much. Will work on that.

  4. boundforhome
    Member
    Posted 4 years ago #

    OK, this does work well but I can't get the page at /blog/ and the subsequent Posts linked from this page to display in similar fashion to my Pages.

    Commands like list_pages don't appear to work so well on the /blog/ and Post pages, and don't list my CMS pages.

  5. boundforhome
    Member
    Posted 4 years ago #

    So the above works:

    • custom template for /home/
    • every other page using the normal template

    But now - possibly down the wrong route? - I'm using is_page() logic to get the PHP template correct for the Pages / Posts.

    I have a <?php if (is_page()) { ?> statement with some PHP for all Pages, and then the <?php } else { ?> statement with different PHP which appears to kick in for /blog/ and any Blog Posts.

    This does seem to work. If I specify a template for the /blog/ it just doesn't seem to work, possibly because the /blog/ page isn't a normal page in this situation, but not entirely sure.

    Is this the correct way to go about getting the /blog/ listing and blog Posts looking slightly different to normal Pages?

  6. esmi
    Forum Moderator
    Posted 4 years ago #

    Commands like list_pages don't appear to work so well

    list_pages in an old template tag that's no longer supported. Try using wp_list_pages instead.

    I'm using is_page() logic to get the PHP template correct for the Pages / Posts.

    Wrong approach. If you've set your Home and Blog page using Admin/Settings/Reading/Front page displays, your Blog page will use the index.php file as its template.

  7. boundforhome
    Member
    Posted 4 years ago #

    your Blog page will use the index.php file as its template.

    Blog will *always* use index.php? i.e. I should define my default Blog template within this file, then include my Pages template with {otherfile}.php as another template a reference that (With Home existing in yet another template).

  8. esmi
    Forum Moderator
    Posted 4 years ago #

    Your defined posts page will always use index.php. Not sure I understand the rest of your question.

  9. photocurio
    Member
    Posted 4 years ago #

    I'm finding that my blog page is ignoring my index.php and using home.php as a template. what would cause that?

  10. mcbutterbuns
    Member
    Posted 4 years ago #

    I had the same issue with my WordPress 3.0 install. I had home.php as a custom template and my default page pointed towards "home". My posts page would never come up under /blog.

    I fixed it by moving home.php to myhome.php and renaming the template to MyHome. Then I re-saved the "home" page and it started working as expected. I wonder if home.php is a reserved filename.

    Anyways, I'm not sure if you need to rename the filename alone or also the name of the template within the file.

    Hope that helps and isn't confusing.

  11. jimcasey
    Member
    Posted 4 years ago #

    I can confirm mcbutterbuns' solution -- I was running into the same issue. It appears that home.php is reserved for home page display (see Template Hierarchy) -- I renamed home.php to home_template.php and /blog used the default template (page.php) again.

  12. chinmoy
    Member
    Posted 4 years ago #

    First create 2 two page "Home" and "Blog" with blank content and create
    a page-home.php file. Copy the all content from index.php file / or write your own design code in this page-home.php file.

    Next, login into wp-admin and goto Reading/Settings section. Then choose the following options:

    Front page displays : activate A static page (select below)

    * Front page: Home
    * Posts page: Blog

    Thanks!!
    (if the issue is solve, mark is resolve)

Topic Closed

This topic has been closed to new replies.

About this Topic