从文件夹中选择随机图像,而不是相同的默认占位符图像


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

我想更改一些 php 代码以从指定目录中选择随机图像,而不是当前选择的相同默认图像。这是当前选择默认回退映像的代码段 - 如果没有可用的映像:

 <?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 从文件夹中拉取随机图像

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

这似乎可以做我想做的事,但我不确定如何将它(或在哪里)合并到我提供的代码中(没有 php 经验,但试图学习)。

谁能帮我?

亲切问候

梅尔

假设默认图像的链接是:/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>";
}

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