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

主頁 > 網站建設 > 建站知識 > 分析織夢后臺添加文檔功能

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

POST TIME:2020-04-11 21:16

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


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

  • 400-1100-266
主站蜘蛛池模板: 株洲市| 正安县| 宜黄县| 鄂托克旗| 富阳市| 武安市| 沾化县| 微山县| 建水县| 开封市| 青海省| 名山县| 历史| 巩义市| 那坡县| 山阳县| 正阳县| 黄平县| 栾城县| 元氏县| 澎湖县| 宁陕县| 永福县| 唐河县| 乌审旗| 嘉义市| 海丰县| 紫阳县| 江达县| 大新县| 阿勒泰市| 马边| 松江区| 昭平县| 师宗县| 偃师市| 吴川市| 西盟| 昌江| 且末县| 镇安县|