帝國(guó)cms 怎么修改字段內(nèi)容存文本,內(nèi)容存數(shù)據(jù)庫(kù)”改為“內(nèi)容存文本”的方案
在帝國(guó)CMS文章模型(news)的newstext字段默認(rèn)是“內(nèi)容存文本”的模式,但是有時(shí)候我們剛建站時(shí)出于某種原因把這個(gè)默認(rèn)模式修改成了“內(nèi)容存數(shù)據(jù)庫(kù)”了。網(wǎng)站運(yùn)行一段時(shí)間后,我們發(fā)現(xiàn)數(shù)據(jù)庫(kù)越來(lái)越大,這時(shí)候想把它重新修改為“內(nèi)容存文本”的模式,可以有效為數(shù)據(jù)庫(kù)減負(fù)。但因?yàn)楸砝镆呀?jīng)存在了數(shù)據(jù),且官方后臺(tái)不允許將數(shù)據(jù)類(lèi)型直接修改成“內(nèi)容存文本”的模式,此時(shí)可以通過(guò)下面的手動(dòng)方案來(lái)修改。
第一步,先備份數(shù)據(jù)庫(kù)。然后,登錄帝國(guó)CMS后臺(tái),“系統(tǒng)”—>“數(shù)據(jù)表與系統(tǒng)模型”—>管理數(shù)據(jù)表—>“新聞系統(tǒng)數(shù)據(jù)表 ( phome_ecms_news )”—>管理字段,先將字段newstext的字段名修改為:newstext2 。
第二步,在管理字段里,新增一個(gè)全新字段:newstext,注意將它的模型設(shè)置為:內(nèi)容存文本,其他選項(xiàng)參考之前的newstext2。
第三步,將下面的PHP代碼上傳到網(wǎng)站根目錄運(yùn)行。注意修改一下代碼中的參數(shù)。特別是,我網(wǎng)站原來(lái)的文章內(nèi)容存在副表,如果你不是存副表,還需要修改一下代碼里的SQL。
<?php //程序名稱(chēng):將帝國(guó)CMS從內(nèi)容存數(shù)據(jù)庫(kù)改為:內(nèi)容存文本 //程序必須放在帝國(guó)CMS的網(wǎng)站根目錄執(zhí)行。 $password=trim($_GET["password"]); if($password!="hyywx@dzh"){ echo "運(yùn)行密碼錯(cuò)誤。";exit(); } set_time_limit(0); //執(zhí)行時(shí)間為無(wú)限制 $db_servername ='localhost'; $db_name='hyywx'; //數(shù)據(jù)庫(kù)名 $db_username ='root'; //數(shù)據(jù)庫(kù)用戶(hù)名 $db_password ='123456'; //數(shù)據(jù)庫(kù)密碼 //使用PDO連接數(shù)據(jù)庫(kù) $dsn = "mysql:host=".$db_servername.";dbname=".$db_name.";charset=UTF8"; try { $conn = new PDO($dsn, $db_username, $db_password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // echo "數(shù)據(jù)庫(kù)連接成功!"; } catch(PDOException $e) { echo "數(shù)據(jù)庫(kù)連接失敗:" . $e->getMessage(); } //使用PDO執(zhí)行查詢(xún)的示例: // $stmt = $conn->query("SELECT * FROM tablename"); // while ($row = $stmt->fetch()) { // echo $row["column1"] . "" . $row["column2"]; // } // 關(guān)閉數(shù)據(jù)庫(kù)連接 //$conn = null; $news_table="phome_ecms_news";//文章主表 $news_table2="phome_ecms_news_data_1";//文章副表 $directory="d/txt/";//保存的目錄 $limit_num=50;//每次執(zhí)行多少個(gè) $all_count=82309;//總數(shù) $cur_num=$_GET["cur_num"];//當(dāng)前執(zhí)行到的行數(shù) if(!$cur_num){$cur_num=0;} //B.newstext2為原存內(nèi)容的字段,A.newstext為現(xiàn)在保存文本內(nèi)容(文件URL)的字段。需要先去帝國(guó)CMS后臺(tái)設(shè)置好對(duì)應(yīng)的模型字段 $results = $conn->query("SELECT A.id,A.classid,A.newstime,A.title,A.newstext,B.newstext2 FROM ".$news_table." A LEFT JOIN ".$news_table2." B ON A.id = B.id WHERE A.newstext = '' order by A.id asc LIMIT ".$cur_num.",".$limit_num); foreach ($results as $news) { $newstime=$news['newstime']; $year=date("Y",$newstime);//發(fā)布時(shí)間:年 $mdH=date("mdH",$newstime);//發(fā)布時(shí)間:月日時(shí) $directory2=$directory.$year."/".$mdH."/"; $file_name=md5($news['classid'].$news['id']); $newstext=$year."/".$mdH."/".$file_name;//待寫(xiě)入數(shù)據(jù)庫(kù)的文件路徑 $content=$news['newstext2']; //var_dump($news);exit(); if($content){ $content="<? exit();?>".$content; $xieru_file=xieru_file($directory2,$file_name,$content); if($xieru_file){ $up=$conn->exec("update ".$news_table." set newstext='".$newstext."' where id=".$news['id']); } } } if($cur_num>$all_count){ echo "執(zhí)行完畢。";exit(); } $cur_num=$cur_num+$limit_num; echo '<html><head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <script>window.location.href = "zhuanwenben.php?password='.$password.'&cur_num='.$cur_num.'";</script></head><body> 主表:'.$news_table.'<br> 副表:'.$news_table2.'<br> 總數(shù):'.$all_count.'條<br> 每次執(zhí)行:'.$limit_num.'條<br> 當(dāng)前執(zhí)行:從第<font color=red>'.$cur_num.'</font>條開(kāi)始<br> 請(qǐng)不要關(guān)閉瀏覽器,系統(tǒng)自動(dòng)執(zhí)行下一步操作。 </body></html>'; function xieru_file($directory,$file_name,$content){ $file = $directory . $file_name.'.php'; // 完整的文件路徑 // 檢查目錄是否存在 if (!is_dir($directory)) { // 如果不存在,則創(chuàng)建目錄 mkdir($directory, 0755, true); // 第三個(gè)參數(shù)設(shè)置為true,以遞歸創(chuàng)建多級(jí)目錄 } // 創(chuàng)建并寫(xiě)入文件 $bytesWritten = file_put_contents($file, $content); // 檢查文件是否創(chuàng)建成功 if ($bytesWritten !== false) { //echo "文件創(chuàng)建成功,寫(xiě)入了 {$bytesWritten} 字節(jié)"; return true; } else { //echo "文件創(chuàng)建失敗"; return false; } }
以上代碼運(yùn)行時(shí),因?yàn)檫\(yùn)行太快可能會(huì)看不到頁(yè)面任何顯示,但是你可以觀(guān)察URL,cur_num=50的數(shù)值變動(dòng)說(shuō)明在運(yùn)行中。
運(yùn)行完成后,此時(shí)已經(jīng)在newstext字段里插入了文本的URL了。可以自己使用數(shù)據(jù)庫(kù)管理軟件檢查一下。同時(shí)查看一下目錄:/d/txt/里是否有保存文章內(nèi)容的文件。(注意:如果第一次執(zhí)行程序時(shí)沒(méi)有把所有數(shù)據(jù)都轉(zhuǎn)換為文本文件,那么可以多執(zhí)行幾次程序,查看newstext字段是否都已經(jīng)存入了文本文件路徑。)
第四步,在確認(rèn)完成第三步并無(wú)誤后,登錄帝國(guó)CMS后臺(tái),同樣進(jìn)入:“系統(tǒng)”—>“數(shù)據(jù)表與系統(tǒng)模型”—>管理數(shù)據(jù)表—>“新聞系統(tǒng)數(shù)據(jù)表 ( phome_ecms_news )”—>管理系統(tǒng)模型。點(diǎn)擊“管理系統(tǒng)模型”后,在對(duì)應(yīng)的文章模型列表里點(diǎn)擊“修改”,將字段“newstext”右邊的框(參考字段“newstext2”)全部打上√。同時(shí)將字段“newstext2”的√全部去掉。把“自動(dòng)生成表單模板”也勾選上。
保存后,清空數(shù)據(jù)庫(kù)緩存,清空臨時(shí)文件等??梢蕴砑右黄恼聹y(cè)試一下。
至此完成。
本站其他內(nèi)容推薦
1、juice jacquerie air habitat generalship numbles foolocracy Pete self-willed annalist
2、tonics中文翻譯,tonics是什么意思,tonics發(fā)音、用法及例句
3、mol中文翻譯,mol是什么意思,mol發(fā)音、用法及例句
4、喔[ ō wō ],喔字的拼音,部首,意思,組詞,成語(yǔ),喔字的筆順,筆畫(huà)順序怎么寫(xiě)
7、年久變色的英文,英語(yǔ),toned是什么意思,toned中文翻譯,toned怎么讀、發(fā)音、用法及例句
8、拉普人的英文,英語(yǔ),Lapps是什么意思,Lapps中文翻譯,Lapps怎么讀、發(fā)音、用法及例句
9、bilharzia是什么意思,bilharzia中文翻譯,bilharzia怎么讀、發(fā)音、用法及例句
10、sleepful是什么意思,sleepful中文翻譯,sleepful怎么讀、發(fā)音、用法及例句
11、standardize是什么意思,standardize中文翻譯,standardize怎么讀、發(fā)音、用法及例句
版權(quán)聲明: 本站僅提供信息存儲(chǔ)空間服務(wù),旨在傳遞更多信息,不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任,不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)。如因作品內(nèi)容、版權(quán)和其它問(wèn)題需要同本網(wǎng)聯(lián)系的,請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。