EMLOG学院

下雪代码配合模板设置插件

摘要: 新年新气象,为你的emlog添加下雪...

新年新气象,为你的emlog添加下雪代码,同时再后台增加一个开关自由开启与关闭下雪模式是不是更好呢?

接下来小编就奇遇大神的模板设置插件为教大家怎样在后台添加开关。

首先需要下载模板设置插件,这里说明一下,奇遇大神的模板设置插件将是emlog模板开发的一个新的里程碑,以小编推测以后emlog的模板开发者应该都会把自己的模板和模板设置插件整合起来,所以不管大家有没有下载到需要此插件的模板都还是下载一下,不然你就要out了。

下载地址:http://www.emlog.net/plugin/144


下载完插件了再看这里:https://www.lantk.com/?post=100 这里是雪花的JS代码,现在不需要用,但是一会会用到。

这里先给大家普及一下php的if语句,也就是条件语句,详见:http://www.w3school.com.cn/php/php_if_else.asp

另外是模板设置插件的开发规则:https://github.com/Baiqiang/em_tpl_options/blob/master/tpl_dev.md


<?php if(): ?>   //if条件语句开始,if后面的括号中应当是条件。
                      //如果条件成立,则继续向下执行相应语句
<?php else: ?> //否则
                      //否则将执行这里的语句
<?php endif; ?>//最后,判断语句结束

了解这个判断语句后我们再来看模板设置插件: 在模板目录里放入options.php,内容格式如下即可,可以任意增加设置项,注意$options变量和

注释:

<?php

/*@support tpl_options*/
!defined('EMLOG_ROOT') && exit('access deined!');
$options = array(

//开启下雪代码
	'happy_new' => array(
		'type' => 'radio',
		'name' => '开启下雪代码',
		'values' => array(
            'yes' => '开启',
            'no' => '关闭'
        ),
		'default' => 'no',
	),
//开启下雪代码

);
上面的代码则是放在模板下的options.php文件中,如果没有可自行创建。

其中,happy_new是自定义的变量
type则是用来指定设置项的类型,这里指定的是“radio”,在奇遇的开发规则中代表单选框的意思,
也就是说当type=radio时后台的模板设置插件则添加一个单选框按钮。

name是名字就不多说了。
values将是为单选框指定的值,这里有两个值,一个是yes=开启,另一个是no=关闭。
default是默认值,也就是说后台在没有设置的时候它将默认显示no也就是关闭。

下面开始添加下雪代码,在emlog中为了方便管理我们把代码添加到footer.php底部文件中去

打开footer.php文件,在

</body>
</html>

这两个标签上面写一个if语句如下:


<?php if(_g('happy_new') == "yes"): ?>

<?php else: ?>

<?php endif; ?>

</body>
</html>

首先看看 if(_g('happy_new') == "yes") 大家可以看到括号中其实是 _g('happy_new') == "yes" 这样,其中 _g('happy_new') 则是模板设置插件的调用方法:插件提供简单方法_g($key) ,我们调用options.php中的 happy_new 变量的值,刚才说了它有两个值,一个是yes,一个是no,而_g('happy_new') == "yes" 这句话的意思则是 “当happy_new的值等于yes时”


再来看整句话

<?php if(_g('happy_new') == "yes"): ?>那么它的完整解释应该就是 if如果 _g('happy_new') 等于“yes(也就是开启雪花)”的时候将显示:

<雪花代码>

<?php else: ?> 否则:
留空,什么也不显示
<?php endif; ?> 判断语句结束。
 

最后贴上完整方案


<?php if(_g('happy_new') == "yes"): ?>
<script type="text/javascript" language="javascript">
(function() {
    function k(a, b, c) {
        if (a.addEventListener) a.addEventListener(b, c, false);
        else a.attachEvent && a.attachEvent("on" + b, c)
    }
    function g(a) {
        if (typeof window.onload != "function") window.onload = a;
        else {
            var b = window.onload;
            window.onload = function() {
                b();
                a()
            }
        }
    }
    function h() {
        var a = {};
        for (type in {
            Top: "",
            Left: ""
        }) {
            var b = type == "Top" ? "Y": "X";
            if (typeof window["page" + b + "Offset"] != "undefined") 
a[type.toLowerCase()] = window["page" + b + "Offset"];
            else {
b = document.documentElement.clientHeight ? document.documentElement: document.body;
                a[type.toLowerCase()] = b["scroll" + type]
            }
        }
        return a
    }
    function l() {
        var a = document.body,
        b;
        if (window.innerHeight) b = window.innerHeight;
        else if (a.parentElement.clientHeight) b = a.parentElement.clientHeight;
        else if (a && a.clientHeight) b = a.clientHeight;
        return b
    }
    function i(a) {
        this.parent = document.body;
        this.createEl(this.parent, a);
        this.size = Math.random() * 11 + 11;
        this.el.style.width = Math.round(this.size) + "px";
        this.el.style.height = Math.round(this.size) + "px";
        this.maxLeft = document.body.offsetWidth - this.size;
        this.maxTop = document.body.offsetHeight - this.size;
        this.left = Math.random() * this.maxLeft;
        this.top = h().top + 1;
        this.angle = 1.4 + 0.2 * Math.random();
        this.minAngle = 1.4;
        this.maxAngle = 1.6;
        this.angleDelta = 0.01 * Math.random();
        this.speed = 2 + Math.random()
    }
    var j = false;
    g(function() {
        j = true
    });
    var f = true;
    window.createSnow = function(a, b) {
        if (j) {
            var c = [],
            m = setInterval(function() {
                f && b > c.length && Math.random() 
< b * 0.0025 && c.push(new i(a)); ! f && !c.length && clearInterval(m);
                for (var e = h().top, n = l(), d = c.length - 1; d >= 0; d--) 
if (c[d]) if (c[d].top < e || c[d].top + c[d].size + 1 > e + n) {
                    c[d].remove();
                    c[d] = null;
                    c.splice(d, 1)
                } else {
                    c[d].move();
                    c[d].draw()
                }
            },
            40);
            k(window, "scroll",
            function() {
                for (var e = c.length - 1; e >= 0; e--) c[e].draw()
            })
        } else g(function() {
            createSnow(a, b)
        })
    };
    window.removeSnow = function() {
        f = false
    };
    i.prototype = {
        createEl: function(a, b) {
            this.el = document.createElement("img");
            this.el.setAttribute
("src", b + "http://mimg.127.net/hxm/quan/hd/111207_sdj/style/img/snow.gif");
            this.el.style.position = "absolute";
            this.el.style.display = "block";
            this.el.style.zIndex = "99999";
            this.parent.appendChild(this.el)
        },
        move: function() {
            if (this.angle < this.minAngle || this.angle > this.maxAngle) 
this.angleDelta = -this.angleDelta;
            this.angle += this.angleDelta;
            this.left += this.speed * Math.cos(this.angle * Math.PI);
            this.top -= this.speed * Math.sin(this.angle * Math.PI);
            if (this.left < 0) this.left = this.maxLeft;
            else if (this.left > this.maxLeft) this.left = 0
        },
        draw: function() {
            this.el.style.top = Math.round(this.top) + "px";
            this.el.style.left = Math.round(this.left) + "px"
        },
        remove: function() {
            this.parent.removeChild(this.el);
            this.parent = this.el = null
        }
    }
})();
createSnow("", 40);
</script>

<?php else: ?>

<?php endif; ?>
将以上代码添加至footer.php中就可以在后台模板设置中开始和关闭雪花代码了。



发表评论:

评论(0)