久久精品国产99国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

Typecho模板設(shè)置數(shù)據(jù)備份與恢復(fù)

給Typecho開發(fā)主題時(shí),可以添加一個(gè)功能

來源于:

https://qqdie.com/archives/typecho-templates-backup-and-restore.html

typecho模板設(shè)置數(shù)據(jù)會(huì)在你換模板的時(shí)候被清空,這樣的設(shè)置其實(shí)我還是蠻喜歡的,不會(huì)有數(shù)據(jù)殘留。

然而WP用戶轉(zhuǎn)到typecho后跟我抱怨,說模板換成別的然后再切換回來,之前設(shè)置好的數(shù)據(jù)都沒了,希望我在yodu模板上動(dòng)動(dòng)手腳解決這個(gè)問題。

然而我是有些遲疑的,東西不是你說做我就要做的,我必須試一下...否則答應(yīng)太快又搞不出來,豈不是很難受!

不過既然發(fā)了這篇文章,就說明已經(jīng)搞定了

Typecho模板設(shè)置數(shù)據(jù)備份與恢復(fù)

代碼

themeConfig($form)函數(shù)里添加

$db = Typecho_Db::get();
$sjdq=$db->fetchRow($db->select()->from ('table.options')->where ('name = ?', 'theme:Yodu'));
$ysj = $sjdq['value'];
if(isset($_POST['type']))
{ 
if($_POST["type"]=="備份模板數(shù)據(jù)"){
if($db->fetchRow($db->select()->from ('table.options')->where ('name = ?', 'theme:Yodubf'))){
$update = $db->update('table.options')->rows(array('value'=>$ysj))->where('name = ?', 'theme:Yodubf');
$updateRows= $db->query($update);
echo '<div class="tongzhi">備份已更新,請(qǐng)等待自動(dòng)刷新!如果等不到請(qǐng)點(diǎn)擊';
?>    
<a href="<?php Helper::options()->adminUrl('options-theme.php'); ?>">這里</a></div>
<script language="JavaScript">window.setTimeout("location=\'<?php Helper::options()->adminUrl('options-theme.php'); ?>\'", 2500);</script>
<?php
}else{
if($ysj){
     $insert = $db->insert('table.options')->rows(array('name' => 'theme:Yodubf','user' => '0','value' => $ysj));
     $insertId = $db->query($insert);
echo '<div class="tongzhi">備份完成,請(qǐng)等待自動(dòng)刷新!如果等不到請(qǐng)點(diǎn)擊';
?>    
<a href="<?php Helper::options()->adminUrl('options-theme.php'); ?>">這里</a></div>
<script language="JavaScript">window.setTimeout("location=\'<?php Helper::options()->adminUrl('options-theme.php'); ?>\'", 2500);</script>
<?php
}
}
        }
if($_POST["type"]=="還原模板數(shù)據(jù)"){
if($db->fetchRow($db->select()->from ('table.options')->where ('name = ?', 'theme:Yodubf'))){
$sjdub=$db->fetchRow($db->select()->from ('table.options')->where ('name = ?', 'theme:Yodubf'));
$bsj = $sjdub['value'];
$update = $db->update('table.options')->rows(array('value'=>$bsj))->where('name = ?', 'theme:Yodu');
$updateRows= $db->query($update);
echo '<div class="tongzhi">檢測到模板備份數(shù)據(jù),恢復(fù)完成,請(qǐng)等待自動(dòng)刷新!如果等不到請(qǐng)點(diǎn)擊';
?>    
<a href="<?php Helper::options()->adminUrl('options-theme.php'); ?>">這里</a></div>
<script language="JavaScript">window.setTimeout("location=\'<?php Helper::options()->adminUrl('options-theme.php'); ?>\'", 2000);</script>
<?php
}else{
echo '<div class="tongzhi">沒有模板備份數(shù)據(jù),恢復(fù)不了哦!</div>';
}
}
if($_POST["type"]=="刪除備份數(shù)據(jù)"){
if($db->fetchRow($db->select()->from ('table.options')->where ('name = ?', 'theme:Yodubf'))){
$delete = $db->delete('table.options')->where ('name = ?', 'theme:Yodubf');
$deletedRows = $db->query($delete);
echo '<div class="tongzhi">刪除成功,請(qǐng)等待自動(dòng)刷新,如果等不到請(qǐng)點(diǎn)擊';
?>    
<a href="<?php Helper::options()->adminUrl('options-theme.php'); ?>">這里</a></div>
<script language="JavaScript">window.setTimeout("location=\'<?php Helper::options()->adminUrl('options-theme.php'); ?>\'", 2500);</script>
<?php
}else{
echo '<div class="tongzhi">不用刪了!備份不存在!!!</div>';
}
}
    }
