Ask your WordPress questions! Pay money and get answers fast! Comodo Trusted Site Seal
Official PayPal Seal

Image fader in header WordPress

  • SOLVED

I'm using a variation of Chris Coyier's Anything Slider (http://css-tricks.com/examples/AnythingSlider/) called Anything Fader (http://css-tricks.com/examples/AnythingFader/) with a few navigation tweaks.

For reasons I can't figure out only the 2nd image in the photos set shows up. No matter which navigation link with in the fader is clicked, it'll only display the 2nd image.

Here is the header.php that contains the fader

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>

<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />

<title><?php bloginfo('name'); ?> <?php if ( is_single() ) { ?> &raquo; Blog Archive <?php } ?> <?php wp_title(); ?></title>

<link rel="stylesheet" href="<?php bloginfo('stylesheet_directory'); ?>/reset.css" type="text/css" media="screen" />
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
<link rel="stylesheet" href="<?php bloginfo('stylesheet_directory'); ?>/fader.css" type="text/css" media="screen" />

<!--[if IE]><link rel="stylesheet" href="<?php bloginfo('stylesheet_directory'); ?>/ie.css" type="text/css" media="screen" /><![endif]-->

<link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>" />
<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />



<?php wp_enqueue_script("jquery"); ?>

<?php wp_head(); ?>
<script type="text/javascript" src="<?php bloginfo("template_url"); ?>/js/jquery_002.js"></script>
<script type="text/javascript" src="<?php bloginfo("template_url"); ?>/js/jquery.anythingfader.js"></script>
<script type="text/javascript">

function formatText(index, panel) {
return index + "";
}

$(function () {

$('.anythingFader').anythingFader({
autoPlay: true, // This turns off the entire FUNCTIONALY, not just if it starts running or not.
delay: 5000, // How long between slide transitions in AutoPlay mode
startStopped: true, // If autoPlay is on, this can force it to start stopped
animationTime: 500, // How long the slide transition takes
hashTags: true, // Should links change the hashtag in the URL?
buildNavigation: true, // If true, builds and list of anchor links to link to each slide
pauseOnHover: true, // If true, and autoPlay is enabled, the show will pause on hover
startText: "Start", // Start text
stopText: "Stop", // Stop text
navigationFormatter: formatText // Details at the top of the file on this use (advanced use)
});

$("#slide-jump").click(function(){
$('.anythingFader').anythingFader(6);
});

});
</script>

</head>

<body>

<div id="wrapper">

<div id="header">
<div id="logo">
<h1><a href="<?php echo get_option('home'); ?>"><?php bloginfo('name'); ?></a></h1>
<h2><?php bloginfo('description'); ?></h2>
</div>
<div id="nav">
<?php if ( !function_exists('dynamic_sidebar')
|| !dynamic_sidebar('Top Navigation') ) : ?>
<ul>
<?php wp_list_pages('title_li='); ?>
</ul>
<?php endif; ?>
</div>
</div>

<div id="blurb">
<div class="anythingFader">

<div style="overflow: hidden; opacity: 1;" class="fader">
<ul>

<li class="cloned">
<img src="<?php bloginfo("template_url"); ?>/images/001.jpg" alt="Cherokee South Plaza 1" />
</li>

<li class="cloned">
<img src="<?php bloginfo("template_url"); ?>/images/002.jpg" alt="Cherokee South Plaza 2" />
</li>

</ul>
</div>


</div>

</div>


And here is the jquery that powers the fader

/*
anythingFader v1.0

By Chris Coyier: http://css-tricks.com

To use the navigationFormatter function, you must have a function that
accepts two paramaters, and returns a string of HTML text.

index = integer index (1 based);
panel = jQuery wrapped LI item this tab references
@return = Must return a string of HTML/Text

navigationFormatter: function(index, panel){
return index + " Panel"; // This would have each tab with the text 'X Panel' where X = index
}
*/

(function($){

$.anythingFader = function(el, options){
// To avoid scope issues, use 'base' instead of 'this'
// to reference this class from internal events and functions.
var base = this;

// Access to jQuery and DOM versions of element
base.$el = $(el);
base.el = el;

// Set up a few defaults
base.currentPage = 1;
base.timer = null;
base.playing = false;

// Add a reverse reference to the DOM object
base.$el.data("AnythingFader", base);

base.init = function(){
base.options = $.extend({},$.anythingFader.defaults, options);

// Cache existing DOM elements for later
base.$wrapper = base.$el.find('> div').css('overflow', 'hidden');
base.$slider = base.$wrapper.find('> ul');
base.$items = base.$slider.find('> li');
base.$single = base.$items.filter(':first');

// Build the navigation if needed
if(base.options.buildNavigation) base.buildNavigation();

// Get the details
base.singleWidth = base.$single.outerWidth();
base.pages = base.$items.length;

// Top and tail the list with 'visible' number of items, top has the last section, and tail has the first
// This supports the "infinite" scrolling
base.$items.filter(':first').before(base.$items.filter(':last').clone().addClass('cloned'));
base.$items.filter(':last' ).after(base.$items.filter(':first').clone().addClass('cloned'));

// We just added two items, time to re-cache the list
base.$items = base.$slider.find('> li'); // reselect

// Setup our forward/backward navigation
base.buildNextBackButtons();

// If autoPlay functionality is included, then initialize the settings
if(base.options.autoPlay) {
base.playing = !base.options.startStopped; // Sets the playing variable to false if startStopped is true
base.buildAutoPlay();
};

// If pauseOnHover then add hover effects
if(base.options.pauseOnHover) {
base.$el.hover(function(){
base.clearTimer();
}, function(){
base.startStop(base.playing);
});
}

// If a hash can not be used to trigger the plugin, then go to page 1
if((base.options.hashTags == true && !base.gotoHash()) || base.options.hashTags == false){
base.setCurrentPage(1);
};
};

base.gotoPage = function(page, autoplay) {
// When autoplay isn't passed, we stop the timer
if(autoplay !== true) autoplay = false;
if(!autoplay) base.startStop(false);

if(typeof(page) == "undefined" || page == null) {
page = 1;
base.setCurrentPage(1);
};

// Just check for bounds
if(page > base.pages + 1) page = base.pages;
if(page < 0 ) page = 1;

var dir = page < base.currentPage ? -1 : 1,
n = Math.abs(base.currentPage - page),
left = base.singleWidth * dir * n;

base.$wrapper.filter(':not(:animated)').animate({
opacity: '0'
}, base.options.animationTime, base.options.easing, function () {
if (page == 0) {
base.$wrapper.scrollLeft(base.singleWidth * base.pages);
page = base.pages;
} else if (page > base.pages) {
base.$wrapper.scrollLeft(base.singleWidth);
// reset back to start position
page = 1;
};
base.setCurrentPage(page);

});

base.$wrapper.animate({
opacity: '1'
}, base.options.animationTime, base.options.easing);
};

base.setCurrentPage = function(page, move){
// Set visual
if(base.options.buildNavigation){
base.$nav.find('.cur').removeClass('cur');
$(base.$navLinks[page - 1]).addClass('cur');
};

// Only change left if move does not equal false
if(move !== false) base.$wrapper.scrollLeft(base.singleWidth * page);

// Update local variable
base.currentPage = page;
};

base.goForward = function(autoplay){
if(autoplay !== true) autoplay = false;
base.gotoPage(base.currentPage + 1, autoplay);
};

base.goBack = function(){
base.gotoPage(base.currentPage - 1);
};

// This method tries to find a hash that matches panel-X
// If found, it tries to find a matching item
// If that is found as well, then that item starts visible
base.gotoHash = function(){
if(/^#?panel-\d+$/.test(window.location.hash)){
var index = parseInt(window.location.hash.substr(7));
var $item = base.$items.filter(':eq(' + index + ')');
if($item.length != 0){
base.setCurrentPage(index);
return true;
};
};
return false; // A item wasn't found;
};

// Creates the numbered navigation links
base.buildNavigation = function(){
base.$nav = $("<div id='thumbNav'></div>").appendTo(base.$el);
base.$items.each(function(i,el){
var index = i + 1;
var $a = $("<a href='#'></a>");

// If a formatter function is present, use it
if( typeof(base.options.navigationFormatter) == "function"){
$a.html(base.options.navigationFormatter(index, $(this)));
} else {
$a.text(index);
}
$a.click(function(e){
base.gotoPage(index);

if (base.options.hashTags)
base.setHash('panel-' + index);

// console.log("click test"); passed

e.preventDefault();
});
base.$nav.append($a);
});
base.$navLinks = base.$nav.find('> a');
};


// Creates the Forward/Backward buttons
base.buildNextBackButtons = function(){
var $forward = $('<a class="arrow forward">&gt;</a>'),
$back = $('<a class="arrow back">&lt;</a>');

// Bind to the forward and back buttons
$back.click(function(e){
base.goBack();
e.preventDefault();
});

$forward.click(function(e){
base.goForward();
e.preventDefault();
});

// Append elements to page
base.$wrapper.after($back).after($forward);
};

// Creates the Start/Stop button
base.buildAutoPlay = function(){

base.$startStop = $("<a href='#' id='start-stop'></a>").html(base.playing ? base.options.stopText : base.options.startText);
base.$el.append(base.$startStop);
base.$startStop.click(function(e){
base.startStop(!base.playing);
e.preventDefault();
});

// Use the same setting, but trigger the start;
base.startStop(base.playing);
};

// Handles stopping and playing the slideshow
// Pass startStop(false) to stop and startStop(true) to play
base.startStop = function(playing){
if(playing !== true) playing = false; // Default if not supplied is false

// Update variable
base.playing = playing;

// Toggle playing and text
if(base.options.autoPlay) base.$startStop.toggleClass("playing", playing).html( playing ? base.options.stopText : base.options.startText );

if(playing){
base.clearTimer(); // Just in case this was triggered twice in a row
base.timer = window.setInterval(function(){
base.goForward(true);
}, base.options.delay);
} else {
base.clearTimer();
};
};

base.clearTimer = function(){
// Clear the timer only if it is set
if(base.timer) window.clearInterval(base.timer);
};

// Taken from AJAXY jquery.history Plugin
base.setHash = function ( hash ) {
// Write hash
if ( typeof window.location.hash !== 'undefined' ) {
if ( window.location.hash !== hash ) {
window.location.hash = hash;
};
} else if ( location.hash !== hash ) {
location.hash = hash;
};

// Done
return hash;
};
// <-- End AJAXY code


// Trigger the initialization
base.init();
};


$.anythingFader.defaults = {
easing: "swing", // Anything other than "linear" or "swing" requires the easing plugin
autoPlay: true, // This turns off the entire FUNCTIONALY, not just if it starts running or not
startStopped: false, // If autoPlay is on, this can force it to start stopped
delay: 3000, // How long between slide transitions in AutoPlay mode
animationTime: 600, // How long the slide transition takes
hashTags: true, // Should links change the hashtag in the URL?
buildNavigation: true, // If true, builds and list of anchor links to link to each slide
pauseOnHover: true, // If true, and autoPlay is enabled, the show will pause on hover
startText: "Start", // Start text
stopText: "Stop", // Stop text
navigationFormatter: null // Details at the top of the file on this use (advanced use)
};


$.fn.anythingFader = function(options){
if(typeof(options) == "object"){
return this.each(function(i){
(new $.anythingFader(this, options));

// This plugin supports multiple instances, but only one can support hash-tag support
// This disables hash-tags on all items but the first one
options.hashTags = false;
});
} else if (typeof(options) == "number") {

return this.each(function(i){
var anySlide = $(this).data('AnythingFader');
if(anySlide){
anySlide.gotoPage(options);
}
});
}
};


})(jQuery);


Here is the site in question: http://identitypr.com/14962-tri-land-cherokee-south/

Answers (3)

2010-02-01

Japh answers:

It looks like your stylesheet has come unstuck a bit. Try replacing your fader.css file's contents with the following:
.anythingFader {
width: 900px;
height: 347px;
position: relative;
margin: 0 auto 15px;
}
.anythingFader .fader {
width: 900px;
overflow: auto;
height: 304px;
margin: 0;
position: absolute;
top: 0;
left: 0;
}
.anythingFader .fader ul {
width: 9999px;
list-style: none;
position: absolute;
top: 0;
left: 0;
margin: 0;
}
.anythingFader ul li {
display: block;
float: left;
padding: 0;
height: 304px;
width: 900px;
margin: 0;
}

#start-stop {
background: black repeat-x;
color: #ef4035;
padding: 2px 5px;
width: 40px;
text-align: center;
position: relative;
float: right;
font: 10px "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;
clear: none;
top: 0;
}
#start-stop .playing {
background-color: black;
}
#start-stop:hover {
background-image: none;
background-color: #ef4035;
}

