Customizing views_cycle module for differently styled marquees

koes

During the theming process for the Emmys, specifically Emmys.com and Emmys.tv, we were presented with 2 differently styled marquees. On Emmys.com, the pager uses an image, while on Emmys.tv, the pager uses number with a background image along with next/previous buttons.

Since we use a multisite Drupal setup for the Emmys, we had to make some changes to the views_cycle module to accommodate the marquee designs.

First, we had to find a way to pass the theme name into views_cycle.js. To do that, in views_cycle.theme.inc, we added these lines:

$current_theme = variable_get('theme_default', 'none');
$settings['params']['theme'] = $current_theme;

By doing that, we can do something like this in views_cycle.js:

var theme = config.params.theme;
 
...
 
function makeAnchors(idx, slide) {
  if(theme == 'emmyscom') {
    return '<li><a href="#" id="marquee' + (idx+1) + '"><img src="/path/to/images/circle-marquee.png" alt="" />' + "</a></li>\n";
  } else {
    return '<li><a href="#" id="marquee' + (idx+1) + '">' + (idx+1) + "</a></li>\n";
  }
}
 
...

Another example of modification that we've made to views_cycle module was when we were presented with different sized marquees based on which page you are on, which got IE7 a little irritated.

To solve this problem, we followed closely to what we did on the Emmys project with a slight modification. Instead of the theme name, we needed to know which page a user is on. So in views_cycle.theme.inc:

$info = menu_get_item();
$current_page = $info['page-arguments']['0']->path;
$settings['params']['current_page'] = $current_page;

Then in views_cycle.js:

...
 
var curr_page = config.params.current_page;
 
...
 
cycler.children('li').each(function () {                                                            
  var li = $(this);
  if(curr_page == 'home') {
    if(jQuery.browser.msie && jQuery.browser.version >= "7.0") {
      tallest = 280;
    } else {
      tallest = 335;
    }
  } else {
    if(jQuery.browser.msie && jQuery.browser.version == "7.0") {
      tallest = 220;
    } else {
      tallest = 195;
    }
  }
}
 
...

Any comment or feedback is appreciated.

Comments

Hi I'm new to Drupal, but

Hi

I'm new to Drupal, but learning quickly! I need to create an effect like interlochen.org, using views cycle. can you give me a quick overview of how to implement the menus like that?

greatly appreciated!
Dan

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><blockquote>
  • Lines and paragraphs break automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <php>, <python>, <ruby>. Beside the tag style "<foo>" it is also possible to use "[foo]".

More information about formatting options