一、destoon的目錄結構及一些核心的文件
/admin 系統核心后臺管理
├ image 后臺風格
├ template 后臺模板
/api 系統及第三方接口
├ kf 在線客服
├ map 電子地圖
├ oauth 一鍵登錄
├ pay 支付接口
├ stats 第三方統計
├ trade 擔保交易
├ ucenter UCenter
/file
├ backup 數據庫備份
├ cache 緩存
├ captcha 驗證碼字體
├ chat 聊天記錄
├ config 配置
├ data 導數據導入
├ email 郵件列表
├ flash Flash文件
├ font 中文字體
├ image 公用圖片
├ ipdata IP數據庫
├ log 日志
├ md5 MD5鏡像
├ mobile 手機列表
├ script javascript
├ session SESSION
├ setting 配置數據
├ temp 臨時目錄
├ update 系統更新
├ upload 上傳文件
/include 核心類庫
/install 安裝程序
/lang 語言包
/module 功能模塊
├ article 文章模塊
├article/admin 文章管理
├article/admin/template 文章管理模板
├article/common.inc.php 文章模塊初始化
├article/global.func.php 文章核心函數
├article/article.class.php 文章核心類
├article/index.inc.php 文章首頁
├article/index.htm.php 靜態文章首頁
├article/list.inc.php 文章列表頁
├ article/list.htm.php 靜態文章列表頁
├article/show.inc.php 文章內容頁
├article/show.htm.php 靜態文章內容頁
├article/search.inc.php 文章搜索
├article/task.inc.php 文章計劃任務
/skin 風格皮膚
├ default 默認風格
├default/image 圖片文件
├default/style.css CSS文件
/template 模板文件
├ default 默認模板
├default/index.htm 首頁模板
/upgrade 系統升級
/admin.php 后臺入口
/common.inc.php 系統初始化
/config.inc.php 系統配置
/index.html 靜態首頁
/index.php 動態首頁
/version.inc.php 版本控制
Destoon也算是mvc框架吧,舉個例子
根目錄下的文件夾
/company
里面的文件是MVC中的C,它控制對應module/company
中的文件也就是我們說的M,最后我們通過V也是就是tempalte/default/company
對應的文件來顯示我們的界面,整個流程基本就是這樣的。只要把這個流程弄清楚了,其他的就是寫代碼編程序的問題了。
二、主要的橫版模板及調用方法
1.全局標簽
網站名稱:{$DT[sitename]}
網站地址:{DT_PATH}
網站LOGO:{if$MODULE[$moduleid][logo]}{DT_SKIN}image/logo_{$moduleid}.gif
{elseif $DT[logo]}{$DT[logo]}{else}{DT_SKIN}image/logo.gif{/if}
版權信息:{$DT[copyright]}
風格路徑:{DT_PATH}
客服電話:{$DT[telephone]}
ICP備案號:{if $DT[icpno]}<a
target="_blank">{$DT[icpno]}</a> ┊ {/if}
VIP會員名稱:{VIP}
真實貨幣名稱:{$DT[money_name]}
真實貨幣單位:{$DT[money_unit]}
虛擬積分名稱:{$DT[credit_name]}
虛擬積分單位:{$DT[credit_unit]}
Title(網站標題):{$seo_title}
Meta Keywords(網頁關鍵詞):{$head_keywords}
Meta Description(網頁描述):{$head_description}
這些全局標簽是隨時拿出來都可以用的,不僅是在php文件中,在htm文件中也都是可以拿來用的,所以為了快速的、簡潔的寫代碼,這些全局變量我們一定要熟識。
2.連接地址
默認各個模塊連接:
會員:{$MODULE[2][linkurl]}
供應:{$MODULE[5][linkurl]}
求購:{$MODULE[6][linkurl]}
行情:{$MODULE[7][linkurl]}
公司:{$MODULE[4][linkurl]}
展會:{$MODULE[8][linkurl]}
資訊:{$MODULE[21][linkurl]}
招商:{$MODULE[22][linkurl]}
品牌:{$MODULE[13][linkurl]}
人才:{$MODULE[9][linkurl]}
知道:{$MODULE[10][linkurl]}
專題:{$MODULE[11][linkurl]}
圖庫:{$MODULE[12][linkurl]}
視頻:{$MODULE[14][linkurl]}
下載:{$MODULE[15][linkurl]}
發布信息:{$MODULE[2][linkurl]}{$DT[file_my]}
企業商鋪:{$MODULE[2][linkurl]}home.php
查看站內信:{$MODULE[2][linkurl]}message.php
管理買賣交易:{$MODULE[2][linkurl]}trade.php
完善企業資料:{$MODULE[2][linkurl]}edit.php?tab=2
注冊:{$MOD[linkurl]}{$DT[file_register]}
登錄:{$MODULE[2][linkurl]}{$DT[file_login]}
找回密碼:{$MOD[linkurl]}send.php
VIP頁面:{$MODULE[2][linkurl]}grade.php
WAP瀏覽:{if extend_setting('wap_enable')} <a href="{extendurl('wap')}">WAP瀏覽</a>{/if}
RSS訂閱:{if extend_setting('feed_enable')} | <a href="{extendurl('feed')}">RSS訂閱</a>{/if}
行情速遞:{$MODULE[7][linkurl]}{rewrite('price.php?product=all')}
企業新聞:{$MODULE[4][linkurl]}{rewrite('news.php?more=1')}
公告:{extendurl('announce')}
推廣:{extendurl('spread')}
廣告:{extendurl('ad')}
友情鏈接:{extendurl('link')}
申請友情鏈接:{extendurl('link')}{rewrite('index.php?action=reg')}
留言本:{extendurl('guestbook')}
投票:{extendurl('vote')}
3.首頁調用
導航菜單:
<ul>
<li{if $moduleid<4} class="menuon"{/if}>
<a href="{DT_PATH}">
<span>首頁</span>
</a>
</li>
{loop $MODULE $m}
{if $m[ismenu]}
<li{if $m[moduleid]==$moduleid} class="menuon"{/if}>
<a href="{$m[linkurl]}"{if $m[isblank]} target="_blank"{/if}>
<span{if $m[style]} style="color:{$m[style]};"{/if}>
{$m[name]}
</span>
</a>
</li>
{/if}
{/loop}
</ul>
調用登錄模塊:
{if $DT[page_login]}
{template 'user', 'chip'}
{/if}
調用分類模塊:
{php $mid = 5;}
{template 'catalog', 'chip'}
4.各個模塊數據的調用
供應:
最新供應信息:
1.<!--{tag("moduleid=5&condition=status=3
&length=34&condition=status=3&pagesize=5
&order=addtime desc&template=list-trade")}-->
2.<!--{php $tags=tag("moduleid=5&condition=status=3
&length=34&condition=status=3&pagesize=5
&order=addtime desc&template=null");}-->
{loop $tags $k $t}
<li>
<span class="f_r">[{area_pos($t[areaid], '/', 1)}]
</span>
<a href="{$t[linkurl]}" target="_blank" title="{$t[alt]}">{$t[title]}
</a>
</li>
{/loop}
標簽調用理論上需要網站管理人員有一定的HTML+CSS知識,并對PHP+MySQL有初步的了解。
調用過程實際是按照調用條件從數據表讀取調用數量條數據,并依排序方式排序,最終通過標簽模板的布局輸出數據。
函數原型:tag($parameter, $expires = 0)
,$parameter
表示傳遞給tag函數的字符串,系統自動將其轉換為多個變量 例如傳遞table=destoon&pagesize=10
,系統相當于得到$table = ‘destoon’
;$pagesize = 10
;
兩個變量$expires
表示緩存過期時間。
>0 :緩存$expires秒;
0 :系統默認時間;
-1 :不緩存;
-2 :緩存SQL;
一般情況保持默認即可。
變量$tags
以數組類型保存標簽調用的數據,可通過loop語法遍歷顯示。
$pages
保存數據分頁代碼,僅在調用了分頁時有效。$path
模塊路徑。
常用字段:title
標題;linkurl
鏈接;catid
分類ID;introduce
簡介;addtime
添加時間;
常用函數:dsubstr($string, $length, $suffix = ”)
將字符串$string
截取為$length
長,尾部追加$suffix
(例如..)
set_style($string, $style = ”, $tag = ‘span’)
將字符串$string
置于$tag
HTML標簽中并設置style為$style
linkurl($linkurl, $absurl =0)
將相對路徑$linkurl
修補為絕對路徑(防止鏈接錯誤)
date($format, $timestamp)
將時間戳$timestamp
轉化為$format
(例如Y-m-d)格式標簽模板: 模板保存于.
/template/default/tag/
目錄;建議不要刪除或者修改自帶的模板,推薦在自帶模板基礎上新建模板并應用。有時候難免會出現系統自帶模版不能滿足需求的情況,這時候你可以在此目錄下新建一個模版文件,然后按照自己的需求寫出自己的模板。
destoon顯示地區
顯示地區:
需要的函數是
include/module.func.php/get_mainarea($areaid, $area);
php頁面:$AREA=cache_read(‘area.php’);
//讀取緩存文件
靜態頁面調用:
<table width=”100%” cellpadding=”3″>
{php $mainarea = get_mainarea(0, $AREA)}
{loop $mainarea $k $v}
{if $k%2==0}<tr>{/if}
<td>
<a href=”{$MOD[linkurl]}
{rewrite(‘search.php?areaid=’.$v['areaid'].’&typeid=’.$typeid)}”>{$v[areaname]}
</a>
</td>
{if $k%2==1}</tr>{/if}
{/loop}
</table>
destoon調用分頁
分頁標簽
<!{tag(“moduleid=$moduleid&c=3$dtype&catid=$catid&pagesize=4&page=$page
&showpage=1&datetype=5&order=”.$MOD[order].”&template=list-sell”)}>
# 分頁:
{if $showpage && $pages}
<div class=”pages”>{$pages}
</div>
{/if}
destoon調用分類
$maincat = get_maincat(0, $CATEGORY);
get_maincat(0, $CATEGORY) //——在include/global_func.php 中
$childcat = get_maincat(0, $CATEGORY, 1);//— 調用超級欄目下的1級目錄
0 代表最最根目錄 1代表 level為1的目錄level 手動設置 默認都為1
如果0改為3 則為catid 為3 的目錄
小注意:
$CATEGORY= cache_read(‘category-’.$moduleid.’.php’);
此文件在模塊頁的common.inc.php頁面中
調用
{loop $maincat $k $v}
{if $k%$DT[page_subcat]==0}<tr>{/if}
<td>
<a
href=”{$MOD[linkurl]}{$v[linkurl]}”>{set_style($v[catname],$v[style])}</a>
<span>({$ITEMS[$v[catid]]})</span>
</td>
{if $k%$DT[page_subcat]==($DT[page_subcat]-1)}</tr>{/if}
{/loop}
注意:
在其模塊 module 文件夾下的 php頁面里必須有 $maincat
$MOD[linkurl] 是模塊也首頁地址 $v[linkurl]其下列表頁 加catid
標簽調用
標簽調用是根據調用條件(condition)從數據表(table)讀取調用數量(pagesize)條數據,并按排序方式(order)排序,最終通過標簽模板的布局輸出數據。
可以看出,標簽的工作分兩個部分,一是讀取數據,二是顯示數據。
標簽函數原型
標簽函數保存于 include/tag.func.php
tag($parameter, $expires = 0)
$parameter
表示傳遞給tag函數的字符串,系統自動將其轉換為多個變量
例如傳遞 table=destoon&pagesize=10&hello=world
系統相當于得到
$table = ‘destoon’; $pagesize = 10; $hello = ‘world’;
三個變量。
數據讀取過程
例如以下標簽:
<! {tag(“table=sell&c=3&order=addtime desc&pagesize=10″)} ;>
會被轉換為如下的SQL語句:
SELECT *
FROM destoon_sell
WHERE status=3
ORDER BY addtime DESC
LIMIT 0,10
讀出的數據會保存在 $tags
數組里
數據顯示過程
1、通過標簽模板顯示
傳遞&template=abc
給標簽函數,例如:
<! {tag(“table=…&template=abc”)} >
默認的標簽模板保存在模板目錄/tag/目錄里,例如&template=abc
將調用模板目錄/tag/abc.htm
模板來顯示數據,如果標簽模板放于其他目錄,例如def
,則傳遞&dir=def&template=abc
,系統將調用模板目錄/def/abc.htm
模板
2、直接在模板里循環數據
<! {php $tags=tag(“table=…&template=null”);} >
此寫法傳遞標簽模板為null,并且直接返回數據給$tags
數組,此時可以直接在模板里循環了
以下為一個完整的示例:
<! {php $tags=tag(“table=…&template=null”);} >
{loop $tags $t}
…
{/loop>
第一種寫法一般用于多次調用的數據,第二種寫法一般用于只調用一次的數據。
常用參數及含義
moduleid
指模塊ID,可在后臺模塊管理里查詢。對于直接調用模塊的數據,設置正確的模塊ID后,將不需要傳遞table
參數,系統會自動獲取。
例如傳遞moduleid=5
,系統將識別為調用供應信息,自動設置table
參數為sell
table
指表名,可在后臺數據庫維護里查詢。對于Destoon系統表,不需要加表的前綴;對于非Destoon系統表,需要填寫完整的表名,且傳遞prefix參數
例如對于Destoon系統表,傳遞table=sell,如果表前綴為destoon_,系統將識別表名為 destoon_sell
對于非Destoon系統表,傳遞table=tb_abc&prefix=或者table=abc&prefix=tb_,系統將識別表名為 tb_abc
fields
指查詢的字段,默認為*。可以傳遞例如 fields=title,addtime
,但是一般情況下無需傳遞,Destoon獨有的標簽緩存機制會自動緩存查詢結果,不必擔心效率問題。
condition
指查詢的條件,如果不傳遞,則為1,代表任意條件的數據(此項需了解SQL語法)。Destoon所有模塊遵循統一標準開發,所以很多條件是通用的。
例如 status=3表示正常通過的信息、status=3 and level=1表示級別為1的信息、status=3 and thumb<>”表示有標題圖片的信息等。
order
指數據的排序方法(此項需了解SQL語法)。
例如order=addtime desc
表示按添加時間降序排列、order=itemid desc
表示按itemid降序排列、order=rand()
表示隨機數據等。
pagesize
指調用數據的數量,如果不傳遞,默認為10。
template
指指定的標簽模板,如果不傳遞,默認為list,位于模板目錄/tag/list.htm
,如果傳遞為null
,表示不應用標簽模板。參見上述數據顯示過程。
其他常見用法舉例
控制標題長度
在標簽里傳遞length
參數,例如&length=20表示20個字符長度(GBK一個漢字占2個字符,UTF-8一個漢字占3個字符),一般情況建議用css隱藏多余字符(定義height和overflow:hidden)
傳遞length
參數,系統僅對title字段自動截取,如果需要截取其他字段,可用dsubstr函數
例如 {dsubstr($t[company], 20, ‘…’)}
表示截取company字段為20個字符,截取后,結尾追加…
設置日期顯示格式
可以在標簽里傳遞datetype
參數:
1 表示年;
2 表示月-日;
3 表示年-月-日;
4 表示月-日 時:分;
5 表示年-月-日 時:分;
6 表示年-月-日 時:分:秒
也可以在模板里直接使用date
函數,例如{date(‘Y-m-d’, $t[addtime])}
表示將時間轉換為 年-月-日 格式
調用某一分類的信息
在標簽里傳遞catid參數,例如&catid=5表示調用分類ID為5的所有信息。
如果調用多個分類,用逗號分隔分類ID,例如
&catid=5,6,7
表示調用分類ID為5、6、7的所有信息。
分類調用默認包含子分類的信息,如果不需要包含子分類,可設置&child=0
參數。
例如&catid=5&child=0
表示只調用分類ID為5的信息,不包括子分類的信息。
調用某一地區的信息
調用地區信息和上述調用分類信息的方法完全相同,將其中的catid
換為areaid
即可。
顯示信息所在分類
<a
href=”{$MODULE[$moduleid][linkurl]}{$CATEGORY[$t[catid]][linkurl]}”>{$CATEGORY[$t[catid]][catname]}
</a>
控制列數
此項常用于圖片的布局,可使用cols參數。
例如調用12張圖片,一行顯示4個,共3行,則傳遞&pagesize=12&cols=4
支持cols
參數的標簽模板限thumb-table.htm和list-table.htm
其中,thumb-table.htm
顯示圖片列表,list-table.htm
顯示文字列表
如果新建支持cols
的標簽模板或直接循環$tags
,可參考以上兩個模板的寫法
上述效果可以也可以通過CSS實現,無需使用表格,請自行書寫
顯示文章的簡介
使用{$t[introduce]}
變量,如果要截取字數,例如80字符,可使用{dsubstr($t[introduce], 80, ‘…’)}
標簽看似復雜難懂,實際上在理解各個參數的含義和調用流程后,您會了解到標簽實際簡單自由、靈活易用、功能強大。
默認模板里已提供了大量的調用范例和標簽模板,可以在學習中參閱和調試。
三、第三方支付接口文件/api
Destoon里面有一個很重要的板塊,就是商城板塊。有商城就會有交易,而有交易就必須要有一個第三方支付平臺,比如支付寶、財付通、網銀等等平臺。我們就以支付寶為例,你首先需要向支付寶申請一個接口,關于怎么申請支付寶接口百度文庫里有一篇文章寫得很清楚點這里看文章。有了支付寶接口我們就可以在我們的網站后臺設置了。在后臺會員管理/模塊設置里面選擇支付寶。
有一個文檔專門講在線支付配置的可以去看看點這里。