#thumbNav {
position: relative;
top: 323px;
top: 256px;
right: 8px;
text-align: right;
width: 900px;
display: block;
}
#thumbNav a {
color: white;
font: 11px/18px "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;
display: inline-block;
padding: 2px 8px;
height: 18px;
margin: 5px;
background: #ef4035 repeat-x;
text-align: center;
border: 1px solid #ef4035;
}
#thumbNav a:hover {
background-image: none;
border: 1px solid red;
color: #ef4035;
background-color: white;
}
#thumbNav a.cur {
background: white;
color: #ef4035;
}

/*
Prevents
*/
.anythingFader .wrapper ul ul { position: static; margin: 0; background: none; overflow: visible; width: auto; border: 0; }
.anythingFader .wrapper ul ul li { float: none; height: auto; width: auto; background: none; }


I hope that helps :)

2010-02-01

Tony Geer answers:

The first thing you can always try is looking at the results of the [[LINK href="http://validator.w3.org/check?uri=http%3A%2F%2Fidentitypr.com%2F14962-tri-land-cherokee-south%2F&charset=%28detect+automatically%29&doctype=Inline&group=0"]]validation test[[/LINK]] that shows that there is an error:

<li>
<a href="http://identitypr.com/14962-tri-land-cherokee-south/contact">CONTACT</a>
</li></div>


At this point you've forgotten to close of the UL for your navigation. Try fixing that and see if it fixes it. I didn't see anything else obvious that could be causing the problem.

2010-02-02

Dan Fraticiu answers:

In case you haven't figure it out, could you provide a live preview. It would really make our work a lot easier if we saw the problem.

heers.


Dan Fraticiu comments:

Not necesarily a problem solve, but more of a friendly advice:

You include jQuery twice: the 1.3.2 vesion and the 1.4 version, a best it's bandwidth overkill at worst it's causing you problem (and many more to come).

So pick one and stick with it. (the AnythingFade demo page uses 1.4 version, but I'm pretty sure it will work just fine with 1.3.2)

So try removing this line
<script type="text/javascript" src="<?php bloginfo("template_url"); ?>/js/jquery_002.js"></script>