在循环“for”循环时如何指定单个打印块?

时间:2015-11-23 19:57:55

标签: php wordpress

我有一个由页面模板中的图像创建的轮播。对于每个页面,模板将尝试遍历for并根据需要打印出图像。

我面临的问题是我需要几个部分:

1)如果退回的项目超过1个,请打印此或 2)只需打印一下这个项目。

我的代码:

<?php
    //Check for slider
    $slideCheck = get_post_meta($post->ID, 'slide1', $single = true);
    // if there's a slide
    if($slideCheck){ ?>
        <section id="myCarousel" class="carousel slide" data-ride="carousel">
            <ol class="carousel-indicators">
                <li data-target="#myCarousel" data-slide-to="0" class=""></li>
                <li data-target="#myCarousel" data-slide-to="1" class="active"></li>
                <li data-target="#myCarousel" data-slide-to="2"></li>
            </ol>
            <div class="carousel-inner">
                <?php
                    $max_slides = 10;
                    for ($i=1; $i<=$max_slides; $i++){
                        $key = 'slide' . $i;
                        $slide = get_post_meta($post->ID, $key, $single = true);
                        $slide_text = get_post_meta($post->ID, $key . '_label', $single = true);
                        if($slide){
                            $class = ($key == 'slide1') ? 'active' : '';
                    ?>
                        <div class="item <?php echo $class; ?>">
                            <img src="<?php echo $slide; ?>" class="slider-images" />
                            <div class="carousel-caption">
                                <h2><?php if($slide_text) { echo $slide_text; } ?></h2>
                            </div>
                        </div>
                        <?php } // end if
                    } // end for
                ?>
            </div>
            <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev">
                <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
                <span class="sr-only">Previous</span>
            </a>
            <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
                <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
                <span class="sr-only">Next</span>
            </a>
        </section>
    <?php } // end if
?>

部分内容如下:

1)它抓住post meta以查看是否有贴在帖子上的幻灯片 2)如果为true,则启动滑块
3)如果#2为真,我需要<section>部分打印一次 4)但是,如果有超过1张幻灯片,我需要下一个<ol>部分才能打印 5)如果#2为真,则<div class="carousel-inner">打印一次 6)然后for循环打印项目
7)接下来是</div>关闭#5的旋转木马内部 8)以下<a>代码我需要像上面的<ol>一样打印,只有当幻灯片超过1张时才需要。

我把它全部搞定了,但我知道必须有一个更清洁的方法来做到这一点。这是我的尝试:

if($slideCheck){ ?>
    <section id="myCarousel" class="carousel slide" data-ride="carousel">
            <?php
                $max_slides = 10;
                for ($i=1; $i<=$max_slides; $i++){
                    $key = 'slide' . $i;
                    $slide = get_post_meta($post->ID, $key, $single = true);
                    $slide_text = get_post_meta($post->ID, $key . '_label', $single = true);
                    if($slide){
                        $class = ($key == 'slide1') ? 'active' : '';
                        if($i>1){
            ?>
                            <ol class="carousel-indicators">
                                <li data-target="#myCarousel" data-slide-to="0" class=""></li>
                                <li data-target="#myCarousel" data-slide-to="1" class="active"></li>
                                <li data-target="#myCarousel" data-slide-to="2"></li>
                            </ol>
                        <?php } //endif $1>1
                            if($i=1){
                        ?>
                            <div class="carousel-inner">
                        <?php } //endif $i=1
                        ?>
                        <div class="item <?php echo $class; ?>">
                            <img src="<?php echo $slide; ?>" class="slider-images" />
                            <div class="carousel-caption">
                                <h2><?php if($slide_text) { echo $slide_text; } ?></h2>
                            </div>
                        </div>
                        <?php } //endif $1>1
                            if($i=1){
                        ?>
                            </div>
                        <?php } //endif $i=1
                            if($i=2){
                        ?>
                            <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev">
                                <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
                                <span class="sr-only">Previous</span>
                            </a>
                            <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
                                <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
                                <span class="sr-only">Next</span>
                            </a>
                        <?php } // endif
                    } // end if
                } // end for
            ?>
    </section>
<?php } // end if
?>

正如你所看到的,对于一堆if($i>1)等似乎非常复杂。必须有一个更清晰的方法和更好的方法来编写它。

0 个答案:

没有答案