javascript - 在产品类别页面中显示随机图像
问题描述
我正在尝试在产品类别页面中显示随机图像/视频。每个类别页面都会显示自己的一组图像。
我以典型的菜鸟方式通过在每个产品类别页面中添加各自的图像集来做到这一点。有没有一种方法可以在functions.php中使用钩子来方便维护?
var total_images = 7;
var image1 = document.getElementById('banner1');
var image2 = document.getElementById('banner2');
var image3 = document.getElementById('banner3');
var random_numbers = [];
var random_number;
var random_img = [];
random_img[0] = '<a href="banner1.jpeg"><img src="banner1.jpeg"></a>';
random_img[1] = '<a href="banner2.jpeg"><img src="banner2.jpeg"></a>';
random_img[2] = '<a href="banner3.jpeg"><img src="banner3.jpeg"></a>';
random_img[3] = '<a href="banner4.jpeg"><img src="banner4.jpeg"></a>';
random_img[4] = '<a href="banner5.jpeg"><img src="banner5.jpeg"></a>';
random_img[5] = '<a href="banner6.jpeg"><img src="banner6.jpeg"></a>';
random_img[6] = '<a href="banner7.jpeg"><img src="banner7.jpeg"></a>';
while(random_numbers.length < 3){
random_number = Math.floor((Math.random() * total_images));
if(random_numbers.indexOf(random_number) < 0){
random_numbers.push(random_number);
}
}
image1.innerHTML = random_img[random_numbers[0]];
image2.innerHTML = random_img[random_numbers[1]];
image3.innerHTML = random_img[random_numbers[2]];
解决方案
我过去开发过类似的东西,但不是在 javascript 中,它都是 php 代码。我在带有 ACF 的类别中添加了一个新的横幅字段(只有一个,你会有很多),然后在类别页面上我会显示该横幅,或者递归地显示父亲的横幅,直到找到一个。您将有多个图像字段,并且您会随机提取一个,也许它对您有用。
无论如何,要使用的钩子是:woocommerce_before_main_content 操作。
add_action('woocommerce_before_main_content','bannertop');
function bannertop() {recursebanner('banner_top','bannertop');}
function recursebanner($type,$class) {
if ( is_tax( 'product_cat' ) ) {
$term = get_queried_object();
$banner = get_field('banner_top', $term);
if ($banner) {
echo '<div class="'.$class.'">';
echo $banner;
echo '</div>';
} else {
// no banner defined, parse ancestors
$cat_ancestors = get_ancestors( $term->term_id, 'product_cat' );
foreach ($cat_ancestors as $cat_ancestor) {
$termancestor = get_term($cat_ancestor);
$banner = get_field($type, $termancestor);
if ($banner) {
echo '<div class="'.$class.'">';
echo $banner;
echo '</div>';
break;
}
}
}
}
}
如果您想改用 javascript,则必须将其添加到子主题的 js 文件中,并调用脚本,例如:
$ (function () {
// your code
});
推荐阅读
- python-3.x - 如何使用 groupby 和重新采样的数据创建一周中的几天的热图
- python - 相同的 python 解释器,但 json_set 仅不适用于 Visual Studio Code,适用于其他任何地方
- cisco - 在 IOS XR 中创建 show CLI
- android - 如何在 Room 中获取静态数据?主线程无法访问数据库
- swift - 如何在 Swift 中迭代 UIImageView 并为每个元素分配 UIImage?
- javascript - React - 使用表单、上下文和 firebase
- server - 如何从 rust 的 TCPStream 中提取获取消息?
- python - 使用python进行数据转换
- python - 与远程桌面连接时在 Raspberry Pi 上播放本地音频
- amazon-web-services - 配置成功部署 ecs 的通知