Typecho——主题配置数据备份和恢复

简介: Typecho——主题配置数据备份和恢复

前言

~c Typecho c~ 的配置项有个很神奇的特效,就是切换主题后,配置文件会丢失,但是EasyBe主题有很多配置,一旦丢失再重新配置会比较麻烦,所以特地给主题增加下保存配置文件的操作;

内容

代码

?> 将下面的代码复制到functions.php中,如果你的搏皮中有自己的一些配置,注意整合下;

!> 我这里是在点击保存设置按钮的时候,根据$_POST["jqueryConfig"]来进行备份配置的,这里的判断需要你根据自己的主题换成对应的变量;

// 主题配置
function themeConfig($form) {
    // 备份主题配置信息
    $name = 'easybe';
    $db = Typecho_Db::get();
    $themeData = $db->fetchRow($db->select()->from ('table.options')->where ('name = ?', 'theme:'.$name))['value'];
    $themeBackup = $db->fetchRow($db->select()->from ('table.options')->where ('name = ?', 'themeBackup:'.$name))['value'];
    if(isset($_POST) && $themeData) {
        if($_POST["jqueryConfig"]){
            if($themeBackup){
                $db->query($db->update('table.options')->rows(array('value'=>$themeData))->where('name = ?', 'themeBackup:'.$name));
            }else{
                $db->query($db->insert('table.options')->rows(array('name' => 'themeBackup:'.$name,'user' => '0','value' => $themeData)));
            }
        }
        if($_POST["restore"]){
            if($themeBackup){
                $updateRows= $db->query($db->update('table.options')->rows(array('value'=>$themeBackup))->where('name = ?', 'theme:'.$name));
                if ($updateRows)  {
                    echo '<div class="message popup success" style="position: absolute; top: 36px; display: block;"><ul><li>主题备份数据已恢复</li></ul></div>';
                    echo "<meta http-equiv='refresh' content ='1';url=".getUrl().">";
                }
            }else{
                echo '<div class="message popup error" style="position: absolute; top: 36px; display: block;"><ul><li>不存在主题备份数据,请先进行主题数据备份</li></ul></div>';
                echo "<meta http-equiv='refresh' content ='1';url=".getUrl().">";
            }
        }
    }
 echo '<form class="protected home col-mb-12" action="" method="post"><ul class="typecho-option" style="position: relative;left: -9px;"><li><label class="typecho-label">主题配置恢复</label><input type="submit" name="restore" class="btn primary" value="恢复主题配置"></li></ul></form>';
}
// 获取当前页面地址
function getUrl() {
    $protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://';
    $php_self = $_SERVER['PHP_SELF'] ?? $_SERVER['SCRIPT_NAME'];
    $path_info = $_SERVER['PATH_INFO'] ??  '';
    $relate_url = $_SERVER['REQUEST_URI'] ?? $php_self.$path_info;
    return $protocal.($_SERVER['HTTP_HOST'] ?? '').$relate_url;
}

效果

学无止境,谦卑而行.

目录
相关文章
|
存储 SQL Cloud Native
【笔记】用户指南—备份与恢复—备份数据
PolarDB-X支持自动备份及手动备份,方便您恢复历史数据。 本文介绍数据备份的相关功能。
121 0
【笔记】用户指南—备份与恢复—备份数据
|
数据库 数据格式 XML
Confluence 6 恢复一个站点有关使用站点导出为备份的说明
推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。
896 0
|
存储 弹性计算 Cloud Native
【笔记】用户指南—备份与恢复—恢复数据
PolarDB-X支持通过备份恢复历史数据。本文介绍恢复数据的相关操作步骤。
151 0
【笔记】用户指南—备份与恢复—恢复数据
|
消息中间件 关系型数据库 数据库
云大使推广可奖励返佣产品明细(战略产品)
阿里云大使可参与推广返佣的产品以下面列表为准,具体返佣产品信息可点击官网链接查看。可访问官网了解云大使返佣计划:https://www.aliyun.com/ntms/yunparter/index.html
云大使推广可奖励返佣产品明细(战略产品)
|
6月前
|
JavaScript
Vue——Vue v2.7.14 源码阅读之代码目录结构【一】
Vue——Vue v2.7.14 源码阅读之代码目录结构【一】
108 0
|
6月前
|
存储 资源调度 JavaScript
package.json——从vue的package.json来详细说明package.json内容
package.json——从vue的package.json来详细说明package.json内容
240 0
|
6月前
|
安全 网络安全
SSH——云服务器SSH经常断开如何处理
SSH——云服务器SSH经常断开如何处理
127 0
|
6月前
|
JavaScript 前端开发
JavaScript——快速判断数组对象的值是否全部满足条件
JavaScript——快速判断数组对象的值是否全部满足条件
108 0
|
6月前
uniApp——调整uniApp插件市场上的echarts插件
uniApp——调整uniApp插件市场上的echarts插件
276 0
|
6月前
|
开发框架 小程序
uniApp——Eslint报错'uni' is not defined
uniApp——Eslint报错'uni' is not defined
301 0

热门文章

最新文章