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

主頁 > 網(wǎng)站建設(shè) > 建站知識 > 分析織夢后臺添加文檔功能

分析織夢后臺添加文檔功能

POST TIME:2020-04-11 21:16

當(dāng)我們在織夢后臺建立欄目后,在這個欄目下面點擊“添加文檔”,會列出一個界面(實際上是一個表單),然后添加內(nèi)容,點擊保存,文章(這里以文章模型為例子,其它的模型功能實現(xiàn)類似)就發(fā)布了,今天就分析這一系列功能織夢是如何實現(xiàn)的。
用到的文件:catalog_do.php,content_list.php,content_list.htm,article_add.php,article_add.htm,article_add.php,article_add.htm
用到的數(shù)據(jù)庫表:dede_channeltype,dede_arctype
看似簡單,我們用鼠標(biāo)點二次,就可以發(fā)布一篇文章,其實,用到的知識非常多,有php知識、數(shù)據(jù)庫知識、javalscript(包括jquery框架)、css、html等知識,雖然,簡單的二個鼠標(biāo)操作,但是用到了幾乎所有的網(wǎng)站建設(shè)的知識,如果我們把這個流程分析透徹,那么,對織夢特別是二次開發(fā),會有很大幫助,而且可舉一反三,雖然,這次分析的是一個文章模型,但大同小異,下面就讓我們開始分析吧。
添加欄目后(我提前添加了一些文章,作為備用)會進入到如下圖所示。
這個界面用到的模板是content_list.htm,界面對應(yīng)的程序是content_list.php,因為今天我們分析“添加文檔”功能,所以,content_list.php這個文件今天用不到,但是這個引入的模板文件content_list.htm我們要用到,我們打開這個模板文件,大約在22行,找到如下這樣一段代碼<input type='button' class="coolbg np" onClick="location='catalog_do.php?channelid={dede:global.channelid/}&cid={dede:global.cid/}&dopost=addArchives';" value='添加文檔' />,我們重點看這段代碼里面這一段catalog_do.php?channelid={dede:global.channelid/}&cid={dede:global.cid/}&dopost=addArchives,這一段里面的catalog_do.php文件是重點,這個php文件,是通過后面的條件,來判斷添加的文檔是哪個模型,哪個欄目,并在catalog.do.php程序文件里面調(diào)用出相應(yīng)的發(fā)布表單。
我們打開catalog_do.php這個文件,找到下面的段代碼,如圖所示。
找到if($dopost=="addArchives"),這個判斷,里面的$dopost=="addArchives"與上面的catalog_do.php?channelid={dede:global.channelid/}&cid={dede:global.cid/}&dopost=addArchives最后那個條件dopost=addArchives,是不是相對應(yīng)?是的,正是通過這個條件,跟這個判斷,使catalog_do.php文件和content_list.htm模板文件關(guān)聯(lián)起來,這是重點,也是織夢二次開發(fā)重點知識,不僅是織夢,其它cms也是這樣應(yīng)用的。
接下來,我們詳細看一下增加文檔這個函數(shù)function addArchives(),通過條件dopost=addArchives,我們進入到catalog_do.php文件后,程序就找到了函數(shù)function addArchives(),然后,程序判斷如果是模型沒有指定并且欄目也沒有指定(這種情況是有的,如我們在后臺左邊菜單導(dǎo)航里面的“我發(fā)布的文檔”,程序就是沒有指定模型id和欄目id)時,點“添加文檔”后,通過這段代碼header("location:article_add.php"),調(diào)用調(diào)用默認文章調(diào)用發(fā)布表單;接下來假設(shè)模型id不空時,程序會通過查詢數(shù)據(jù)庫表dede_channeltype,查出一條記錄并賦給變量$row,再通過這個段代碼$gurl = $row["addcon"],取出對應(yīng)的addcon的值賦給$gurl,這樣我們可以通過重新定位功能代碼header("location:{$gurl}?channelid={$channelid}&cid={$cid}"),來達到和前面的header("location:article_add.php")這句的功能,只不過在這次后面加上了二個條件而已。
我們看一下數(shù)據(jù)庫表dede_channeltype里面對應(yīng)的字段addcon就是添加文章、圖片集,分類信息,軟件等的添加處理程序,由此我們不難發(fā)現(xiàn),只要我們把addcon的值取出來,再通過header定位功能,就可以實現(xiàn)當(dāng)我們點擊“添加文檔”時,轉(zhuǎn)到對應(yīng)的內(nèi)容的添加界面。
第三個判斷,當(dāng)模型id和欄目id都存在時,這次,只用數(shù)據(jù)庫表dede_channeltype這個是不行的,因為,這個表里面沒有字段cid,這個字段在數(shù)據(jù)庫表dede_arctype這個里面,現(xiàn)在問題是我們要取到addcon的值,但表dede_arctype這里面又沒有,而這個表又用到,怎么辦呢?只能把這二個表用select 里面的左拼接查詢出來,這個也簡單。就是用的這句查詢功能SELECT ch.addcon FROM `dede_arctype` tp LEFT JOIN `dede_channeltype` ch ON ch.id=tp.channeltype WHERE tp.id='$cid' ,如果有興趣的可以研究一下。學(xué)過數(shù)據(jù)庫的這個一看就明白,這樣我們又把第三種情況對應(yīng)的addcon值也查詢出來的。這樣對應(yīng)的發(fā)布表單也調(diào)出來了。
接下來我們進入了“發(fā)布文章”界面(這里以第三種情況,即有模型id也有欄目id為例子),如下圖所示。
這個界面是php程序article_add.php,調(diào)用模板article_add.htm的界面,這個界面在前面的教程中我們已經(jīng)講了,就是一個表單,我們打開模板article_add.htm,打到表單,前面三行代碼如下:
<form name="form1" action="article_add.php" enctype="multipart/form-data" method="post" onSubmit="return checkSubmit()">
<input type="hidden" name="channelid" value="<?php echo $channelid?>" />
<input type="hidden" name="dopost" value="save" />
這三行代碼是重點,首頁第一行,我們不難看出只要我們點保存后,我們添加文章內(nèi)容就會被傳到article_add.php文件里,然后,這個文件里面的程序會把收到的數(shù)據(jù),通過sql語句insert into插入到數(shù)據(jù)庫,并保存,這一流程我們
在“織夢后臺添加頂級欄目詳解”教程里面已經(jīng)講解了,這里不作多贅述。
第二行代碼就是傳遞給article_add.php程序后,對應(yīng)的條件,這個條件是在我們點擊“添加文檔”后自動從文件catalog_add.php獲取的。最后一行是一個條件dopost=save,當(dāng)我們提交后,表單數(shù)據(jù)會通過這個,尋找文件article_add.php里面對應(yīng)的條件if($dopost=='save'),如果這個條件成立,就說明用戶已經(jīng)點擊保存提交了,接下來就是把數(shù)據(jù)插入到數(shù)據(jù)庫里面,保存到主表和保存到附加表。
接下來,程序就是對提交的數(shù)據(jù)生成html文檔了,也就是我們打開網(wǎng)站看到的一篇篇文章,生成HTML功能我們會有專題,這里不作多講解。
下面是對本次教程,一個簡單的圖示,幫助大家理解。


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

  • 400-1100-266
主站蜘蛛池模板: 遵义市| 安图县| 古田县| 六盘水市| 杭锦后旗| 信丰县| 嫩江县| 龙江县| 峡江县| 永德县| 城固县| 沈丘县| 绥阳县| 大兴区| 合作市| 海南省| 丹阳市| 辰溪县| 左权县| 韩城市| 珲春市| 乌审旗| 镇赉县| 阳江市| 洪湖市| 岳阳县| 娱乐| 巴林右旗| 资中县| 沧州市| 瑞昌市| 宝鸡市| 阿拉善左旗| 天长市| 祁连县| 海城市| 合川市| 普格县| 夹江县| 醴陵市| 遂川县|