婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 網站建設 > 建站知識 > DedeCMS系統配置參數功能和運行分析

DedeCMS系統配置參數功能和運行分析

POST TIME:2020-04-11 21:14

本教程主要分析講解dedecms系統基本參數功能是如何實現的,如何存在到數據,程序是如何執行,具體某個配置這里不講,因為比較簡單,在其它教程里講解。簡言之,這個教程以分析DedeCMS系統配置參數功能的php程序、模板運用等內容。

進入到Dedecms系統配置參數界面,如下圖所示,這個圖只截取基本一部分。

這個界面所對應的php程序文件是http://www.dedebase.com/dede/sys_info.php,即sys_info.php,這個php文件,對應的模板文件是sys_info.htm,以后我們分析某一功能首先要找出,那一功能對應原php程序和模板。今天就分析織夢系統配置參數下面每個功能的實現和運行,這樣說有可能不是清夢,我們一個功能一個功能的分析。

首先,我們目標是實現在“添加新變量”前面加上一個對應的欄目選項,即如下圖所示位置。

要實現這個功能,首先就要找到這個欄目,我們打開文件sys_info.htm,在這個模板文件中好像沒有明顯的這一行信息,我們仔細找一下,找到如下一段php代碼。

<tr>
<td height="24" bgcolor="#ffffff" align="center">
<?php
$ds = file(DEDEADMIN.'/inc/configgroup.txt');//每行作為一個單元存放在數組中。
$totalGroup = count($ds);//統計數組個數。
$i = 0;
foreach($ds as $dl)
{
$dl = trim($dl);
if(empty($dl)) continue;
$dls = explode(',',$dl);//用逗號分隔字符串,分隔后存放在數組$dls里面。
$i++;
if($i>1) echo " | <a href='javascript:ShowConfig($i,$totalGroup)'>{$dls[1]}</a> ";
else{
echo " <a href='javascript:ShowConfig($i,$totalGroup)'>{$dls[1]}</a> ";
}
}
?>
| <a href="#" onClick="ShowHide('addvar')">添加新變量</a></td>
</tr>

這好像與我們平時看到的織夢前臺模板有點矛盾,一般的前臺模板(路徑是templets/default)文件不一樣,不一樣在在前臺模板文件里面,看不到php程序,只有標簽,沒有錯,實際上在前臺模板里面可以應用php文件,但不是直接應用,而是用織夢標簽開始與結束,例如下面這個代碼。

[field:global runphp='yes' name=autoindex]
if (@me < 9) @me = '0'.@me;
else @me = @me;
[/field:global]

但是像在模板sys_info.htm中這樣直接應用php程序沒有,織夢也不允許,那為什么在sys_info.htm模板文件能用呢?因為,這個模板文件被包含引用在了sys_info.php文件,這是php程序中的規定,只要在php程序中包括有其它文件如模板,那么,在它所包括的文件中就可以直接使用php程序與htm嵌套使用,這是一個重要的知識點,如果不理解這一點,就會給我們帶來困惑。

回過頭來我們再分析一下上面<tr>與</tr>之間的這段php代碼。現在我們詳細分析一下這段代碼,如何添加一個欄目,例如我們添加“織夢基地”這樣一個欄目。這一小段代碼用到比較多的知識,我們詳細分析一下。這段代碼用到了四個php函數,分別是file(),count(),trim(),explode(),一個數組遍歷語句foreach,還用到了一個js函數ShowConfig()這個函數就是一個選擇卡功能。

函數file()的作用是把每行作為一個單元存放在數組中,我們直接打印出$ds = file(DEDEADMIN.'/inc/configgroup.txt'),顯示的結果是:Array ( [0] => 1,站點設置 [1] => 2,核心設置 [2] => 3,附件設置 [3] => 4,會員設置[4] => 5,互動設置 [5] => 6,性能選項 [6] => 7,其它選項 [7] => 8,模塊設置 ) 。很明顯這個結果是一個數組,我們打開文件confinggroup.txt文件發現,每一行對應數組中的一個單元,這正是這個file()函數的強大之處。

我們再看一下count()函數,函數是用來計算數組中的單元數目或對象中的屬性個數,我們打印一下count($ds),結果是8,說明文件上面的$ds數組有8個單元。數組$ds是一個一組數組,如果是多維,函數會一直向下執行,這是一個計算

多維數組的好方法工具。在數據庫語言中也有這個名稱完全相同的函數,經常用來計算查詢出來的記錄條數或字段數,等講到數據庫知識我們詳細講解,注意區別。

