Select 来自文件夹的随机图像而不是相同的默认占位符图像

Select a random image from a folder instead of the same default placeholder image

我想将一些 php 代码更改为 select 来自指定目录的随机图像,而不是当前 select 的默认图像。这是目前 select 默认后备图像的代码片段 - 如果没有可用图像:

 <?php
 $postCover = '';

 if ($post->hasImage()) {
  $postCover = $post->getImage($photoSize);
 }

 if (!$post->hasImage() && $params->get('photo_legacy', true)) {
  $postCover = $post->getContentImage();
 }

 if (!$postCover && $params->get('show_photo_placeholder', false)) {
  $postCover = $post->getImage($photoSize, true);
 }
 ?>

 <?php if ($postCover) { ?>
 <div class="eb-mod-thumb<?php if ($photoAlignment) { echo " is-" . $photoAlignment; } ?> <?php if (isset($photoLayout->full) && $photoLayout->full) { echo "is-full"; } ?>">
  <?php if (isset($photoLayout->crop) && $photoLayout->crop) { ?>
            <a href="<?php echo $post->getPermalink();?>" class="eb-mod-image-cover"
                style="
                    background-image: url('<?php echo $postCover;?>');
                    <?php if (isset($photoLayout->full) && $photoLayout->full) { ?>
                    width: 100%;
                    <?php } else { ?>
                    width: <?php echo $photoLayout->width;?>px;
                    <?php } ?>
                    height: <?php echo $photoLayout->height;?>px;"
            ></a>
  <?php } else { ?>
            <a href="<?php echo $post->getPermalink();?>" class="eb-mod-image"
                style="
                    <?php if (isset($photoLayout->full) && $photoLayout->full) { ?>
                    width: 100%;
                    <?php } else { ?>
                    width: <?php echo (isset($photoLayout->width)) ? $photoLayout->width : '260';?>px;
                    <?php } ?>"
            >
                <img src="<?php echo $postCover;?>" alt="<?php echo $post->title;?>" />
            </a>
  <?php } ?>
 </div>
<?php } ?>

我认为我需要更改的是这一行:

<img src="<?php echo $postCover;?>" alt="<?php echo $post->title;?>" />

我在这里找到了这个解决方案:PHP pull random image from folder

<?php

$dir = "images/";
$images = scandir($dir);
$i = rand(2, sizeof($images)-1);
?> <img src="images/<?php echo $images[$i]; ?>" alt="" />

这似乎能够做我想做的事,但我不确定如何将它(或在何处)合并到我提供的代码中(没有 php 经验,但正在努力学习)。

谁能帮帮我?

亲切的问候

梅尔

假设您的默认图像 link 是:/path/to/default_imge.jpg

对于不喜欢为此造成大混乱的人来说,一个小的解决方案是:

.....

if (!$postCover && $params->get('show_photo_placeholder', false)) {
                $postCover = $post->getImage($photoSize, true);
            }
            ?>
// New Code Starts

$path='/path/to/default_imge.jpg';
if(stristr($postCover,$path) !==false){
$dir = "images/";
$images = scandir($dir);
$i = rand(2, sizeof($images)-1);
$postCover="images/".$images[$i];
}

// New Code Ends

            <?php if ($postCover) { ?>
.......

在这种情况下,您只需删除新代码即可返回正常行为。

这不会回答您的问题,但这会帮助您学习 PHP/HTML 您混淆 html 和 PHP 的方式使代码不可读。

代替这样做:

if ($var) { ?> <div>Some HTML</div> <?php }
else { ?> <div>Some other HTML</div> <?php } ?>

这样做:

if($var){
    echo "<div>Some HTML</div>";
}
else{
    echo "<div>Some other HTML</div>";
}

这是一个常见的初学者错误,这使得学习编码变得更加困难,因为它 "obfuscate" 您的代码。 这将使您和我们更容易理解您的代码:)