2012-05-29 2 views
1

Я пытаюсь интегрировать supersize Jquery в Wordpress.jquery Supersize show IE error

Я знаю, что есть WP плагин там, но предпочел бы сделать это вручную, так как я использую пользовательские заголовки, пользовательские шаблоны и сообщения продукта сора-транзакции для слайдов (трудно интегрировать с плагин)

Все работает отлично, за исключением того, что я получаю сообщение об ошибке в IE из-за того, что конечная слайд-запятая не удаляется.

Ошибка IE является: Сообщение: 'base.options.slides [...] большой палец' равно нулю или не является объектом

=============== ====

EDIT: Я обновил код, приведенный ниже, чтобы отразить ответ NaOR - его предложение работало отлично (спасибо NaOR !!)

<!-- 
Supersized 3.2.7 - Fullscreen Background jQuery Plugin 
www.buildinternet.com/project/supersized 

By Sam Dunn/One Mighty Roar (www.onemightyroar.com) 
Released under MIT License/GPL License 

    Adapted for Wordpress (WP Supersized 3.0.2) by Benoit De Boeck/World in my Eyes (www.worldinmyeyes.be) 
-->  
    <script type="text/javascript"> 

var slides=[]; 

<?php $my_query = new WP_Query 
(array(
     'post_status' => 'publish', 
     'post_type' => 'wpsc-product', 
    //'numberposts' => 5, 
     'orderby'  => 'title', 
    'order'  => 'ASC', 
     // 'wpsc_product_category'=>'phones, laptops', // leave this out if you want to show all, or comma separate to specify categories 
    'showposts' => 50)); 

while($my_query->have_posts()) : $my_query->the_post(); ?> 

slides.push({image : '<?php echo wpsc_the_product_image(); ?>', title : '<div class="slidecaptioninside"><a href="<?php echo wpsc_the_product_permalink(); ?>"><?php echo wpsc_the_product_title(); ?></a> <br /><div class="slidedescription"><?php $excerpt = wpsc_the_product_description(); echo string_limit_words($excerpt,5)."...";?> <br />Priced from- <?php echo wpsc_the_product_price(); ?> - <a href="<?php echo wpsc_the_product_permalink(); ?>">find out more</a></div>', url : '<?php echo wpsc_the_product_permalink(); ?>'}); 

<?php endwhile; ?> 

jQuery(document).ready(function($) { 
      $.supersized({ 

       //Functionality 
       slideshow    : 1,  //Slideshow on/off 
       autoplay    : 1,  //Slideshow starts playing automatically 
       start_slide    : 1,  //Start slide (0 is random) 
       slide_interval   : 6000, //Length between transitions 
       random     : 0, 
       transition    : 1,  //0-None, 1-Fade, 2-Slide Top, 3-Slide Right, 4-Slide Bottom, 5-Slide Left, 6-Carousel Right, 7-Carousel Left 
       transition_speed  : 800, //Speed of transition 
       new_window    : 1,  //Image links open in new window/tab 
       pause_hover    : 0,  //Pause slideshow on hover 
       keyboard_nav   : 1,  //Keyboard navigation on/off 
       performance    : 1,  //0-Normal, 1-Hybrid speed/quality, 2-Optimizes image quality, 3-Optimizes transition speed // (Only works for Firefox/IE, not Webkit) 
       image_protect   : 1,  //Disables image dragging and right click with Javascript 
       image_path    : '<?php bloginfo('template_url'); ?>/supersized/img/', //Default image path 

       //Size & Position 
       min_width    : 0,  //Min width allowed (in pixels) 
       min_height    : 0,  //Min height allowed (in pixels) 
       vertical_center   : 1,  //Vertically center background 
       horizontal_center  : 1,  //Horizontally center background 
       fit_portrait   : 1,  //Portrait images will not exceed browser height 
       fit_landscape   : 0,  //Landscape images will not exceed browser width 

       //Components 
       //navigation    : 1,  //Slideshow controls on/off 
       thumbnail_navigation : 1,  //Thumbnail navigation 
       thumb_links    : 1, 
       slide_counter   : 1,  //Display slide numbers 
       slide_captions   : 1,  //Slide caption (Pull from "title" in slides array) 
       slides     : slides, 



       slide_links  : 'blank', 
       progress_bar : 1,       
       mouse_scrub  : 1            
      }); 
     }); 
    </script> 

ответ

2

Я не знаком с PHP, но вы можете подготовить массив слайдов перед инициализацией с избыточным значением:

var slides=[]; 

<?php while($my_query->have_posts()) : $my_query->the_post(); ?> 

slides.push({image : '<?php echo wpsc_the_product_image(); ?>', title : '<div class="slidecaptioninside"><a href="<?php echo wpsc_the_product_permalink(); ?>"><?php echo wpsc_the_product_title(); ?></a> <br /><div class="slidedescription"><?php $excerpt = wpsc_the_product_description(); echo string_limit_words($excerpt,5)."...";?> <br />Priced from- <?php echo wpsc_the_product_price(); ?> - <a href="<?php echo wpsc_the_product_permalink(); ?>">find out more</a></div>', url : '<?php echo wpsc_the_product_permalink(); ?>'}); 

<?php endwhile; ?> 

А потом ИНИЦИАЛИЗИРУЙТЕ суперсайзд:

$.supersized({ 
       .... 
       .... 
       .... 
       slides: slides, 
       .... 
       .... 
    }); 

Надежда это помогает.

Удачи!

+2

Спасибо за ваше предложение, но нет необходимости вызывать запрос до перенастройки. Что мне нужно сделать, это реализовать аргумент foreach, который будет игнорировать конечную запятую. Мой исходный код отлично работает во всех браузерах, кроме IE - так как сказать IE игнорировать/исключать окончательную запятую? – Sol

+1

@Sol: Конечная запятая является неправильным синтаксисом. Вы должны удалить его для обоснования javascript. Вы можете сделать оператор php «if», чтобы узнать, когда цикл не находится в последнем элементе, а затем добавить запятую. – Naor

+0

- Я реализовал ваш код, и он работает безупречно :-) Спасибо. Ответ принят :-) – Sol