我几天前提交了一个不同的问题。我取得了进步(感谢y'所有),但遇到了更多的障碍。
首先,网址为:http://rowlandwilliams.com/lepeep
代码应该做什么:
1)代码读取图像目录,寻找分配给页面的图像。如果找到图像pagename0.png(例如,catering0.png),它会将该图像打印到屏幕上。
2)如果找到多个图像(例如,menu1.png,menu2.png等),则会打印幻灯片。 (注意这些图像开始递增1而不是0。)
3)当它看不到分配了页面的图像时,它会继续运行。
有(3)菜单页面图像; (5)关于我们的图像; (1)餐饮形象。
代码无效的地方:
1)在“菜单”页面上,它首先打印关闭的DIV标签。然后它再次打印开始然后关闭标签。
2)在About Us页面上,它首先打印关闭DIV,不打印开场DIV。这让我感觉不舒服。
我已经对这件事情进行了数小时和数小时的故障排除,并且无法弄清楚发生了什么。帮助
<div class="page-inner">
<?php
$postname = $post->post_name;
if ($dir = opendir('/home/rowlandwilliams/public_html/lepeep/wp-content/themes/twentythirteen-child/images')) {
$images = array();
while (false !== ($file = readdir($dir))) {
if ($file != "." && $file != "..") {
$images[] = $file;
asort($images); // Cause images to appear in ascending order
}
}
closedir($dir);
}
$x = 1; // Set variable to be used in counting post img number
$current_iteration=0; // Set variable for case (below)
$last_iteration=count($images)-1; // Set variable for case last iteration for closing DIV tag
foreach($images as $image) {
$subimg = substr($image, 0, -4);
if ($subimg == $postname.$x) { // Check if img name (less .png) matches post name
if ($x == 1) { // If first pass, add opening DIV tag and set cycler to "active"
echo '<div class="cycler" id="page-cycler">';
$actstat = 'class="active"';
} else {
$actstat = '';
}
$x++;
?>
<img <?php echo $actstat; ?> src="<?php bloginfo('stylesheet_directory'); ?>/images/<?php echo $image; ?>" alt="Le Peep Houston Breakfast & Lunch Restaurant">
<?php } elseif ($subimg == $postname."0") { ?> // If a single image for page, checks to verify it uses "0" in filename
<div class="cycler" id="page-cycler">
<img <?php echo $actstat; ?> src="<?php bloginfo('stylesheet_directory'); ?>/images/<?php echo $image; ?>" alt="Le Peep Houston Breakfast & Lunch Restaurant">
<?php } ?>
<?php switch($current_iteration) { ?> // Switch allows for opening and closing statements/HTML
<?php case 0: ?> // Slot for opening statement, none used however (see semicolon below)
<?php ; // ?> No statement
<?php case $last_iteration: ?>
</div><!-- #page-cycler --> // Closing statement
<?php break; ?> // End switch
<?php } ?>
<?php $current_iteration++; ?>
<?php } ?>
<?php the_content(); ?>
</div><!-- #page-inner -->
答案 0 :(得分:0)
问题的一部分是每个break
后需要case
语句。否则,它将在打印脚本代码后失败,并在第一次迭代中打印结束语句。
改变
<?php ; // ?> No statement
到
<?php break; // ?> No statement
可能会删除不需要的结束标记。
在“关于我们”页面上,您只有一个图像,但它的文件名不是以0结尾,而是以1结尾。因此,应该打印开头div
的if语句将不会评估为true。
将其更改为
elseif ($subimg == $postname."1")
可能会奏效。