我有一个编辑过的Supersized ...我已经添加了关于wp的照片循环代码....
所以我原来就是这样:
slides : [
{image : 'http://buildinternet.s3.amazonaws.com/projects/supersized/3.2/slides/shaden-2.jpg', title : 'Image Credit: Brooke Shaden', thumb : 'http://buildinternet.s3.amazonaws.com/projects/supersized/3.2/thumbs/shaden-2.jpg', url : 'http://www.nonsensesociety.com/2011/06/brooke-shaden/'},
{image : 'http://buildinternet.s3.amazonaws.com/projects/supersized/3.2/slides/shaden-3.jpg', title : 'Image Credit: Brooke Shaden', thumb : 'http://buildinternet.s3.amazonaws.com/projects/supersized/3.2/thumbs/shaden-3.jpg', url : 'http://www.nonsensesociety.com/2011/06/brooke-shaden/'}
],
我从wp编辑了循环库:
slides : [
<?php query_posts('cat=46'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php
$thumb = get_post_meta($post->ID,'_thumbnail_id',false);
$thumb = wp_get_attachment_image_src($thumb[0], false);
$thumb = $thumb[0];
if ( has_post_thumbnail() ) { ?>
{image : '<?php echo $thumb; ?>'},
<?php } ?>
<?php endwhile; else: ?>
<?php endif; ?>
<?php wp_reset_query(); ?>
],
它适用于Chrome,Firefox等...
但我在IE 8 - 7和Firefox旧版本上发出此警报的问题:
消息:'slides [...]。url'为null或不是对象
行:23
Char:3
代码:0
URI:supersized.3.0.js
我听说真正的问题是最后一个逗号(你可以看到这篇文章的第一段代码,没有......而且它完美无缺。
所以我想解决删除编辑幻灯片中的最后一个逗号...'因为它在一个一个的图像重复纪念,它导致这个问题,即... 我怎么能删除这最后一个逗号?
答案 0 :(得分:1)
为什么你不断进出PHP?这非常低效......
slides : [
<?php
query_posts('cat=46');
if ( have_posts() ) {
$post_array = Array();
while ( have_posts() ) {
the_post();
$thumb = get_post_meta($post->ID,'_thumbnail_id',false);
$thumb = wp_get_attachment_image_src($thumb[0], false);
$thumb = $thumb[0];
if ( has_post_thumbnail() ) {
$post_array[] = "{image : '".$thumb."'}";
}
}
echo implode(",",$post_array);
}
wp_reset_query();
?>
],
答案 1 :(得分:0)
你确定问题是关于最后一个逗号吗?如果是,您需要将所有图像保存在变量中,在循环结束时删除最后一个逗号并打印结果:
<?php $string = ''; ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php
$thumb = get_post_meta($post->ID,'_thumbnail_id',false);
$thumb = wp_get_attachment_image_src($thumb[0], false);
$thumb = $thumb[0];
if ( has_post_thumbnail() ) { ?>
<?php $string.= '{image : '.$thumb.'},';
<?php } ?>
<?php endwhile; ?>
<?php echo substr($string, -1); ?>
答案 2 :(得分:0)
3个解决方案:
之一:
<?php if ( have_posts() ) : $i=0; while ( have_posts() ) : the_post(); ?>
<?php
$thumb = get_post_meta($post->ID,'_thumbnail_id',false);
$thumb = wp_get_attachment_image_src($thumb[0], false);
$thumb = $thumb[0];
if ( has_post_thumbnail() ) { ?>
<?=($i>0?',':'')?>{image : '<?php echo $thumb; ?>'}
<?php } $i++;?>
2:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php
$thumb = get_post_meta($post->ID,'_thumbnail_id',false);
$thumb = wp_get_attachment_image_src($thumb[0], false);
$thumb = $thumb[0];
if ( has_post_thumbnail() ) { ?>
$string[]="{image : '<?php echo $thumb; ?>'}";
<?php } if (!empty($string)) implode(",",$string);
树:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php
$thumb = get_post_meta($post->ID,'_thumbnail_id',false);
$thumb = wp_get_attachment_image_src($thumb[0], false);
$thumb = $thumb[0];
if ( has_post_thumbnail() ) { ?>
$string.="{image : '<?php echo $thumb; ?>'}";
<?php } $lenght=strlen($string)-2;
echo substr($string,0,$lenght);
对于我的观点,第二种解决方案是最干净的。
答案 3 :(得分:0)
为什么不使用json
来构建幻灯片数组
<?php
$slide_arr = array ();
query_posts('cat=46');
if ( have_posts() ) :
while ( have_posts() ) : the_post();
$thumb = get_post_meta($post->ID,'_thumbnail_id',false);
$thumb = wp_get_attachment_image_src($thumb[0], false);
$thumb = $thumb[0];
if ( has_post_thumbnail() ) {
$slideObj = new stdClass;
$slideObj->image = $thumb;
$slide_arr[] = $slideObj;
}
endwhile;
else:
endif;
wp_reset_query();
$slide_json = json_encode($slide_arr);
?>
var slide_json = '<?php echo $slide_json; ?>';
var slide_arr = eval('(' + slide_json + ')');
// js code ...
slides : slide_arr,
答案 4 :(得分:-2)
在JS对象数组中有一个尾随逗号是有效的,所以逗号不是你的问题。抛出此错误是因为您尚未设置幻灯片对象的URL属性。这是您当前输出的JSON字符串:
{image : 'http://buildinternet.s3.amazonaws.com/projects/supersized/3.2/slides/shaden-2.jpg'}
但你需要像这样的幻灯片的完整对象:
{image : 'http://buildinternet.s3.amazonaws.com/projects/supersized/3.2/slides/shaden-2.jpg', title: 'YOUR TITLE HERE', thumb: 'SOME IMAGE PATH GOES HERE', url: 'SOME URL PATH GOES HERE'}
更新:
人们似乎认为逗号存在某种问题。我不认为这是主要问题。它可能会导致问题(我不认为会这样)但除此之外,这些人的代码将永远无法解决他在他的问题中注意到的错误。我直接去了超大尺寸来源,向人们展示问题所在。
var imageLink = (options.slides[options.slides.length - 1].url) ? "href='" + options.slides[options.slides.length - 1].url + "'" : "";
确实如此。在第23行,正如他的错误消息所说的那样。该脚本正在尝试访问每个幻灯片对象的URL属性。但他没有设置URL属性。所以它总是会抛出用户认为他正在犯的错误。