我认为(希望)我的问题比我的措辞更简单,但这也是我在谷歌上空的原因。它与此类似,但我需要处理一些HTML并且有点不清楚:Random image display
在我的Wordpress安装的侧边栏中,我按此顺序有两个图像:
<a href="http://www.link1.tld"><img src="files/image1.jpg" border="0" /></a>
<a href="http://www.link2.tld"><img src="files/image2.jpg" border="0" /></a>
刷新页面时完成旋转此顺序的最简单方法是什么(这样订单将是image2 / image1)?下次刷新时,返回image1 / image2?
答案 0 :(得分:1)
要完成此操作,您需要在用户的cookie中存储视图计数器,然后根据该计数器显示:
session_start();
if(!isset($_SESSION['views'])) {
$_SESSION['views'] = 0;
}
else {
$_SESSION['views']++;
}
然后显示:
<?php if($_SESSION['views'] % 2 == 0): ?>
<a href="http://www.link1.tld"><img src="files/image1.jpg" border="0" /></a>
<? endif; ?>
<a href="http://www.link2.tld"><img src="files/image2.jpg" border="0" /></a>
<?php if($_SESSION['views'] % 2 == 1): ?>
<a href="http://www.link1.tld"><img src="files/image1.jpg" border="0" /></a>
<? endif; ?>
如果视图计数器是偶数,它将首先打印image1。如果它很奇怪,它会打印第二个。
将此缩放为两个以上的图像可以这样做:
// map of images to URLs
$images = array(
'image1.jpg' => 'http://www.link1.tld',
'image2.jpg' => 'http://www.link2.tld',
'image3.jpg' => 'http://www.link3.tld',
'image4.jpg' => 'http://www.link4.tld',
);
// reorder the list of images based on the current view count
$ordered = array_merge(array_slice($images, $_SESSION['views'] % count($images)), array_slice($images, 0, $_SESSION['views'] % count($images)));
然后显示只循环遍历有序列表:
<?php foreach($ordered as $image => $url): ?>
<a href="<?php echo $url; ?>"><img src="files/<?php echo $image; ?>" border="0" /></a>
<?php endforeach; ?>