函數trim()是去除字符串首尾處的空白字符(或者其他字符),刪除左邊、右邊空白字符(或其他字符)的函數分別是ltrim(),rtrim(),就是在函數trim()前面加上左右英文第一個字母即可。去除的字符包括如下五大類:

" " (ASCII 32 (0x20)),普通空格符。
" " (ASCII 9 (0x09)),制表符。
" " (ASCII 10 (0x0A)),換行符。
" " (ASCII 13 (0x0D)),回車符。
"" (ASCII 0 (0x00)),空字節符。
" " (ASCII 11 (0x0B)),垂直制表符。

這里為什么要去除空白字符呢,如果不這樣,那么,當程序執行到if(empty($ds)) continue;時,程序下面的代碼就執行不了了,那么,文件configgroup.txt內容就循環不出來了。

第四個函數explode()這個函數非常重要,它的作用就是一個字符串分割另一個字符串,返回一個字符串組成的數組。在這段代碼中$dls = explode(',',$dl),explode把字符串$dl分割成一個數組,例如當循環到第一個即“1,站點設置”,這個函數會把這個字符串他割成[0]=1;[1]="站點設置"這樣的數組。與它相反的一個函數implode()是把數組連接成一個字符串。

在循環里面的if($i>1)這個判斷是作什么用的呢?他是用來處理每個欄目選項的“豎線”當第一個的時候,是沒有豎線的,這也為我們提供了一種思路,例如,我們網站導航有很多站都有豎線,當然,導航用的是css或js知識。

最后,有一個js函數ShowConfig($i,$totalGroup),這個函數是用來實現欄目選項卡功能的,這里暫時不作多解釋,以后,會有專題詳細講解選項卡功能。

為了方便大家對這段程序的理解,制作這段程序的運行流程圖如下所示。


通過上面的分析,我們得知,只要我們在文件configgroup.txt最后一行,加上“9,織夢基地”,就可以了,我們加上試一下。截取圖如下,


看到沒有,我們已經加上“織夢基地”這個欄目選項了,我們每點擊一個欄目選項,就有一個表單對就設置,現在我們點擊“織夢基地”下面還是空的,什么也沒有。

現在我們再在“織夢基地”下面加上一些配置參數,怎么加配置參數呢?要解決這個問題,首先們要分析一下其它的配置選項是如何加上并達到配置作用的。我們回到模板sys_info.htm,接著上面的代碼繼續向下看,接下來的代碼是“添加新變量”也就是后臺中如下圖4所示(截取部分圖片)

圖4
這個圖片與模板sys_info.htm對應的代碼是第70行到127行代碼,即這段代碼是一個form表單,再向下找還有一個form表單,本來DedeCMS系統配置參數直接用一個表單就可以解決,為什么要用二個呢?因為,“添加新變量”對應的表單是一個向數據庫里面添加數據的,即insert into,而另一個表單收集到的數據是更新即update,二個對數據庫不同的操作,所以,分成二個表單。從這個例子我們可以看出,一個模板可以有多個表單,他們相互不影響,雖然他們都提交同一個php程序來處理數據,這二個表單最重要的一點就是第一個有一行是<input type='hidden' name='dopost' value='add'>;第二個表單有一行是<input type="hidden" name="dopost" value="save">,如果沒有這二個,那么,這個表單就會出錯,這二行是用來處理數據的條件。這二行分別對應sys_info.php程序文件里面的二個條件if($dopost=="add"),if($dopost=="save")。這一點我們在“織夢后臺添加頂級欄目詳解”這個教程里講過,這里再提一下,重點知識。

在約114行,又有一段程序,這段程序是用來循環顯示下拉選項內容的,對應下圖5所示“所屬組”。

圖5

再向下看,就是一段搜索代碼,跳過,另一個教程我們詳細分析搜索功能。

接著看代碼,到了第二個表單form了,這個就是除“添加新變量”欄目選項外的其它所有欄目,循環代碼。先看第二個表單第一段代碼如下圖6所示,

圖6

這段代碼的作用是當用戶(或管理員)進入系統基本參數后,默認顯示第一個的功能,這段代碼就起到了這個作用,無非就是把css設置成style="display:none"或空的問題,這一段就不用解釋了,跟上面那段代碼一樣是個循環我們已經分析過了。

接下來這一大段php代碼就是除“添加新變量”外所有欄目選項的循環代碼。

前二行代碼
$dsql->SetQuery("Select * From `dede_sysconfig` where groupid='{$dls[0]}' order by aid asc");
$dsql->Execute();

