我想更改一些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经验,但试图学习)。
任何人都可以帮助我吗?
亲切的问候
梅尔
答案 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>";
}
这是一个常见的初学者错误,这使得学习编码变得更加困难,因为它会“混淆”您的代码。 这将使您和我们的代码更容易理解:)