1

PHP はまったく新しいので、ページに 3 つのブログ エントリ、続いて 3 つの写真、さらに 3 つのブログ エントリなどを表示するようにしようとしています。

私は do while ループの使用を勧められましたが、それを機能させるのに苦労したり、理解するのに苦労したりして、CMS で foreach ループを使用することに慣れてきました。

これは、各ループを手動で明示的に追加した場合にのみ動作する私の元のコードでした!

   <?php  // Show 3 blog entries
$entries = $page->children("sort=-sort, limit=3");
$count = 0;

foreach ($entries as $entry) { 

$count++; 
$class = "blog_box"; 
if ($entry == $entries->last()) {$class .= " blog_box_last"; }
if ($entry == $entries->first()) {$class .= " blog_box_first"; }
if (0 == $count % 2) { $class .= " blog_box_even"; }
?>

<div class="<?php echo $class; ?>">

<div class="blog_text">

<h3><?php echo $entry->title; ?></h3>
<h6><?php echo $entry->entry_date; ?></h6>
<p><?php echo $entry->body; ?></p>

</div><!-- /.blog_text -->

<?php if ($entry->image) { 

$image = $entry->image->width(350);

?>

<img src="<?php echo $image->url; ?>" width="<?php echo $image->width; ?>" alt="<?php echo $entry->title; ?>" />

<?php } ?>

<div class="clear"></div><!-- /.clear -->

</div><!-- /.blog_box -->

<?php }

?>

// Show 3 blog images

<?php $blog_images = $page->get("image_uploads")->find("limit=3");
foreach ($blog_images as $img) { 
$b_img = $img->size(200,140); ?>
<img src="<?php echo $b_img->url; ?>" width="<?php echo $b_img->width; ?>" height="<?php echo $b_img->height; ?>" alt="<?php echo $b_img->description; ?>" class="small_frame" />
<?php } ?>

CMS 開発者は親切にもいくつかのコードを試してみましたが、うまく動作しませんでした:

    $entries = $page->children("sort=-sort");
$images = $page->get("/image_uploads/"); 
$cnt = 0;

do {
    $cnt++; 
    $entry = $entries->shift();
    if($entry) {
        // output 1 entry
    }

    if($cnt == 3) {
        while(++$cnt <= 6) {
            $image = $images->shift();
            if($image) {
                // output 1 image
            }
        }
        $cnt = 0;
    }

} while(count($entries) && count($images));

私はプロセスワイヤーを使用しています。

よろしくお願いします!

4

0 に答える 0