這二行代碼是重點,他們的作用是,從數據庫表dede_sysconfig里面,把變量類型ID等于{$dls[0]}值的所有字段都查詢出來,$dls這個數組在圖6中已經循環查詢出來了。只要把這個表中所有字段查出來下面就方便使用了。為了方便大家把數據庫表dede_sysconfig截取了一張圖7如下所示。

圖7
用這個while循環,實現了隔行變色的功能,這個功能類似于我們用js或css實現隔行換色,而且比css要簡單的多了,如果我們用jquery的話,也非常容易,對于隔行變色,我們以后總結。還有一點在這個while循環中,有一個$dsql->GetArray()函數,這個作用返回當前的一條記錄并把游標移向下一記錄,其實,當我們執行上面二行代碼后,我們雖然把數據從數據查詢出來了,但是他仍然在一張表中,通過$sql->GetArray()我們可以從表中找取出一條記錄來,我們在這里看到這個簡單的代碼,其實它的底層函數是mysql_fetch_array(),只是織夢幫我們封裝好了,要查詢看這個$dsql->GetArray()函數,請在目錄/include/dedesql.class.php這個數據庫類里面大約383行就能找到。

接下來,程序通過type類型,來決斷顯示你的表單信息,雖然,這里只是一句話帶過,但是這段代碼相當多的,因為簡單這里不用分析了。我們重點看其中一句。

if ($row['varname']=='cfg_cookie_encode') {
$addstr=' <a href="javascript:resetCookieEncode();" style="color:blue">[重新生成]</a>';
}

這段代碼是對應后臺系統配置參數里面的“核心設置”cookie加密碼后面有個重新生成功能,如下圖8所示。

圖8

這個[重新生成]cookie加密碼,通過一個javascript的函數resetCookieEncode()(這個函數在模板sys_info.htm最上能找到),通過ajax技術,進入到php程序文件sys_info.php,在這個文件中最后一段代碼,計算隨機cookie加密碼來獲取生成密碼。關于cookie,seetion我們有一個專題,這里不作過講,在講織夢會員系統,會員注冊時會詳細講到。

現在我們分析完了,現在我們在織夢后添加新變量到“織夢基地”那個選項欄目里面:

變量名稱:cfg_zmpath
變更值:http://www.dedebase.com
變量類型:文本
參數說明:織夢基地網址
所屬組:織夢基地

填寫完這些后,點擊“保存變量”,點擊“織夢基地”,如下圖所示成功了。


收縮
  • 微信客服
  • 微信二維碼
  • 電話咨詢

  • 400-1100-266
婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
4438x亚洲最大成人网| 精品一区二区三区欧美| 五月天精品一区二区三区| 日韩一区欧美二区| 亚洲一区二区三区小说| 欧美日韩成人综合在线一区二区 | 日韩电影免费在线观看网站| 972aa.com艺术欧美| 久久亚洲精品国产精品紫薇| 精品中文字幕一区二区| 日韩免费一区二区| 久88久久88久久久| 日本一区二区电影| 99re在线精品| 美女视频一区二区| 中文字幕av一区二区三区| 一本大道久久a久久精二百| 一区二区三区在线视频免费观看| 色综合色狠狠天天综合色| 午夜精品在线视频一区| 久久网这里都是精品| 北条麻妃一区二区三区| 亚洲国产综合在线| 久久久精品免费网站| 91在线观看高清| 日本午夜精品视频在线观看| 国产亚洲精品bt天堂精选| 色婷婷久久综合| 九九视频精品免费| 婷婷中文字幕一区三区| 国产精品久久三区| 久久综合九色综合97婷婷女人| 在线观看日韩高清av| 91视频国产资源| 丰满少妇久久久久久久 | 欧美成人精品二区三区99精品| 国产 日韩 欧美大片| 狠狠色伊人亚洲综合成人| 日韩成人免费电影| 不卡视频在线看| 国产一区美女在线| 久久精品国产亚洲a| 成人午夜电影久久影院| 中文字幕一区二区不卡| 欧美不卡一二三| 国产资源在线一区| 国产午夜精品一区二区三区视频| 国产二区国产一区在线观看| 久久精品理论片| 成人午夜av影视| 成人福利视频在线| 欧美日韩中字一区| 日韩一区二区精品| 国产午夜精品一区二区| 国产视频亚洲色图| 亚洲美女偷拍久久| 日韩高清在线观看| 成人a免费在线看| 欧美日韩精品一区二区三区 | 亚洲国产成人午夜在线一区| 国产日韩精品一区二区三区 | 日韩一区二区免费在线观看| 精品国产电影一区二区| 国产精品福利一区| 蜜乳av一区二区| 99免费精品在线| 精品国产一区二区三区不卡| 日韩毛片一二三区| 日本午夜一本久久久综合| 成人动漫一区二区三区| 欧美日韩高清不卡| 国产精品久久免费看| 图片区日韩欧美亚洲| 国产成人免费视频一区| 日韩免费一区二区三区在线播放| 国产精品超碰97尤物18| 国产成人精品1024| 精品国产伦一区二区三区观看方式| 免费亚洲电影在线| 欧美日韩精品久久久| 亚洲婷婷在线视频| 日本高清无吗v一区| 国产欧美va欧美不卡在线| 国产资源在线一区| 国产视频一区在线观看| www.66久久| 一区二区三区四区乱视频| 色综合久久中文综合久久97| 亚洲天堂免费在线观看视频| 在线看日韩精品电影| 亚洲免费视频中文字幕| 在线国产电影不卡| 天堂影院一区二区| 日韩午夜在线观看| 国产精品亚洲成人| 亚洲一区影音先锋| 久久综合中文字幕| 欧美午夜片在线看| 国内外成人在线| 亚洲精品乱码久久久久久久久| 不卡电影一区二区三区| 中文字幕一区二区在线观看| 亚洲色欲色欲www| 欧美成人性战久久| 一本到不卡精品视频在线观看| 色综合一个色综合亚洲| 午夜精品福利视频网站| 久久久精品国产免大香伊| 在线一区二区三区做爰视频网站| 亚洲亚洲精品在线观看| 国产精品私房写真福利视频| 欧美精品亚洲一区二区在线播放| 成人污污视频在线观看| 日韩专区欧美专区| 亚洲午夜国产一区99re久久| 久久综合网色—综合色88| 91精品啪在线观看国产60岁| 成人黄色a**站在线观看| 麻豆精品在线观看| 三级欧美在线一区| 日韩电影免费在线| 首页综合国产亚洲丝袜| 一区二区三区蜜桃网| 一区二区三区四区视频精品免费| 一个色妞综合视频在线观看| 在线观看91av| 精品国精品国产| 亚洲黄色尤物视频| 一区二区三区不卡视频在线观看 | 亚洲综合免费观看高清完整版| 中文欧美字幕免费| 亚洲人成精品久久久久久| 亚洲成人免费看| 国产一区二区三区观看| 成人精品免费看| 欧洲精品在线观看| 久久久无码精品亚洲日韩按摩| 久久精品人人做人人综合 | 欧美亚洲动漫精品| 欧美日韩一区二区三区在线| 精品嫩草影院久久| 亚洲妇熟xx妇色黄| 99在线精品免费| 久久久电影一区二区三区| 亚洲午夜精品在线| 日本电影亚洲天堂一区| 久久久久久久久久看片| 亚洲一区二区三区视频在线 | 国产高清不卡一区| 国产91精品入口| www成人在线观看| 日韩黄色小视频| 精品视频一区 二区 三区| 国产精品水嫩水嫩| 色综合色综合色综合| 久久你懂得1024| 丝瓜av网站精品一区二区| www.欧美色图| 欧美一区二区三区四区视频| 国产精品国产自产拍高清av| aaa欧美色吧激情视频| 欧美国产日韩亚洲一区| 波多野结衣在线一区| 尤物在线观看一区| 欧美电影在线免费观看| 成人激情小说乱人伦| 久久精品99国产精品日本| 亚洲影院久久精品| 国产精品久久久久久久久搜平片| 欧美一区二区三区啪啪| 欧美一级免费大片| 91福利国产成人精品照片| 激情文学综合丁香| 亚洲一区影音先锋| 91免费国产在线| 色婷婷亚洲精品| 91色.com| 亚洲综合久久久| 欧美性色aⅴ视频一区日韩精品| 精品无码三级在线观看视频| 国产精品久久精品日日| 午夜成人免费视频| 日本高清不卡视频| 亚洲美女偷拍久久| 91在线视频网址| 中文字幕成人av| 国产白丝精品91爽爽久久| 精品少妇一区二区三区在线视频| 天天综合色天天综合色h| 欧美日韩在线三级| 亚洲素人一区二区| 菠萝蜜视频在线观看一区| 中文字幕乱码日本亚洲一区二区| 麻豆成人av在线| 精品久久久久久无| 国产精品一区二区在线看| 国产网红主播福利一区二区| 国产91丝袜在线播放| 成人免费一区二区三区视频| 91丨九色丨蝌蚪富婆spa|