echo '<form class="protected" action="?yodubf" method="post">
<input type="submit" name="type" class="btn btn-s" value="備份模板數(shù)據(jù)" />&nbsp;&nbsp;<input type="submit" name="type" class="btn btn-s" value="還原模板數(shù)據(jù)" />&nbsp;&nbsp;<input type="submit" name="type" class="btn btn-s" value="刪除備份數(shù)據(jù)" /></form>';

SQL

然后將里面出現(xiàn)的所有“yodu”改成你的模板目錄的名字,如果拿不準(zhǔn)就去數(shù)據(jù)庫里看看模板的值名字。

備份

當(dāng)用戶點(diǎn)擊備份時(shí),先判斷是否已經(jīng)存在備份,如果不存在就插入一條新的數(shù)據(jù),數(shù)據(jù)name為yodubf,value為模板原本的數(shù)據(jù)。此時(shí)就存在了一條備份數(shù)據(jù)。

如果再次點(diǎn)擊備份按鈕會(huì)發(fā)生什么呢?會(huì)觸發(fā)更新數(shù)據(jù)的語句,就是讀取模板的設(shè)置數(shù)據(jù),然后將備份的模板數(shù)據(jù)更新。

還原

當(dāng)用戶點(diǎn)擊還原按鈕時(shí),會(huì)判斷是否存在備份,如果不存在就發(fā)出提示說不存在數(shù)據(jù)無法恢復(fù);如果存在,就會(huì)進(jìn)行一個(gè)反向的更新操作,將備份的數(shù)據(jù)更新到模板默認(rèn)設(shè)置數(shù)據(jù)。

這個(gè)操作完成后會(huì)觸發(fā)個(gè)小問題,比較影響體驗(yàn)的。就是在點(diǎn)擊還原按鈕時(shí)網(wǎng)頁是先刷新后執(zhí)行php還原語句的,也就是說還原完成后,你看到的模板設(shè)置頁面數(shù)據(jù)并沒有還原,但是實(shí)際數(shù)據(jù)庫里面已經(jīng)還原好了的,這一點(diǎn)很影響體驗(yàn)。

于是乎,我雞賊的弄了個(gè)js自動(dòng)刷新語句,并發(fā)出提示文字,這樣一下子就友好多了,注意文章中代碼方面我并未給出css樣式,所以美觀度上需要自行優(yōu)化。

刪除

刪除就簡單了,判斷是否存在備份,不存在就告訴用戶不用刪了,你壓根就沒有備份數(shù)據(jù),如果有備份就執(zhí)行刪除語句,發(fā)出提示。

一些沒用的說明

1,其實(shí)這東西應(yīng)該可以寫成懶人版的,模板名字什么的用php獲取下,就不用我這樣寫死了,但是當(dāng)時(shí)我處于試一試的心態(tài)寫的,所以就能簡單就簡單了,現(xiàn)在又懶得弄了,要不是為了水文,這個(gè)我都懶得貼出來。

2,別看文章中代碼這么亂,條例就不清晰,其實(shí)我當(dāng)時(shí)找了張紙寫的邏輯然后才按照順序一步一步的寫的,也測試了很多回。

3,最開始想寫自動(dòng)還原模板數(shù)據(jù)來著,就是檢測到模板啟用就自動(dòng)還原曾經(jīng)的備份數(shù)據(jù),然而當(dāng)時(shí)想不通如果去判斷模板啟用。

