MetaSlider 图片轮播实现画中画

metaslider-pip

MetaSlider 是一款在 WordPress 中比较受欢迎的图片轮播插件,具有功能丰富,界面简洁,支持多主题选择,支持同时创建多套幻灯片,支持短码等优点。MetaSlider 配置管理方便,提供用户扩展接口,但不同的版本里没有提供画中画的功能,本篇文章就介绍一种方法加入该项功能。

首先到后台管理面板中进入 MetaSlider 的配置管理界面,新建一个幻灯片,加入相应的图片,选择幻灯片的类型,MetaSlider 目前有 flex、coin、responsive、nivo 四种类型,选中 “点” 选项(根据图片数量在幻灯片下方出现若干圆点按钮)。

然后在高级配置界面中的 CSS 类文本输入框中添加 mlslider-thumbnail,用来控制幻灯片画中画的显示样式。保存新建的幻灯片和配置。

第二步使用 MetaSlider 的程序接口加入画中画代码,放到主题的 functions.php 中,如下所示。

  1. //Metaslider 中加入画中画 javascript 代码
  2. function metaslider_responsive_js($javascript, $slider_id) {
  3. if($slider_id == 39) {/* 判断哪个幻灯片要加入画中画代码*/
  4. $javascript .= '
  5. $(".mlslider-thumbnail .rslides_tabs").after(\'<ul class="slider-thumbnail"></ul>\');
  6. $(".mlslider-thumbnail .rslides a").each(function(a){$(".mlslider-thumbnail ul.slider-thumbnail").append("<li id=stbn"+a+\'><a href="\'+$(this).attr("href")+\'"><img src="\'+$(this).children("img:first").attr("src")+\'"></a></li>\')});$(".mlslider-thumbnail .rslides_tabs a").hover(function(){var a=$(this).parent().index();$(".mlslider-thumbnail ul.slider-thumbnail li").eq(a).find("img").attr("style","transform: scale(1.1);opacity:1")},function(){var a=$(this).parent().index();$(".mlslider-thumbnail ul.slider-thumbnail li").eq(a).find("img").removeAttr("style")})
  7. ';
  8. }
  9. return $javascript;
  10. }
  11. add_filter('metaslider_responsive_slider_javascript', 'metaslider_responsive_js', 10, 2);

上面代码使用了 MetaSlider 提供的钩链 metaslider_responsive_slider_javascript,该钩链增加画中画代码到幻灯片初始化的执行流程中,画中画代码的执行时点是当幻灯片初始化完成后。另外,上面代码中的数字 39 是幻灯片的 ID,用来判断哪套幻灯片要增加画中画代码,这个 ID 在 MetaSlider 的后台配置界面中可以直接看到。

前面提到了 MetaSlider 有四种幻灯片类型,这里举例使用了 responsive 类型,如果要使用其它的类型就把代码中 responsive 改成其它类型的名子,别的部分都不变。

第三步要把幻灯片显示到网页上,可以使用短码的方式,配置界面可以查看到。

  1. <?php echo do_shortcode(''); ?>

把上面的代码放到网页中需要显示幻灯片的位置,比如主题的 header.php 中。

  1. ......
  2. </div><!-- .header-image -->
  3. <?php endif; // End header image check. ?>
  4. <?php echo do_shortcode(''); ?>
  5. </header><!-- .site-header -->
  6. <div id="content" class="site-content">

最后使用 CSS 给幻灯片加显示样式。

  1. header .mlslider-thumbnail .rslides img {
  2. height:300px;
  3. width:100%;
  4. object-fit:cover;
  5. }
  6. header .mlslider-thumbnail ul.rslides_tabs {
  7. margin-top:20px;
  8. bottom:-35px !important;
  9. background-color:black !important;
  10. }
  11. header .mlslider-thumbnail ul.slider-thumbnail img{
  12. position: absolute;
  13. bottom: 20px;
  14. left: 37%;
  15. z-index: 3;
  16. box-shadow: 0px 9px 22px rgb(0 0 0/25%);
  17. width:calc(25%);
  18. height:calc(35%);
  19. object-fit:cover;
  20. transition: all 0.5s ease-in-out;
  21. opacity:0;
  22. }
  23. ul.slider-thumbnail {
  24. list-style:none;
  25. }

发表评论

邮箱地址不会被公开。 必填项已用*标注