Typecho主题数据备份与恢复 非插件

插件开发及发布

版主: woniou

回复
头像
玫音阁
帖子: 77
注册时间: 2015年 12月 27日 10:26

Typecho主题数据备份与恢复 非插件

帖子 玫音阁 »

原文

https://krait.cn/major/1747.html

详情访问
https://krait.cn/major/1747.html

由于 typecho 模板设置数据会在换模板的时候被清空,想那些每次配置数据的人自己都觉得很烦。所以自己写了一个非插件的处理方法,可以适合任何 typecho 的主题,超级兼容。

## 使用方法
需要找到自己主题下的```functions.php``` 在```themeConfig($form) ```函数里添加如下的JavaScript
**你应该知道怎么添加吧,注意格式哦**

再次之前还要引入

代码: 全选

<script type="text/javascript" src="./js/jquery.js"></script>

然后在引入,主要一定要严格按照顺序来。

代码: 全选

function backData() {
    var newLocal= localStorage.backupData;
    if (newLocal!= "" && newLocal!= undefined) {
        var jsonData = JSON.parse(newLocal);
        var data = jsonData;
        for(var i in data){
            switch (data[i].type) {
                case "text":
                    $('#'+document.getElementsByName(data[i].name)[0].id).val(data[i].value);
                    break;
                case "textarea":
                    $('#'+document.getElementsByName(data[i].name)[0].id).val(data[i].val);
                    break;
                case "checkbox":
                    switch (data[i].checked) {
                        case 'true':
                            document.getElementById(data[i].id).checked = true;
                            break;
                        case 'false':
                            document.getElementById(data[i].id).checked = false;
                            break;
                    }
                    break;

                case "radio":
                    switch (data[i].checked) {
                        case 'true':
                            $('#'+data[i].id).prop("checked","checked");
                            break;
                        case 'false':
                            $('#'+data[i].id).removeAttr("checked");
                    }
                    break;
            }
        }
    }
}
function backupData() {
    var json = [];
    var inputs = $("input");
    var textareas = $("textarea");
    for (i = 0, len = inputs.length; i < len; i++) {
        var j = {};
        var input = inputs[i];
        j.name = input.name;
        j.type = input.type;
        j.id = input.id;
        switch (input.type){
            case "text":
                j.value = input.value;
                break;

            case "radio":
                j.checked = ''+input.checked+'';
                break;

            case "checkbox":
                j.checked = ''+input.checked+'';
                break;
            default:
        }
        json.push(j);
    }
    for (i = 0, len = textareas.length; i < len; i++) {
        var j = {};
        var textarea = textareas[i];
        j.name = textarea.name;
        j.type = 'textarea';
        j.id = textarea.id;
        j.val = $('#'+textarea.id).val();

        json.push(j);
    }
    var dataUp = JSON.stringify(json);
    localStorage.backupData = dataUp;
}
jQuery(function(){
    $(".typecho-option-submit").append("<li><button type=\"button\" class=\"btn primary\" onclick=\"backupData()\">备份</button></li><li><button type=\"button\" class=\"btn primary\" onclick=\"backData()\">恢复</button></li>");
});



但是有些主题有很长啦啦的配置,每次修改后还要滑到底保存,这样用```position: fixed``` 强行固定在右侧,既方便有美观。

代码: 全选

<style>
        .typecho-option-submit{
            position: fixed !important;
            bottom: 10px !important;
            right: 30px !important;
        }
        .typecho-option-submit li{
            display: inline;
            margin-right: 5px;
        }
    </style>


## 最后

如果你觉得很实用,就留个评论点个赞呗!
不过既然发了这篇文章,就说明已经搞定了。
头像
ClayMore
帖子: 2481
注册时间: 2007年 11月 29日 02:55
来自: Sleeping Forest
联系:

Re: Typecho主题数据备份与恢复 非插件

帖子 ClayMore »

确实不错~
hxuf
帖子: 16
注册时间: 2018年 8月 21日 22:04
联系:

Re: Typecho主题数据备份与恢复 非插件

帖子 hxuf »

我弄好主题后就把默认的主题删掉了。省的点错了出问题。
头像
玫音阁
帖子: 77
注册时间: 2015年 12月 27日 10:26

Re: Typecho主题数据备份与恢复 非插件

帖子 玫音阁 »

hxuf 写了:我弄好主题后就把默认的主题删掉了。省的点错了出问题。

其实没这个必要, 你可以用一个变量把

代码: 全选

localStorage.backupData
中的替换

代码: 全选

backupData
,这样就可以多重使用.
低调哥
帖子: 15
注册时间: 2018年 10月 13日 17:32

Re: Typecho主题数据备份与恢复 非插件

帖子 低调哥 »

hxuf 写了:我弄好主题后就把默认的主题删掉了。省的点错了出问题。

具体怎么添加 还是没搞明白 新手啊
低调哥
帖子: 15
注册时间: 2018年 10月 13日 17:32

Re: Typecho主题数据备份与恢复 非插件

帖子 低调哥 »

玫音阁 写了:
hxuf 写了:我弄好主题后就把默认的主题删掉了。省的点错了出问题。

其实没这个必要, 你可以用一个变量把

代码: 全选

localStorage.backupData
中的替换

代码: 全选

backupData
,这样就可以多重使用.


楼主的教程还是 不太明白 纯新手 试了好几遍都出错。。。
低调哥
帖子: 15
注册时间: 2018年 10月 13日 17:32

Re: Typecho主题数据备份与恢复 非插件

帖子 低调哥 »

不知道哪里的错误
Parse error: syntax error, unexpected 'var' (T_VAR) in E:\phpStudy\PHPTutorial\WWW\typecho\usr\themes\ddgink\functions.php on line 134
回复