RiPro 主题增加网页弹幕提示

插件实现使用了一个基于 jq 的专业级网页弹幕插件 Jquery.barrager.js

Jquery.barrager.js

Jquery.barrager.js 是一款优雅的网页弹幕插件,支持显示图片,文字以及超链接。支持速度、高度、颜色、数量等自定义。

弹幕集成主题教程

在主题根目录下创建 server.php 文件,并上传到主题根目录下

<?php
/*!
 *@name     server.php 1
 *@project  jquery.barrager.js
 *@des      日主题弹幕插件
 *@author   Ernie
 *@url      https://www.xiaobaidaxue.com
 */
require_once($_SERVER['DOCUMENT_ROOT'] . '/wp-config.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/wp-includes/wp-db.php');
$list = $wpdb->get_results("SELECT * FROM $wppay_table_name ORDER BY create_time DESC limit 10");
$mode = intval($_GET['mode']);
$barrages = array();
foreach ($list as $value) {
  if ($value->post_id != 0) {
    $info = substr_replace(get_user_by('id', $value->user_id)->user_login, '**', '2') . " 刚刚下载了 " . mb_substr(get_the_title($value->post_id), 0, 8);
    $href = get_permalink($value->post_id);
  } else {
    $info = substr_replace(get_user_by('id', $value->user_id)->user_login, '**', '2') . " 刚刚开通了 VIP";
    $href = home_url('/user?action=vip');
  }
  $img = str_replace('http:', 'https:', get_user_meta($value->user_id)['photo'][0]);
  $new = array(
    'info'   => $info,
    'img'   => $img,
    'href'   => $href,
    'speed'   => 15,
    'color'  =>  '#000',
    'bottom'  => 70,
    'close'  => false
  );
  array_push($barrages, $new);
};
if ($mode === 1) {
  echo json_encode($barrages[array_rand($barrages)]);
} elseif ($mode === 2) {
  echo json_encode($barrages);
}
<?php
/*!
 *@name     server.php 2
 *@project  jquery.barrager.js
 *@des      RiPro 弹幕插件服务端
 *@author   Ernie
 *@url      https://www.xiaobaidaxue.com
*/
require_once($_SERVER['DOCUMENT_ROOT'] . '/wp-config.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/wp-includes/wp-db.php');
$list = $wpdb->get_results("SELECT * FROM $paylog_table_name WHERE status =1 ORDER BY pay_time DESC limit 10");
$mode = intval($_GET['mode']);
$barrages = array();
foreach ($list as $value) {
  $info = substr_replace(get_user_by('id', $value->user_id)->user_login, '**', '2') . " 刚刚下载了 " . mb_substr(get_the_title($value->post_id), 0, 8);
  $img = str_replace('http:', 'https:', get_user_meta($value->user_id)['user_custom_avatar'][0]);
  $href = get_permalink($value->post_id);
  $new = array(
    'info'   => $info,
    'img'   => $img,
    'href'   => $href,
    'speed'   => 15,
    'color'  =>  '#fff',
    'bottom'  => 70,
    'close'  => false
  );
  array_push($barrages, $new);
};
if ($mode === 1) {
  echo json_encode($barrages[array_rand($barrages)]);
} elseif ($mode === 2) {
  echo json_encode($barrages);
}

创建 jquery.barrager.js 文件,并上传到主题的 assets/js 文件下:

(function ($)
{
    $.fn.barrager = function (barrage)
    {
        barrage = $.extend({
            close : true, bottom : 0, max : 10, speed : 8, color : "#fff", old_ie_color : "#000000"
        },
        barrage || {});
        var time = new Date().getTime();
        var barrager_id = "barrage_" + time;
        var id = "#" + barrager_id;
        var div_barrager = $("<div class='barrage' id='" + barrager_id + "'></div>").appendTo($(this));
        var window_height = $(window).height() - 100;
        var this_height = (window_height > this.height()) ? this.height() : window_height;
        var window_width = $(window).width() + 500;
        var this_width = (window_width > this.width()) ? this.width() : window_width;
        var bottom = (barrage.bottom == 0) ? Math.floor(Math.random() * this_height + 40) : barrage.bottom;
        div_barrager.css("bottom", bottom + "px");
        div_barrager_box = $("<div class='barrage_box cl'></div>").appendTo(div_barrager);
        if (barrage.img)
        {
            div_barrager_box.append("<a class='portrait z' href='javascript:;'></a>");
            var img = $("<img src='' >").appendTo(id + " .barrage_box .portrait");
            img.attr("src", barrage.img)
        }
        div_barrager_box.append(" <div class='z p'></div>");
        if (barrage.close) {
            div_barrager_box.append(" <div class='close z'></div>")
        }
        var content = $("<a title='' href='' target='_blank'></a>").appendTo(id + " .barrage_box .p");
        content.attr({
            "href" : barrage.href, "id" : barrage.id
        }).empty().append(barrage.info);
        if (navigator.userAgent.indexOf("MSIE 6.0") > 0 || navigator.userAgent.indexOf("MSIE 7.0") > 0 || navigator.userAgent.indexOf("MSIE 8.0") > 0) {
            content.css("color", barrage.old_ie_color)
        }
        else {
            content.css("color", barrage.color)
        }
        var i = 0;
        div_barrager.css("margin-right", 0);
        $(id).animate({
            right : this_width
        },
        barrage.speed * 1000, function ()
        {
            $(id).remove()
        });
        div_barrager_box.mouseover(function ()
        {
            $(id).stop(true)
        });
        div_barrager_box.mouseout(function ()
        {
            $(id).animate({
                right : this_width
            },
            barrage.speed * 1000, function ()
            {
                $(id).remove()
            })
        });
        $(id + ".barrage .barrage_box .close").click(function ()
        {
            $(id).remove()
        })
    };
    $.fn.barrager.removeAll = function ()
    {
        $(".barrage").remove()
    }
})(<a href="https://umrhe.com/tag/jquery" title="更多关于 jQuery 的文章" target="_blank">jQuery</a>);
$.ajaxSettings.async = false;
$.get<a href="https://umrhe.com/tag/json" title="更多关于 JSON 的文章" target="_blank">JSON</a>("https://umrhe.com/wp-content/themes/ripro/server.php?mode=2", function (data)
{
    var looper_time = 5000;
    var items = data;
    var total = data.length;
    var run_once = true;
    var index = 0;
    barrager();
    function barrager()
    {
        if (run_once) {
            looper = setInterval(barrager, looper_time);
            run_once = false
        }
        $("body").barrager(items[index]);
        index++;
        if (index == total) {
            clearInterval(looper);
            return false;
        }
    }
});

记得将 js 文件中的(网址)和(主题名)改为自己的正确路径,别忘了网址的 http/https。

修改主题的 header.php 文件,引用刚刚创建的 js 文件,在主题</head>前插入代码:

<script type='text/javascript' src='https://umrhe.com/wp-content/themes/ripro/assets/js/jquery.barrager.js'></script>

在主题 style.css 文件里插入样式代码 :

	
.barrage{position: fixed;bottom:70px;right:-500px;display: inline-block;width: 500px;z-index: 99999}
.barrage_box{background-color: rgba(0,0,0,.5);padding-right: 8px; height: 40px;display: inline-block;border-radius: 25px;transition: all .3s;}
.barrage_box .portrait{ display: inline-block;margin-top: 4px; margin-left: 4px; width: 32px;height: 32px;border-radius: 50%;overflow: hidden;}
.barrage_box .portrait img{width: 100%;height: 100%;}
.barrage_box div.p a{ margin-right: 2px; font-size: 14px;color: #fff;line-height: 40px;margin-left: 18px; }
.barrage_box div.p a:hover{text-decoration: underline;}
.barrage_box .close{visibility: hidden;opacity: 0; text-align: center; width:25px;height: 25px;margin-left: 20px;border-radius: 50%;background:rgba(255,255,255,.1);margin-top:8px; background-image: url(close.png);}
.barrage_box:hover .close{visibility:visible;opacity: 1;}
.barrage_box .close a{display:block;}
.barrage_box .close .icon-close{font-size: 14px;color:rgba(255,255,255,.5);display: inline-block;margin-top: 5px; }
.barrage .z {float: left !important;}
.barrage  a{text-decoration:none;}
展开阅读更多
来源:小白大学
转载请注明出处。
何先生 » RiPro 主题增加网页弹幕提示
Loading...

发表评论

表情
图片 链接 代码

提供最优质的资源集合

立即查看 了解详情