WordPress.org

Ready to get started?Download WordPress

Forums

use a page template to change some pages bkgd image (7 posts)

  1. leeland
    Member
    Posted 7 years ago #

    hi there
    i have been trying to figure out a way to use a custom page template to change the background color of some of my pages
    i'm using the kubrick theme in which the default background image is kubrickbg.jpg. i have made up a yellow version called kubrickbgYELLOW.jpg which i wish to use sometimes by manually setting a custom page template when i write a page.
    i see that the only place where kubrickbg.jpg is specified is in the header.php in this bit of code


    <style type="text/css" media="screen">
    <?php
    // Checks to see whether it needs a sidebar or not
    if ( !$withcomments && !is_single() ) {
    ?>
    #page { background: url("<?php bloginfo('stylesheet_directory'); ?>/images/kubrickbg.jpg") repeat-y top; border: none; }
    <?php } else { // No sidebar ?>
    #page { background: url("<?php bloginfo('stylesheet_directory'); ?>/images/kubrickbgwide.jpg") repeat-y top; border: none; }
    <?php } ?>
    </style>

    so i'm guessing i need an if statement somewhere in there to check which template is being used and switch the bg images but have no idea how to implement this

    i'm hoping this is relatively simple and there is a generous person out there to help this clueless php newbie

    thanks

    leeland

  2. David Yeiser
    Member
    Posted 7 years ago #

    Try adding this to your code/markup:


    <style type="text/css" media="screen">
    <?php
    // Checks to see whether it needs a sidebar or not
    if ( !$withcomments && !is_single() ) {
    ?>
    #page { background: url("<?php bloginfo('stylesheet_directory'); ?>/images/
    <?php if(is_page("2")){echo 'yourcustomimage.jpg';} else { echo 'kubrickbg.jpg';} ?>") repeat-y top; border: none; }
    <?php } else { // No sidebar ?>
    #page { background: url("<?php bloginfo('stylesheet_directory'); ?>/images/
    <?php if(is_page("2")){echo 'yourcustomimagewide.jpg';} else { echo 'kubrickbgwide.jpg';} ?>") repeat-y top; border: none; }
    <?php } ?>
    </style>

    The number in is_page() is your page id number. The two images would be whatever your images are named. If you only have one image then replace whichever one it is and just delete the bolded code for the other. Let me know if this works, I didn't have any way to test it.

    Also, you can read more about WP conditional tags here:
    http://codex.wordpress.org/Conditional_Tags#Introductiion

  3. leeland
    Member
    Posted 7 years ago #

    hi davedotcom
    thanks for that, putting in a specific page id number certainly does successfully change the background image for the specified page
    and i'll start reading the conditional tags intro right now
    but...
    so the code would work with any number of pages, i'm wondering if rather than hard coding in every id number there's a way of sending the header some other identifier associated with the assigned custom page template, which is the code for page.php with a template name added at the top.
    does this approach make sense?


    <?php
    /*
    Template Name: yellowtemplate
    */
    ?>
    //maybe here add a yellow identifier to send to the header?
    <?php get_header(); ?>
    <div id="content" class="narrowcolumn">
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <div class="post" id="post-<?php the_ID(); ?>">
    <h2><?php the_title(); ?></h2>
    <div class="entry">
    <?php the_content('<p class="serif">Read the rest of this page &raquo;</p>'); ?>
    <?php link_pages('<p><strong>Pages:</strong> ', '</p>', 'number'); ?>
    </div>
    </div>
    <?php endwhile; endif; ?>
    <?php edit_post_link('Edit this entry.', '<p>', '</p>'); ?>
    </div>
    <?php get_sidebar(); ?>
    <?php get_footer(); ?>

  4. leeland
    Member
    Posted 7 years ago #

    hi again
    i see from the link you sent davedotcom that i can use the post slug as an identifier in the if(is_page("slug") and this seems to work just fine, i can have a bunch different page background colors, each asociated with a slug name, perfect.
    thanks for the pointer.
    i'm just wondering if using the slug this way could be a problem later on?

  5. leeland
    Member
    Posted 7 years ago #

    hi
    me again
    i have found a problem with the approach of using a post slug to identify which bg image to use in a page, namely that i can't use the same slug twice. wordpress appends a hyphen and number, this kind of breaks the usefulness of this approach.

    any ideas to get around this?

    my thoughts are to have a wildcard in the code to ignore the hyphen and number, like

    ?>/images/<?php if(is_page('yellow'
    &&wildcardHere?)){echo 'kubrickbgYELLOW.jpg';} else

    or to go with the custom page template approach i outlined in a previous post (which i have no idea how to do)

    any thoughts anybody?
    thanks

  6. moshu
    Member
    Posted 7 years ago #

    With a differently designed theme you could have created different Page templates for your different Pages. I don't really care to modify the default, so don't ask me how to do it there.

  7. Cobalto
    Member
    Posted 7 years ago #

    why you don't change the original image to your edited imagem?

Topic Closed

This topic has been closed to new replies.

About this Topic