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

时间:2016-02-09 16:09:49

标签: php image random insert

我想更改一些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 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经验,但试图学习)。

任何人都可以帮助我吗?

亲切的问候

梅尔

2 个答案:

答案 0 :(得分:0)

让我们说默认图片的链接是:/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) { ?>
.......

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

答案 1 :(得分:0)

这不会回答您的问题,但这将有助于您学习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>";
}

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