0

我试图在 foreach 循环中使用以下结构来实现结果,在每两个图像之后它将重复整个结构。

我对可以使用的东西有一些基本知识,例如。计数器++;并且比 %2 但不知道语法以及如何将其用于我的代码。

<?php
    function dt_attached($postid=0, $size='thumbnail', $attributes='', $linksize='full', $count=-1) {
        if ($postid<1) $postid = get_the_ID();
        if ($images = get_children(array(
            'post_parent' => $postid,
            'post_type' => 'attachment',
            'numberposts' => $count,
            'post_mime_type' => 'image',)))

            foreach($images as $image) {
                $attachment=wp_get_attachment_image_src($image->ID, 'thumbnail');
                $small_image = wp_get_attachment_image_src($image->ID, 'midium');
                $big_image = wp_get_attachment_image_src($image->ID, 'full');
                ?>

                <div class="mainrow">

                    <div class="block">
                        <a href='<?php echo $big_image[0]; ?>' class='cloud-zoom-gallery' title='Thumbnail 1' rel="useZoom: 'zoom1', smallImage: '<?php echo $small_image[0]; ?>' ">
                            <img src="<?php echo $attachment[0]; ?>" <?php echo $attributes; ?> />
                        </a>
                    </div>

                    <!--[I want to get two images in mainrow]-->
                    <div class="block">
                        <a href='<?php echo $big_image[0]; ?>' class='cloud-zoom-gallery' title='Thumbnail 1' rel="useZoom: 'zoom1', smallImage: '<?php echo $small_image[0]; ?>' ">
                            <img src="<?php echo $attachment[0]; ?>" <?php echo $attributes; ?> />
                        </a>
                    </div>

                </div>

                <?php //the_attachment_link($image->ID, false, true, false); ?>
        <?php }
    }
?>

所以我想要的是,如果有两个以上的图像,它将重复整个 html 结构。非常感谢你的帮助

4

1 回答 1

2

我从您的评论中收集到的是,您希望每行显示两个图像,如果有一个额外的图像,则在最后一行显示一个占位符。

您所需要的只是计算有多少图像,以及它是偶数还是奇数。然后,一旦你知道你在最后一张图像(使用递增计数器),你添加占位符:

您的代码不做的是在一行中放置两个图像。为此,我们还需要取%计数器的模 ( )。

<?php
$counter = 0;
$imgCount = count($images);

foreach ($images as $image) {
    $attachment  = wp_get_attachment_image_src($image->ID, 'thumbnail');
    $small_image = wp_get_attachment_image_src($image->ID, 'midium');
    $big_image   = wp_get_attachment_image_src($image->ID, 'full');

    if ($counter % 2 == 0): ?>
    <div class="mainrow">
    <?php endif; ?>

        <div class="block">
            <a href='<?php echo $big_image[0]; ?>' class='cloud-zoom-gallery' title='Thumbnail 1' rel="useZoom: 'zoom1', smallImage: '<?php echo $small_image[0]; ?>' ">
                <img src="<?php echo $attachment[0]; ?>" <?php echo $attributes; ?> />
            </a>
        </div>

    <?php if ($counter++ % 2 == 1): ?>
    </div>
    <?php endif; ?>

    <?php //the_attachment_link($image->ID, false, true, false); ?>
<?php
}

// Since (if there are an odd number of images) the loop may not close the <div>, 
// we have to make sure it does.
if ($counter % 2 == 0) {
    ?>
    <!-- placeholder goes here -->
    </div>
<?php
}
于 2012-08-14T13:09:33.830 回答