4,當(dāng)你想將本文章代碼投入使用時(shí),最好再測試博客進(jìn)行測試,以免傷害你的數(shù)據(jù)庫,同時(shí)建議測試時(shí)打開數(shù)據(jù)庫管理頁面,觀看數(shù)據(jù)庫對(duì)應(yīng)表的變化

網(wǎng)頁下載(防代碼丟失):

備用網(wǎng)頁

提取碼:無
解壓碼:無

這個(gè)主題就使用了這個(gè)功能

Photograph - 精致的Typecho相冊(cè)主題

給TA贊賞
共{{data.count}}人
人已贊賞
??
Npcink上的部份代碼及教程來源于互聯(lián)網(wǎng),僅供網(wǎng)友學(xué)習(xí)交流,若您喜歡本文可附上原文鏈接隨意轉(zhuǎn)載。
無意侵害您的權(quán)益,請(qǐng)發(fā)送郵件至 1355471563#qq.com 或點(diǎn)擊右側(cè) 私信:Muze 反饋,我們將盡快處理。
?
購物車
優(yōu)惠劵
搜索
久久精品国产99国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

    9000px;">

      国产老肥熟一区二区三区| 中文字幕一区二区三区色视频| 国内精品久久久久影院薰衣草| 亚洲欧美日韩在线播放| 国产日本一区二区| 国产亚洲成aⅴ人片在线观看| 精品国产乱码久久久久久久久| 欧美军同video69gay| 欧美日韩成人激情| 欧美性感一区二区三区| 欧日韩精品视频| 日本韩国一区二区| 色婷婷亚洲一区二区三区| 成人在线综合网| 97se亚洲国产综合自在线观| 一本大道久久a久久综合婷婷| 在线看不卡av| 日韩一级完整毛片| 中文字幕av一区二区三区| 亚洲精品第一国产综合野| 午夜久久久久久电影| 日韩和欧美的一区| 成人午夜私人影院| 欧美日韩国产综合一区二区三区 | 色爱区综合激月婷婷| 91电影在线观看| 日韩一级片网址| 中文字幕不卡在线| 日日摸夜夜添夜夜添精品视频 | 亚洲成av人片观看| 捆绑调教美女网站视频一区| 激情六月婷婷久久| 不卡视频一二三| 欧美亚洲丝袜传媒另类| 日韩精品专区在线影院重磅| 国产精品免费人成网站| 亚洲成av人片在www色猫咪| 国产乱码一区二区三区| 色香蕉成人二区免费| 欧美一区二区三区四区五区| 国产精品久久久99| 另类的小说在线视频另类成人小视频在线 | 成人一级黄色片| 在线电影欧美成精品| 国产亚洲欧美日韩日本| 亚洲在线视频网站| 国产永久精品大片wwwapp| 欧美午夜免费电影| 国产欧美日韩久久| 日本美女一区二区三区视频| 99re亚洲国产精品| 久久久青草青青国产亚洲免观| 日韩美女精品在线| 久久成人麻豆午夜电影| 欧美日韩国产一区二区三区地区| 久久先锋资源网| 婷婷综合五月天| 91国模大尺度私拍在线视频| 国产亲近乱来精品视频| 麻豆久久一区二区| 欧美午夜精品免费| 亚洲精品一二三| eeuss鲁片一区二区三区| 国产人久久人人人人爽| 激情图区综合网| 91精品国产色综合久久不卡蜜臀 | 欧美国产精品久久| 久久国产精品72免费观看| 色综合欧美在线视频区| 专区另类欧美日韩| 97国产精品videossex| 国产精品毛片大码女人| 成人国产一区二区三区精品| 国产三级精品三级在线专区| 国产乱子轮精品视频| 精品国产成人在线影院| 九九九久久久精品| 337p日本欧洲亚洲大胆精品| 毛片av一区二区| 日韩欧美国产午夜精品| 久久不见久久见免费视频7| 欧美电视剧在线看免费| 久久精品国产久精国产爱| 91精品国产综合久久久蜜臀图片| 天堂成人免费av电影一区| 91麻豆精品国产91久久久资源速度| 天堂在线一区二区| 日韩精品一区二区三区视频| 麻豆精品在线看| 26uuu精品一区二区在线观看| 国产一区二区三区四区五区入口| 26uuu国产电影一区二区| 国产精品亚洲午夜一区二区三区| 国产日韩影视精品| 91在线无精精品入口| 亚洲一区日韩精品中文字幕| 欧美视频第二页| 美女网站视频久久| 国产婷婷色一区二区三区在线| 国产寡妇亲子伦一区二区| 国产精品久99| 欧美日韩国产美| 国内精品国产三级国产a久久 | 91小视频在线免费看| 一区二区三区四区激情| 91精品国产综合久久精品麻豆 | 中文字幕一区二区三区蜜月| 欧美日韩一区三区| 蜜桃av一区二区| 亚洲欧美日韩国产另类专区| 欧美视频一区二区三区四区| 久久99精品国产.久久久久久| 国产欧美一区二区精品忘忧草| 99天天综合性| 秋霞av亚洲一区二区三| 国产日韩欧美亚洲| 欧美三级电影一区| 国产高清久久久| 亚洲成a人片综合在线| 国产欧美va欧美不卡在线| 欧美综合视频在线观看| 国产精品一区在线观看乱码 | 欧美精品一区二区在线观看| 91色在线porny| 精品一区二区三区的国产在线播放| 136国产福利精品导航| 久久免费偷拍视频| 777久久久精品| 91一区二区在线观看| 国产乱码字幕精品高清av| 日韩va亚洲va欧美va久久| 亚洲天堂久久久久久久| 国产午夜精品美女毛片视频| 欧美日本一道本| av动漫一区二区| 国产成人亚洲综合a∨婷婷图片| 亚洲成人av电影| 亚洲综合久久av| 亚洲视频综合在线| 国产精品久久久久影院| 久久精品欧美一区二区三区麻豆| 666欧美在线视频| 欧美午夜精品一区| 在线免费不卡电影| 91亚洲精品久久久蜜桃| 成人的网站免费观看| 国产福利91精品一区二区三区| 奇米精品一区二区三区四区| 亚洲午夜免费电影| 亚洲激情男女视频| 亚洲美女视频在线观看| 国产精品伦一区| 国产欧美日韩在线观看| 国产喷白浆一区二区三区| 久久网这里都是精品| 精品免费一区二区三区| 日韩久久免费av| 久久尤物电影视频在线观看| www国产成人免费观看视频 深夜成人网| 这里只有精品免费| 欧美大片在线观看| 欧美v国产在线一区二区三区| 日韩一区二区视频在线观看| 69p69国产精品| 精品日韩在线一区| 久久综合久久久久88| 久久精品亚洲麻豆av一区二区| 久久久久久麻豆| 国产精品视频一二三| 亚洲精品免费看| 亚洲一区在线免费观看| 五月天精品一区二区三区| 日本午夜精品视频在线观看| 蜜乳av一区二区三区| 黄一区二区三区| 成人精品一区二区三区中文字幕| 成人午夜又粗又硬又大| 日本高清不卡aⅴ免费网站| 欧美日韩免费观看一区二区三区| 91精品国产综合久久久久| 26uuu国产日韩综合| 国产精品福利影院| 婷婷综合久久一区二区三区| 久久国产剧场电影| 欧美日韩一区国产| 一区二区三区日韩欧美精品| 韩国视频一区二区| 午夜伦理一区二区| 欧美日韩一级视频| 欧美三级午夜理伦三级中视频| 色综合天天综合狠狠| 欧美日韩五月天| 日韩一区二区精品葵司在线| wwwwww.欧美系列| 国产精品欧美经典| 亚洲视频一二区| 国产精品狼人久久影院观看方式| 亚洲欧美视频在线观看| 天使萌一区二区三区免费观看| 国产美女精品人人做人人爽|