Dede二次開發程序詳解(dede愛好者必備)
調用說明:推薦會員(帶用戶頭像)
[quote]
{dede:sql sql="SELECT mid,mtype,userid,uname,matt,face
FROM dede_member
where matt = 1 and mtype='個人'
LIMIT 0 , 10"}
頭像:<img src="[field:face runphp='yes']
if(!@me)@me = 'http://bbs.dedecms.com/attachment/upload/87/11787.gif';
[/field:face]" />
用戶名:<a href='[field:global name='cfg_cmspath'/]/member/?[field:userid/]/'>[field:uname/]</a>
{/dede:sql}
[field:face runphp='yes']
if(!@me)@me = 'http://bbs.dedecms.com/image/post/smile/default/14.gif';
[/field:face]
為用戶頭像圖片
[img]http://bbs.dedecms.com/attachment/upload/87/11787.gif[/img]
是如果用戶頭像為空的話要顯示的圖像 這個大家自己改吧
[/quote]
調用說明:會員積分排行
[quote]
{dede:sql sql="Select mid,userid,uname,scores From dede_member order by scores desc limit 0,10"}
<dd><span class="name"><a href='[field:global name='cfg_cmspath'/]/member/?[field:userid/]/'>[field:uname/]</a>
</span><span class="jifen">積分[field:scores/]</span></dd>
{/dede:sql}
全部測試通過
[/quote]
這時需要通過dedecms后台中的ucenter模塊進行Ucenter配置。
然后,在瀏覽器地址欄輸入http://localhost/dede/login.php,打開后台管理登錄界面,輸入密碼后進入dedecms后台管理。
dedecms后台管理界面的左側導航欄,點擊“模塊”標簽,注意下面的“UCenter模塊”。
點擊“UCenter配置”,進入以下頁面。
“服務端地址“填:http://localhost/ucenter (本地機),創始人密碼即是你在安裝UCenter時設定的創始人密碼;服務端IP地址填你的Ucenter安裝的空間IP(本地機填127.0.0.1),輸入后點“確認安裝”。出現安裝成功提示。
退出dedecms管理后台,再次進入UCenter用戶管理中心,這時我們會發現在“應用管理”中多了一項“我的網站”,並且顯示的是“通信成功”了。
我們再通過瀏覽器訪問http://localhost/uchome/index.php, 用管理員的賬號進入Uchome首頁,點擊“設置”進入另外一頁,再點擊右上角的“高級管理”,輸入密碼后點擊“進入平台”進入高級管理平台。
在左側導航欄的“高級設置”中找到一項“UCenter應用”點擊進入。
在這里我們可以看到我們加入的三個應用,分別點擊三個應用下面的“提交更新“。退出管理界面,現在我們再回過頭去測試一下看就可以同步了。
七、經驗總結及疑問
如果沒有做到Dedecms、UChome、Discuz!中同時登錄及退出的問題其關鍵就是在uchome中的“ucenter應用”中沒有“提交更新”。
有時候安裝dedecms、uchome或ucenter出現問題安裝不了或出錯等等,有的很多就是環境沒有搭載好,所以我建議就安裝dedecms提供的DedeAMPZForServer套件,至少在服務器的搭載上我們不需要花費太多的精力。
另外注意的是UCenter的配置。比如“通信密鑰”是否一致。這個一般是導致 UCenter 與Dedecms、UChome、Discuz!等通信失敗的主要原因之一。這個密鑰是可以自己隨便寫的,但要保證 UCenter 與 DIscuz 的密鑰一致。又比如“ID”。查看 UCenter 后台的應用 ID 是否與Dedecms、UChome、Discuz!等后台的 ID 一致,如不一致,請修改各個應用后台的"UCenter 應用 ID"。這個也是導致 UCenter 與 DIscuz 通信失敗的主要原因之一。關於UCenter的配置等這一點可以參考UCenter官方提供的說明手冊。
功能:圖書封面圖片調用,含標題
代碼:
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
{dede:sql sql="Select id,bookname,author,pubdate,body,litpic From dede_story_books order by id desc limit 0,10"}
<td><a href="/book/[field:id function=DedeID2Dir(@me)/]/[field:bookname function=GetPinyin(@me)/]-[field:id/].html"><img src="[field:litpic/]" border="0" width="75" height="100" /></a><br /><a href="/book/[field:id function=DedeID2Dir(@me)/]/[field:bookname function=GetPinyin(@me)/]-[field:id/].html">[field:bookname function="cn_substr(@me,12)"/]</a>
</td>
{/dede:sql}
</tr>
</table>
功能:最新連載內容調用,含欄目名稱、書名、章節名、發布時間。
代碼:
<table width="688" border="0" cellpadding="0" cellspacing="0">
{dede:bookcontentlist row=10 booktype=0 orderby=lastpost author= keyword=}
<tr>
<td align="left" width="30"></td>
<td width="300" align="left">[field:cataloglink/] [field:booklink/]</td>
<td width="318" align="left">[field:contentlink/]</td>
<td width="40" align="right">[field:lastpost function="GetDateMk(@me)"/]</td>
</tr>
{/dede:bookcontentlist}
</table>
功能:熱門圖書調用
代碼:
{dede:booklist row=5 booktype=0 titlelen=10 imgwidth=80 imgheight=100 orderby=weekcc}[field:imglink /]{/dede:booklist}
功能:推薦圖書調用
代碼:
{dede:booklist row=5 booktype=0 titlelen=10 imgwidth=80 imgheight=100 orderby=commend}[field:imglink /]{/dede:booklist}
分類信息
功能:調用地區與類型
代碼:
{dede:infolink}
<b>地區:</b>[field:nativeplace /]<br />
<b>類型:</b>[field:infotype /]
{/dede:infolink}
功能:調用最新信息
代碼:{dede:arclistsg row=10 titlelen=32 orderby=pubdate channelid=-8 idlist=}
[[field:typelink/]] [field:textlink/][field:pubdate function="MyDate(m-d,@me)"/]
{/dede:arclistsg}
功能:分類信息圖片調用
代碼:
{dede:arclistsg row=1 titlelen=30 flag=c,a infolen=80 orderby=pubdate channelid=-8 typeid=6 imgwidth=105 imgheight=137}
<a href="[field:arcurl/]">[field:image/]</a><br/><a href="[field:arcurl/]" >[field:title /]</a>{/dede:arclistsg}
會員模塊
功能:分列顯示,按積分排行,帶頭像。正確鏈接到會員個人空間。
代碼:
<table border="0" width="220" cellspacing="0" cellpadding="0">
<tr>
{dede:sql sql="Select mid,userid,uname,face,scores From dede_member order by scores desc limit 0,2"}
<td align="center" width="110"><a href="[field:global name="cfg_cmspath"/]/member/index.php?uid=[field:userid/]" target="_blank"><img src="[field:face/]" alt=[field:spacename/] width="52" height="52" / border="0"><br>[field:uname/]<br>積分:[field:scores/]< /a></td>
{/dede:sql}
</tr>
</table>
圈子模塊
功能:調用圈子標題,分10行顯示
代碼:
{dede:sql sql=" SELECT groupimg,groupid,groupname FROM dede_groups WHERE ishidden=0 ORDER BY threads DESC LIMIT 0,10"}
<li><a href="group/group.php?id=[field:groupid/]" title="[field:groupname/]" target="_blank"> [field:groupname/]</a></li>
{/dede:sql}
功能:熱門圈子,調用圖片及標題,分10列顯示
代碼:
<table border="0" width="100%" id="table5" cellspacing="0" cellpadding="0">
<tr>
{dede:sql sql=" SELECT groupimg,groupid,groupname FROM dede_groups WHERE ishidden=0 ORDER BY threads DESC LIMIT 0,10"}
<td><a href="group/group.php?id=[field:groupid/]" _fcksavedurl=""group/group.php?id=[field:groupid/]"" title="[field:groupname/]" target="_blank"><img src="[field:groupimg/]" border="0" width="75" height="100" /><br /> [field:groupname function="cn_substr(@me,12)"/]</a>
</td>
{/dede:sql}
</tr>
</table>
功能:圈子話題調用。
代碼:{dede:sql sql=" SELECT subject,digest,replies,gid,tid FROM dede_group_threads WHERE closed=0 ORDER BY dateline DESC LIMIT 0,10"}
<li><a href="group/viewthread.php?id=[field:gid/]&tid=[field:tid/]" _fcksavedurl=""group/viewthread.php?id=[field:gid/]&tid=[field:tid/]"" title="[field:subject/]" target="_blank"> [field:subject/]</a></li>
{/dede:sql}
功能:最新圈子,調用圖片及標題,分10列顯示
代碼:
<table border="0" width="100%" id="table5" cellspacing="0" cellpadding="0">
<tr>
{dede:sql sql=" SELECT groupimg,groupid,groupname FROM dede_groups WHERE ishidden=0 ORDER BY groupid DESC LIMIT 0,3"}
<td><a href="group/group.php?id=[field:groupid/]" _fcksavedurl=""group/group.php?id=[field:groupid/]"" title="[field:groupname/]" target="_blank"><img src="[field:groupimg/]" border="0" width="75" height="100" /><br /> [field:groupname function="cn_substr(@me,12)"/]</a>
</td>
{/dede:sql}
</tr>
</table>
下載模塊
功能:顯示符號、標題及發布日期
代碼:
<table width=98% border=0 cellspacing=0 cellpadding=0>
{dede:arclist row=10 titlelen=36 typeid="120" orderby=pubdate}
<tr>
<td width=2%></td>
<td valign=bottom width=80% ><font color="#0000ff">↓</font> <a href="[field:arcurl /]">[field:title /]</a></td>
<td align=right valign=middle width=18% class=font_green>[field:pubdate function="MyDate(m-d,@me)"/]</td>
</tr>
{/dede:arclist}
</table>
問答模塊
功能:包含問答分類及問答標題。
代碼:
{dede:ask row=10 qtype=}
<span class="tclass">[<a href=[field:typeurl/]>[field:tidname/]</a>]</span>
<span class="tlink"><a href="[field:url/]">[field:title/]</a></span><br />
{/dede:ask}
{dede:sql sql='Select A.id,A.title,D.id,D.downloads from dede_archives as A Left Join dede_downloads as D ON
A.id = D.id order by downloads DESC limit 0,10; '}
<li><a href="[field:id runphp='yes'] $id=@me;@me='';$url=GetOneArchive($id);@me=$url['arcurl'];[/field:id] ">[field:title/]</a>下載次數[field:downloads/]</li>
{/dede:sql}
這個就是SQL調用下載排行的,已經實現了靜態地址調用。limit 0,10; 的意思是調用10調,想調用多少條只要修改“10”為你想要的數字,如過你想實現調用特定版塊的下載排行,只需要在limit 0,10; 的后面加上"where typeid = xx " XX就是欄目ID。比如我想調用欄目10的下載排行,代碼就是這樣:
{dede:sql sql='Select A.id,A.title,D.id,D.downloads from dede_archives as A Left Join dede_downloads as D ON
A.id = D.id WHERE typeid = 10 order by downloads DESC limit 0,10;'}
<li><a href="[field:id runphp='yes'] $id=@me;@me='';$url=GetOneArchive($id);@me=$url['arcurl'];[/field:id] ">[field:title/]</a>下載次數[field:downloads/]</li>
{/dede:sql}
這里有個小技巧:typeid =后面的值可以用當前欄目ID的標簽,這樣可以在每個欄目列表頁實現當前欄目的下載排行調用,具體的望讀者自己探究。當然也可以用typeid >或者<來限定欄目范圍。
特定欄目調用已經解決,那么就剩下分時段調用了,可分為日,周,月,年,甚至自定義天數或者小時,代碼如下:
{dede:sql sql='Select A.id,A.title,D.id,D.downloads from dede_archives as A Left Join dede_downloads as D ON
A.id = D.id WHERE typeid = 10 and pubdate > UNIX_TIMESTAMP( CURDATE( ) - INTERVAL 7 day) order by downloads DESC limit 0,10;'}
<li><a href="[field:id runphp='yes'] $id=@me;@me='';$url=GetOneArchive($id);@me=$url['arcurl'];[/field:id] ">[field:title/]</a>下載次數[field:downloads/]</li>
{/dede:sql}
注意,我這是在上一個特定欄目的前提下再加一個時間條件語句,所以,我用了 and ,后面藍色字體部分為所需要的內容,如果不想特定欄目,就把有色字體部分代碼和緊跟着的“AND”去掉就行。pubdate > UNIX_TIMESTAMP( CURDATE( ) - INTERVAL 7 day) 的意思是取7天內的數據,我們只需要修改數字"7"就可以實現我們的目標,比如10天就是pubdate > UNIX_TIMESTAMP( CURDATE( ) - INTERVAL 10 day) ,如果想調用一個月的數據,那就是pubdate > UNIX_TIMESTAMP( CURDATE( ) - INTERVAL 1 month) 一年的話只要把"day"改成"year"即可。
標簽到這里基本上已經完美了。希望大家自己多多實驗,多探究,多查相關資料。
如果有不懂請留言。
附送另外一個小小的標簽,關於調用今日更新情況的調用:
<dt class='light'><strong>小小說閱讀</strong><div align=right><font size=3>【{dede:sql sql="SELECT count( ID ) AS c FROM dede_archives WHERE pubdate > UNIX_TIMESTAMP( CURDATE( ) ) and typeid = 特定欄目ID"}今
這個HACK是在現有的兩個版本上修改而成的,沒有進行完全測試,如有問題請告知。
將以下內容存為CREDIT_DEL.PHP文件
<?php
if(!defined("CREDIT_DEL")) {
die("Access Denied");
}
############ 以下是安裝方法 ############
/*
1.將本文件放到 index.php所在目錄下
2. 購買人數 hack
請用數據庫管理工具 phpmyadmin 在
TABLE : cdb_threads 的最尾
----新增----
欄位 : buy
型態 : INT
長度 : 3
預設值 : 0
3. 將本文件放到 index.php所在目錄下
在 viewthread.php 中的32行左右
在下面代碼
if(!$forum[getattachperm] && !$allowgetattach) {
showmessage("對不起,您的級別〔{$grouptitle}〕無法下載附件。");
} elseif($forum[getattachperm] && !strstr($forum[getattachperm], "\t$groupid\t")) {
showmessage("對不起,只有特定用戶可以下載本論壇的附件,請返回。");
}
的下面加上以下代碼
#### 付款下載限制的帖加/減積分的HACK開始 ####
if($attach[creditsrequire] && $attach[creditsrequire] <= $credit && !$ismoderator) {
if(!$credit_del_yes)
showmessage("此文件需要支付<b><font color=red>$attach[creditsrequire]</b></font>{$creditunit}{$credittitle} 才能下載<br><p> <a href=viewthread.php?action=attachment&aid=$aid&credit_del_yes=yes><font color=blue>算你狠, 我買!</font></a><p>太奸詐了,我不干!");
define("CREDIT_DEL", TRUE);
$credit_del = 'down';
include'credit_del.php';
}
$ck_credit_del = $tid.'_credit_del';
if($credit < "$thread[creditsrequire]") {
if($HTTP_COOKIE_VARS[$ck_credit_del] =="" and $status!="游客"){
showmessage("你沒有錢買呀,請努力灌水賺錢吧 ^^。");
}elseif($HTTP_COOKIE_VARS[$ck_credit_del] =="" and $status=="游客"){
showmessage("游客不能購買的。");
}elseif($HTTP_COOKIE_VARS[$ck_credit_del] !="" and $status=="游客"){
showmessage("游客不能購買的。");
}
}
#### 付款下載限制的帖加/減積分的HACK結束 ####
在 viewthread.php 中的138行左右
修改以下代碼
if(!$forum[viewperm] && !$allowview) {
showmessage("對不起,您的等級〔{$grouptitle}〕無法瀏覽文章。");
} elseif($forum[viewperm] && !strstr($forum[viewperm], "\t$groupid\t")) {
showmessage("對不起,本論壇只有特定會員可以瀏覽,請返回。");
} elseif($thread[creditsrequire] && $thread[creditsrequire] > $credit && !$ismoderator) {
showmessage("對不起,本貼要求{$credittitle}高於 $thread[creditsrequire] {$creditunit}才可瀏覽,請返回。");
}
將以上代碼 改成以下代碼
#### 付款瀏覽限制的帖加/減積分的HACK開始 ####
if(!$forum[viewperm] && !$allowview) {
showmessage("對不起,您的等級〔{$grouptitle}〕無法瀏覽文章。");
} elseif($forum[viewperm] && !strstr($forum[viewperm], "\t$groupid\t")) {
showmessage("對不起,本論壇只有特定會員可以瀏覽,請返回。");
} elseif($thread[creditsrequire] && $thread[creditsrequire] > $credit && !$ismoderator) {
showmessage("對不起,本貼要求{$credittitle}高於 $thread[creditsrequire] {$creditunit}才可瀏覽,請返回。");
}
if($thread[creditsrequire] && $thread[creditsrequire] <= $credit && !$ismoderator) {
$ck_credit_del = $tid.'_credit_del';
if(!$credit_del_yes && !$HTTP_COOKIE_VARS[$ck_credit_del])
showmessage("此主題需要支付<b><font color=red>$thread[creditsrequire]</b></font>$creditunit{$credittitle} 才能觀看內容, <br>已有 $thread[buy]人 購買了,<p> <a href=viewthread.php?tid=$tid&credit_del_yes=yes><font color=blue>算你狠, 我買!</font></a><p>太奸詐了,我不干!我返回。");
define("CREDIT_DEL", TRUE);
$credit_del = 'view';
include'credit_del.php';
}
$ck_credit_del = $tid.'_credit_del';
if($credit < "$thread[creditsrequire]") {
if($HTTP_COOKIE_VARS[$ck_credit_del] =="" and $status!="游客"){
showmessage("你沒有錢買呀,請努力灌水賺錢吧 ^^。");
}elseif($HTTP_COOKIE_VARS[$ck_credit_del] =="" and $status=="游客"){
showmessage("游客不能購買的。");
}elseif($HTTP_COOKIE_VARS[$ck_credit_del] !="" and $status=="游客"){
showmessage("游客不能購買的。");
}
}
#### 付款瀏覽限制的帖加/減積分的HACK結束 ####
------------------------viewthread.php 條改完成------------------------
*/
############ 以上是安裝方法 ############
############ (請不要更改以下設定) 以下是具體設置 都給出了默認值 以供參考 #################################################
$credit_del_view = 0; //針對所有有積分限制的帖子 進入時所扣除的分數; 如果不想扣除指定分數而是扣除發帖者所給的限制分 請設為 0
$credit_del_down = 0; //針對所有有積分限制的下載 下載時所扣除的分數; 如果不想扣除指定分數而是扣除發帖者所給的限制分 請設為 0
$credit_add_down_y = 1; //選擇是否給提供附件者加分 1為是 0為否
$credit_add_down1 = 0; //針對所有有積分限制的下載 下載時給提供者的分數; 如果不想增加指定分數而是增加發帖者所給的限制分 請設為 0
$credit_add_down_lim = 10; //當$credit_add_down1=0時 這是限定分 即限制他人下載附件時給作者增加的分數(有可能作者設定的限制分很高)
############ 具體設置到此為止 #######################################################################
############ 以下是瀏覽扣分和加分的部份 ############
if($cdbuser and $credit_del == 'view') {
$ck_credit_del = $tid.'_credit_del';
if(!$HTTP_COOKIE_VARS[$ck_credit_del]) {
if($credit_del_view>$credit) $credit_del_view = $credit;
$credit_del_view = $credit_del_view?$credit_del_view:$thread[creditsrequire];
$db->query("UPDATE $table_members SET credit=credit-'$credit_del_view' WHERE username='$cdbuser'");
$CDB_SESSION_VARS[credit] = $credit-$credit_del_view;
//以下是付款給發表主題者(金錢 是由發表主題者所設)
$query_xgzone = $db->query("SELECT tid,author FROM cdb_threads WHERE tid='$tid'");
$post = $db->fetch_array($query_xgzone);
$db->query("UPDATE $table_members SET credit=credit+'$credit_del_view' WHERE username='$post[author]'");
//以上是付款給發表主題者(金錢 是由發表主題者所設)
//以下是該主題購買人數
$db->query("UPDATE cdb_threads SET buy=buy+'1' WHERE tid='$tid'");
//以上是該主題購買人數
setcookie($ck_credit_del, $tid, 9999999999, $cookiepath, $cookiedomain);
}else setcookie($ck_credit_del, $tid, 9999999999, $cookiepath, $cookiedomain);
}
############ 以上是瀏覽扣分和加分的部份 ############
############ 以下是下載扣分和加分的部份 ############
elseif ($credit_del == 'down') {
if($credit_del_down>$credit) $credit_del_down = $credit;
$credit_del_down = $credit_del_down?$credit_del_down:$attach[creditsrequire];
$db->query("UPDATE $table_members SET credit=credit-'$credit_del_down' WHERE username='$cdbuser'");
$CDB_SESSION_VARS[credit] = $credit-$credit_del_down;
if($credit_add_down_y) {
if(!$credit_add_down1) {
if($attach[creditsrequire]>$credit_add_down_lim)
$credit_add_down = $credit_add_down_lim;
else $credit_add_down = $attach[creditsrequire];
}
else
$credit_add_down = $credit_add_down1;
$query_ck = $db->query("SELECT a.aid, t.author FROM $table_attachments a LEFT JOIN $table_threads t ON a.tid=t.tid WHERE aid='$aid'");
$attach_ck = $db->fetch_array($query_ck);
$db->query("UPDATE $table_members SET credit=credit+'$credit_add_down' WHERE username='$attach_ck[author]'");
}
}
############ 以上是下載扣分和加分的部份 ############
?>
1.修改列表頁碼序列HTML組合串: /include/arc.listview.class.php
動態分頁方 法:function GetPageListDM($list_len,$listitem="index,end,pre,next,pageno")
靜態 分頁方法:function GetPageListST($list_len,$listitem="index,end,pre,next,pageno")
2. 一、二級導航嵌套輸出:在
{dede:channelartlist type='top' row='8'}
<UL>
<LI class="bh1 b"><A href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</A> </LI>
<LI>
<P class="index_mulu_p1 b">分類:</P>
<P class=index_mulu_p2>
{dede:channel type='son' }
<a href='[field:typeurl/]'>[field:typename/]</a>|
{/dede:channel}
</P>
</LI>
</UL>
{/dede:channelartlist}
3.如上在list_article模板哪怕指定是 type='top' ,仍然會以傳為參數為基准。(不知道是不是dede 的一個BUG)
4.{dede:arclist}{/dede:arclist} 此標簽有一個不太爽的地方就是輸出行之間會自動的加入一個硬回車\r\n 由其是我們在進行js變量組合的時候會比較的不爽,或者會出錯,解決方法如下:
修改include/taglib /arclist.lib.php 找到return $artlist 改為return str_replace("\r\n","",$artlist);
5. table :dede_arcatt 文檔屬性 添加相關的屬性之后需要在table:dede_archives.flag 枚舉屬性中相應的加入
6.DEDECMS根據副欄目進行文 章調用
DEDECMS中一個文章可以同時屬於兩個欄目,即一個主欄目一個副欄目,{dede:arclist} 屬性中可以通過typeid進行主欄目有效性篩選,但是有時我們卻想根據副欄目進行篩選,查了dedecms的在線用戶手冊發現沒有此功能,airzen 就動手改了標簽對應的源文件 dedecmsROOT/include/taglib/arclist.lib.php,其中我們更改方法
function lib_arclist(&$ctag,&$refObj){
...
return lib_arclistDone(...,$ctag->GetAtt('noflag') , $ctag->GetAtt('typeid2') );
}
然后更改方法:
function lib_arclistDone(..., $noflag='',$typeid2=0){
.....
$typeid2= AttDef($typeid2,0);
....
if($typeid2 !=0)
{
$orwheres[] = " arc.typeid2 = $typeid2 ";
}
if(!empty($typeid))
{
.....
}
}
其中上面加粗下划線的部 分為airzen修改的地方可以完美的與{dede:arclist typeid2='n'}{/dede:arclist}進行數據調用了。
7.DEDECMS 列表頁調用主副欄目有一個位欄目ID的文章列表
{dede:list} 對應的是/include/arc.listview.class.php 要同時獲得副欄目的文章修改此文件 查找$cfg_need_typeid2
會 找到
function CountRecord()
{
global $cfg_list_son,$cfg_need_typeid2;
if(empty($cfg_need_typeid2)) $cfg_need_typeid2 = 'N';//增加下面一行
$cfg_need_typeid2 = 'Y';
....
}
好 了,在副欄目列表中就會出現主欄目和副欄目ID都為欄目ID的文章,崩潰吧。
8.偽靜態分頁BUG解決
打開文 件:/include/arc.listview.class.php 找到下面這個方法
//獲取動態的分頁列表
function GetPageListDM($list_len,$listitem="index,end,pre,next,pageno"){
....
if($cfg_rewrite == 'Y')
{
$plist = str_replace('.php?tid=', '-', $plist);
$plist = str_replace('&TotalResult=', '-', $plist);
$plist = preg_replace("/&PageNo=(\d+)/i",'-\\1.html',$plist);
return str_replace("/plus/","/",$plist); //加上這句
}
return $plist;
}
9. 在添加文檔的時候同時添加至文檔關鍵字
一般我們希望為某個文章定為某個關鍵詞,在其它文章中出現該關鍵詞的時候,就顯示內鏈至該文檔,我 們需要兩步,一。添加文檔,二。在文檔關鍵字維護中添加關鍵字和鏈接。
下面我們通過修改文檔模型,只需要直接添加關鍵字,就一步完成關鍵 字和本文鏈接的添加,下面介紹一下操作步驟:
step1,修改文檔模型,添加一個text的字段叫做guanjianzi,此值會自動修 改表dede_addonarticle
step2.在后台目錄/article_add.php 的else if($dopost=='save') 處理完成,提示信息之前加入以下代碼
//by airzen 20090729 關鍵字自動添加至關鍵字表.start
$guanjianzi = trim($guanjianzi);
$rank = 30;
if($guanjianzi!='')
{
$rpurl ="http://域名/view-{$arcID}-1.html";//鏈接這里需要手動修改,這里是偽靜態鏈接
$row = $dsql->GetOne("Select * From `#@__keywords` where keyword like '$guanjianzi'");
if(!is_array($row))
{
$inquery = "Insert INTO `#@__keywords`(keyword,rank,sta,rpurl) VALUES ('$guanjianzi','$rank','1','$rpurl');";
$dsql->ExecuteNoneQuery($inquery);
}
}
dede主要目錄結構及數據表結構
二 次開發 2010-01-10 16:11:48 閱讀26 評論0 字號:大中小
說說經 驗,dedecms的代碼注釋還是比較清楚的,相對比較容易看懂,有php基礎的可以看看,沒有的。部分功能擴展,程序的核心在include目錄下,該 目錄的說明如下:
1、程序核心程序目錄及簡介
/include目錄 程序核心目錄
config_base.php 環境定義文件。用於檢測系統環境,定義工作目錄,保存數據庫鏈接信息,引入常用函數等,建議不要修改。
config_hand.php 系統配置文件。定義系統常用的配置信息定義,可從后台管理直接生成該文件。
config_passport.php 通行證文件
config_rglobals.php 檢測系統外部變量
config_rglobals_magic.php 同上
inc_archives_view.php 用於瀏覽文檔或對文檔生成HTML
inc_arclist_view.php 用於瀏覽頻道列表或對內容列表生成HTML
inc_arcmember_view.php 用於瀏覽會員發布的文檔
inc_arcpart_view.php 用於解析和創建全局性質的模板,如頻道封面,主頁,單個頁面等
inc_arcsearch_view.php 用於文檔搜索
inc_arcspec_view.php 用於瀏覽所有專題列表或對專題列表生成HTML
inc_channel_unit.php 用戶解析特定頻道的附加數據結構信息
inc_channel_unit_functions.php 系統共用函數集合
inc_downclass.php 防采集隨機字符串函數
inc_freelist_view.php 用於對特定內容列表生成HTML
inc_functions.php 可供用戶使用的函數集合
inc_imgbt.php GetTypeidSelMember
inc_memberlogin.php 用於用戶登錄及獲得會員狀態
inc_photograph.php 用於處理系統中的圖片,例如水印,縮略圖等
inc_photowatermark_config.php 圖片處理參數定義
inc_rss_view.php 用於瀏覽頻道RSS或對RSS生成靜態文件
inc_separate_functions.php SpGetArcList函數,用於獲得文檔列表
inc_sitemap.php 用於生成網站地圖
inc_type_tree.php 用於選擇欄目的目錄樹
inc_type_tree_member.php 同上,會員使用
inc_typelink.php 用於顯示文章的位置和欄目位置等
inc_typeunit_admin.php 用於頻道管理時的一些復雜操作,主要用於后台
inc_typeunit_menu.php 同上
inc_userlogin.php 用於管理員登錄
inc_vote.php 用於管理投票
jump.php 用於超鏈接跳轉
pub_charset.php 共用字符處理函數,GB/UTF-8/Unicode/BIG5等互換
pub_collection.php 用於采集
pub_collection_functions.php 采集用函數
pub_datalist.php 后台管理用數據列表
pub_datalist_dm.php 同上,不使用模板
pub_db_mysql.php 用於操作數據庫
pub_dedehtml2.php 用於采集中的HTML解析
pub_dedehtml.php HTML解析器
pub_dedetag.php 用於dede模板標簽解析
pub_httpdown.php 用於下載http中的資源
pub_oxwindow.php 后台程序擴展
pub_splitword_www.php 織夢分詞算法
validateimg.php 驗證碼
vdimgck.php 驗證碼
/inc 共用函數目錄
inc_fun_funAdmin.php 獲取拼音碼等函數
inc_fun_funString.php html代碼處理等函數
inc_fun_SpGetArcList.php 獲取文檔列表SpGetArcList
對於 菜鳥來說,對於菜鳥來說,config_base.php,這個文件,當你的程序出現問題,需要覆蓋,當你的程序出現問題,需要覆蓋。不要覆蓋 config_base.php和config_hand.php文件,里面都是dede一些核心配置文件,對於高手來說,也許修改幾個php頁面已經達 不到目的了,就需要了解dede的數據庫結構,下面是部分關鍵數據表的結構和說明,不完全,還沒有整理完全,過幾天發布完整版本。
2、主要數據結構表
已經可以指導開發了
dede_addonarticle 附加文章表
aid int(11) 文章編號
typeid int(11) 分類欄目編號
body mediumtext 文章內容
dede_addonflash 附加Flash表
aid int(11) FLASH編號
typeid int(11) 分類欄目編號
filesize varchar(10) 文件大小
playtime varchar(10) 播放時長
flashtype varchar(10) 作品類型
flashrank smallint(6) 作品等級
width smallint(6) 影片寬度
height smallint(6) 影片高度
flashurl varchar(80) FLASH地址
dede_addonimages 附加圖集表
aid int(11) 圖集編號
typeid int(11) 分類欄目編號
pagestyle smallint(6) 表現方式(1單頁顯示 2分多頁顯示 3多行多列展示)
maxwidth smallint(6) 大圖限制寬度
imgurls text 圖片集內容(標簽存放)
row smallint(6) 多列式參數(行)
col smallint(6) 多列式參數(列)
isrm smallint(6) 是否下載遠程圖片
ddmaxwidth smallint(6) 小圖片寬度限制
dede_addonsoft 附加軟件表
aid int(11) 軟件編號
typeid int(11) 分類欄目編號
filetype varchar(10) 文件類型
language varchar(10) 界面語言
softtype varchar(10) 軟件類型
accredit varchar(10) 授權方式
os varchar(30) 運行環境
softrank int(11) 軟件等級
officialUrl varchar(30) 官方網址
officialDemo varchar(50) 程序演示地址
softsize varchar(10) 軟件大小
softlinks text 軟件下載鏈接列表
introduce text 軟件介紹
dede_addonspec 附加專題表
aid int(11) 專題編號
typeid int(11) 分類欄目編號
note text 專題內容(僅存放標簽代碼)
dede_admin 管理員信息表
ID int(10) 自動編號
usertype int(10) 用戶類型
userid varchar(30) 用戶登錄ID
pwd varchar(50) 用戶密碼
uname varchar(20) 用戶筆名
tname varchar(30) 真實姓名
email varchar(30) 電子郵箱
typeid int(11) 負責頻道(0表示全部)
logintime datetime 登錄時間
loginip varchar(20) 登錄IP
dede_admintype 系統用戶組管理表
rank smallint(6) 組級別編號
typename varchar(30) 組名稱
system smallint(6) 是否為系統默認組
purviews text 權限列表
dede_arcatt 文檔自定義屬性表
att smallint(6) 編號
attname varchar(30) 屬性名稱
dede_archives 文章表
ID int(11) 自動編號
typeid int(11) 所屬主欄目編號
typeid2 int(11) 所屬副欄目編號
sortrank int(11) 文章排序(置頂方法)
iscommend smallint(6) 是否推薦
ismake smallint(6) 是否生成靜態
channel int(11) 文章所屬模型
arcrank smallint(6) 閱讀權限
click int(11) 點擊次數
money smallint(6) 消費點數
title varchar(80) 標題
shorttitle varchar(36) 簡略標題
color varchar(10) 標題顏色
writer varchar(30) 作者
source varchar(50) 來源
litpic varchar(100) 縮略圖
pubdate int(11) 錄入時間
senddate int(11) 發布時間
arcatt smallint(6) 自定屬性(att)
adminID int(11) 發布管理員ID
memberID int(11) 發布會員ID
description varchar(250) 摘要
keywords varchar(60) 關鍵詞
templet varchar(60) 文檔模板
lastpost int(11) 最近評論時間
postnum int(11) 評論數目
redirecturl varchar(150) 跳轉網址
mtype int(11) 用戶自定義分類
userip varchar(20) 用戶IP
locklikeid smallint(6) 是否鎖定相關文章
likeid varchar(240) 相關文章ID
dede_arcrank 閱讀權限表
ID int(10) 自動編號
rank smallint(10) 權限等級
membername varchar(20) 等級名稱
adminrank smallint(10) 管理等級
money int(11) 消費點數
dede_arctype 欄目管理表
ID int(10) 欄目編號(自動編號)
reID int(10) 父欄目編號
topID int(10)
sortrank smallint(6) 排序編號
typename varchar(30) 欄目名稱
typedir varchar(100) 欄目目錄
isdefault smallint(6) 欄目列表選項(1鏈接到默認頁 0鏈接到列表第一頁 -1使用動態頁)
defaultname varchar(20) 默認頁的名稱
issend smallint(6) 是否支持投稿
channeltype smallint(6) 頻道類型
maxpage int(11) 保留
ispart smallint(6) 欄目屬性
corank smallint(6) 瀏覽權限
tempindex varchar(60) 封面模板
templist varchar(60) 列表模板
temparticle varchar(60) 文章模板
tempone varchar(60) 單獨頁面模板
namerule varchar(50) 文章命名規則
namerule2 varchar(50) 列表命名規則
modname varchar(30) 模板名稱
description varchar(200) 欄目介紹
keywords varchar(100) 關鍵詞
moresite smallint(6) 多站點支持
siterefer smallint(6) 多站點站點根目錄屬性
sitepath varchar(60) 多站點站點根目錄
siteurl varchar(60) 多站點綁定域名
ishidden smallint(6) 是否隱藏欄目
dede_area 地區表
eid int(11) 地區編號
name varchar(20) 地區名稱
rid int(11) 編號屬性
1. 請對POSIX風格和兼容Perl風格兩種正則表達式的主要函數進行類比說明
ereg preg_match
ereg_replace preg_replace
2. 請說明在php.ini中safe_mode開啟之后對於PHP系統函數的影響
3. PHP5中魔術方法函數有哪幾個,請舉例說明各自的用法
__sleep
__wakeup
__toString
__set_state
__construct,
__destruct
__call,
__get,
__set,
__isset,
__unset
__sleep,
__wakeup,
__toString,
__set_state,
__clone
__autoload
4. 請寫出讓,並說明如何在命令行下運行PHP腳本(寫出兩種方式)同時向PHP腳本傳遞參數?
5. PHP的垃圾收集機制是怎樣的
6.使對象可以像數組一樣進行foreach循環,要求屬性必須是私有。
(Iterator模式的PHP5實現,寫一類實現Iterator接口)
7.請寫一段PHP代碼,確保多個進程同時寫入同一個文件 成功
8. 用PHP實現一個雙向隊列
9. 使用正則表達式提取一段標識語言(html或xml)代碼段中指定標簽的指定屬性值(需考慮屬性值對不規則的情況,如大小寫不敏感,屬性名值與等號間有空 格等)。此處假設需提取test標簽的attr屬性值,請自行構建包含該標簽的串
<test attr=”ddd”>
<test attrs*=s*[“ ¦’](.*?)[” ¦’].*?>
10.請使用socket相關函數(非curl)實現如下功能:構造一個post請求,發送到指定http server的指定端口的指定請求路徑(如http://www.example.com:8080/test)。請求中包含以下變量:
本篇文章 來自<A href='http://www.soidc.net'>IDC專家網</a> 原文鏈接:http://www.soidc.net/articles/1213781103032/20081022 /1215945542222_1.html
PHP面試題匯總(1)
作者:狼圖騰 出處:豆豆網-php 2008年10月22日 00:00 進入論壇
相關主題:php面試題php面試題 答案php面試題及答案php程序員面試題最新php面試題php經典面試題面試題1面試題java面試題大學生村官面試題
這是一份比較全 面的PHP面試題.對准備去新公司應聘PHP職位的開發者應該有幫助.
或者說,對招聘PHP開發人員的企業也有些幫助,不過就不要原 樣打印出來考了,稍微改一改.
簡述題(50分)
1、用PHP打印出前一天的時間格式是2006-5-10 22:21:21(2分)
2、echo(),print(),print_r()的區別(3分)
3、能夠使 HTML和PHP分離開使用的模板(1分)
4、使用哪些工具進行版本控制?(1分)
5、如何實現字符串翻轉? (3分)
---------------------------------------------------------------
6、優化MYSQL數據庫的方法。(4分,多寫多得)
7、PHP的意思(送1分)
8、MYSQL取得當前時間 的函數是?,格式化日期的函數是(2分)
9、實現中文字串截取無亂碼的方法。(3分)
---------------------------------------------------------------
10、您是否用過版本控制軟件? 如果有您用的版本控制軟件的名字是?(1分)
11、您是否用過模板引擎? 如果有您用的模板引擎的名字是?(1分)
12、請簡單闡述您最得意的開發之作(4分)
13、對於大流量的網站, 您采用什么樣的方法來解決訪問量問題?(4分)
-----------------------------------------------------------------
14、用PHP寫出顯示客戶端IP與服務器IP的代碼1分)
15、語句include和require的區別是什么?為避免多次包 含同一文件,可用(?)語句代替它們? (2分)
16、如何修改SESSION的生存時間(1分).
17、有一 個網頁地址, 比如PHP研究室主頁: http://www.phpv.net/index.html,如何得到它的內容?($1分)
18、在HTTP 1.0中,狀態碼401的含義是(?);如果返回“找不到文件”的提示,則可用 header 函數,其語句為(?);(2分)
<?php
/*
DedeCms 數據庫使用實例說明
*/
require_once dirname(__FILE__)."pub_db_mysql.php";//引用數據庫文件
//確保數據庫信息填寫正確
//數據庫連接信息
$cfg_dbhost = 'localhost';
$cfg_dbname = 'sccms';
$cfg_dbuser = 'root';
$cfg_dbpwd = '123456';
$cfg_dbprefix = 'sc_';
$cfg_db_language = 'utf8';
//新建一個數據庫操 作類
$dsql = new ScSql(false);
//////////////////////////////// 獲取一條記錄的內容///////////////////////////////
// 下面是獲取一條記錄使用實例
$row = $dsql->GetOne("Select * From dede_* where id = $aid");
//獲取數據內容保存在數組$row中,通過下標可以將其調用出來
echo $row['id'];
//下面是循環調用記錄
///////////////////////////////////////////////////////////////////////////////
//////////////////////////////將查詢獲取總數輸出 /////////////////////////////
//獲取一個查詢記錄 總數
$row = $dsql->GetOne("select count(*) as dd where typeid = $typeid");
echo $row['dd'];//輸出總數
///////////////////////////////////////////////////////////////////////////////
//////////////////////////////將查詢的若干條記錄輸出 //////////////////////////////////
$sql = "Select * from dede_*";
$dsql->SetQuery($sql);// 將SQL查詢語句格式化
$dsql->Execute();//執行SQL操 作
//通過循環輸出執行查詢中的結果
while($row = $dsql->GetArray()){
echo $row['id'];
echo $row['title'];
}
//或者采取這種方式輸出內容
while($row = $dsql->GetObject()){
echo $row->id;
echo $row->Title;
}
///////////////////////////////////////////////////////////////////////////////
////////////////////////////// 插入一條記錄///////////////////////////////
$sql = "
INSERT INTO `dede_member_flink`(mid,title,url,linktype,imgurl,imgwidth,imgheight)
VALUES(".$cfg_ml->M_ID.",'$title','$url','$linktype','$imgurl','$imgwidth','$imgheight');";// 插入記錄數據庫
$dsql->SetQuery($sql);//格式化查詢 語句
$dsql->ExecNoneQuery();//執行SQL操作
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////// 刪除一條記錄///////////////////////////
$sql = "Delete From dede_member_flink where aid='$aid' And mid='".$cfg_ml->M_ID."';";
$dsql->SetQuery($sql);
$dsql->ExecNoneQuery();
//或者使用簡化模式
$dsql->ExecNoneQuery("Delete From dede_member_flink where aid='$aid' And mid='".$cfg_ml->M_ID."';");
///////////////////////////////////////////////////////////////////////////////
////////////////////////////////////// 更新一條記錄//////////////////////////
$upquery = "
Update dede_member_flink set
title='$title',url='$url',linktype='$linktype',
imgurl='$imgurl',imgwidth='$imgwidth',imgheight='$imgheight'
where aid='$aid' And mid='".$cfg_ml->M_ID."';
";
$rs = $dsql->ExecuteNoneQuery($upquery);
///////////////////////////////////////////////////////////////////////////////
//////////////////////////////// 判斷獲取數據庫內容的常用方法///////////////////
$row = $dsql->GetOne("Select * From dede_moneycard_type where tid={$pid}");
if(!is_array($row)){
echo "失敗";
exit();
}
/////////////////////////////
$upquery = " Update dede_member_flink set
title='$title',url='$url',linktype='$linktype',
imgurl='$imgurl',imgwidth='$imgwidth',imgheight='$imgheight'
where aid='$aid' And mid='".$cfg_ml->M_ID."';
";
$rs = $dsql->ExecuteNoneQuery($upquery);
if($rs){
echo "成功";
}else{
echo "失敗";
}
//////////////////////////////////獲取總數 //////////////////////////////////
$dsql = new DedeSql(false);
$dsql->SetQuery("Select * from `dede_admin` where userid='$userid' Or uname='$uname'");
$dsql->Execute();
$ns = $dsql->GetTotalRow();
//////////////////////////////// 關閉數據庫///////////////////////////////////
$dsql->Close();
///////////////////////////////////////////////////////////////////////////////
?>
Dedecms新版本(V5系列)模板標記非常靈活,對於很多新人是一個頭疼的問題,天涯今天就來和大家談談這些標記,為 以后大家修改、制作模板打下扎實基礎。
首先我們去官方的《模板制作 幫助文檔》查看這些標記的簡介,如何來看幫助文檔呢,下面天涯就來簡單的說一下,我 們拿最常用的Arclist標記來做說明。
幫助文檔中都有【功能說明】【適 用范圍】【基本語法】【屬性說明】這些部分組成,
【功能說明】用於解釋模板標記使用功能,建議新手都把這些標記功能看看,大致做一個了解。
【適用范圍】由於Dedecms模板大致分為首頁、頻道、列表、內容以及其他附加模板組成,使用范圍指出 這些標記在哪些模板中起作用。模板文件夾中(以Dedecms默認模板為例,即{cmspath}\templets\default)大家可以仔細分析 下,模版中很多都是以下列這些名字出現index.htm,index_X.htm(封面模板),list_X.htm(列表模 板),article_X.htm(內容模板),你可以對照標記的適用范圍,查看這些標簽在哪個模板中能起到作用。
【基本語法】用於介紹模板基本使用方法,在使用時候可以拿來根據自己的需要進行響應的修改。
【屬性說明】這些屬性,決定你調用的內容,決定Dedecms解析這些標記的形式,屬性非常重要。
以上這些介紹主要是讓大多數新手 學會看幫助文件,模板修改使用的大多數問題都是因為自己不去看這些幫助文件導致的,希望廣大Dedecms新人引以為戒。
下面就來簡單說下Dedecms模板的分類,搞過ASP的人應該知道,動態網頁基本上就是對變量、數組(數據庫)的操作,然后通過語句輸出為 HTML,dedecms的這些標記也是起到同樣的效果。
下面根據起到的不同效果對模板進行如下分類:
一.變量操作型這里的變量不同於對編程中那個復雜的變量,新人不懂,我這里所指出的變量是Dedecms調用局部內容進行輸出的一些標記,這里有: 【Flink (friendlink)標記】【Page 標記】【Pagelist 標記】【Pagebreak 標記】【Prenext 標記】【Pagetitle 標記】【Myad 標記】【Vote 標記】以及還有系統不常用的(其實天涯經常使用),例如global 標記、include 標記、mytag標記、position 標記,這些標記大家可以看出,都是輸出來為一部分內容,並不可以重復,這個標記在解析時候生成的只是一塊不重復的內容。
二.數組操作型這里的數組當然在模板標記中,指的是循環輸出一些內容的標記,例如N行文章、N個軟件、N個會員信息等等,Dedecms這些標記有:【Arclist 標記】【Field 標記】【Channel 標記】 【Type 標記】【Autochannel 標記】【Mynews 標記】【LOOP 標記】【Channelartlist 標記】【List 標記】【Ask 標記】【Sql 標記】【Group 標記】【Groupthread 標記】【booklist 標記】【catalog 標記】【chapter 標記】【contentlist 標記】當然 也有foreach這種“罕見”的標記,這些標記使用時,通過屬性設置,能循環輸出一些列內容,很多重復的東西,往往 只要一個標記就搞定,不信可以開個模板仔細觀察觀察。
有了這個分類以后,在修改、制作模板時候相信會得心應手了,天涯在修改、制作模板中經常使用的標記有sql、include、loop(貌似現在被sql 取代了)、mytag這些標記,因為這些標記很“自由”,當 然新人可以在模板制作修改中嘗試使用這些靈活自由的標記。
本篇接下來簡單講一下數組操作性標記的原理以及他的使用方法。
我們在Dedecms模板中經常看到下面這樣的例子:
{dede:arclist row=4 titlelen=20 orderby=pubdate typeid=58}
<dd><span>[field:pubdate function=strftime('%m-%d',@me)/]</span>[field:textlink/]</dd>
{/dede:arclist}
這里我們使用了arclist標記,通過屬性我們可以得到下列相關信息:
row=4 調用4行這樣的數據
titlelen=20 取標題的前20個字符(2個字符為一個中文字符)
orderby=pubdate 排列順序為按照發布時間排列,當然你也可以選擇其他,幫助有詳細說明。
typeid=58 調用欄目id為58欄目的文章
標記都是通過 {dede:arclist}這個開始,{/dede:arclist}結束,這個和html有的相像,所以做dedecms模板,最好熟練下html的 相關知識。
開始、結束標記中含有[field:textlink/]這樣的標記,新手需要記住的是[field:textlink/]只可能存在於{dede:XXX}{/dede:XXX}之間,絕對不肯能拿出來單獨使用!
其他數組操作性標記都是同樣的原理,只是將繁瑣的從數據庫調用的東西簡化為dedecms標記,dedecms在解析時候讀取標記然后進行查詢、輸出等一 些后續操作。新手注意的是,熟練掌握什么是頻道頁、列表頁、內容頁,以及調 用內容關系和范圍,根據自己的頁面需要,使用不同的標記達到效果,這是新手在不斷實踐的基礎下才能掌握的。
文件:include/inc_function.php 系統默認會載入此文件
GetCurUrl()
獲得當前得腳本得URL
GetAlabNum($str)
把字符串里得全角數字轉為半角數字(會把非數字類型字符刪除)
Text2Html($txt)
文本轉HTML
Html2Text($str)
獲得HTML里得文本
function ClearHtml($str)
清除HTML標記
cnw_left($str,$len)
中文截取把雙字節字符也看做一個字符
cn_substr($str,$slen,$startdd=0)
中文截取2,單字節截取模式
GetMkTime($dtime)
把中文得時間格式轉換為Linux時間截,對於不能識別得格式,會返回time()
SubDay($ntime,$stime)
返回減少一天得Linux時間截
AddDay($ntime,$aday)
返回增加一天得Linux時間截
GetDateTimeMk($mktime)
從指定得Linux時間截返回 0000-00-00 00:00:00 格式得時間
GetDateMk($mktime)
從指定得Linux時間截返回 0000-00-00 格式得時間
GetIP()
獲取客戶部IP
GetPinyin($str,$ishead=0,$isclose=1)
獲取一串中文字符得拼音 ishead=0 時,輸出全拼音 ishead=1時,輸出拼音首字母
ShowMsg($msg,$gourl,$onlymsg=0,$limittime=0)
顯示Dedecms提示信息,其中當onlymsg=1時,不跳轉,僅顯示alert提示
dd2char($dd)
把符合規則得數字轉為字母(符合a-zA-Z Ascii碼得數字轉換為字母,不符合則不變)
PutCookie($key,$value,$kptime,$pa="/")
按默認參數設置一個Cookie(dede得cookie是經過加密得,必須用GetCookie獲取值,以防止用戶模擬登錄)
DropCookie($key)
使Cookie失效
function GetCookie($key)
獲得一個cookie值
function GetCkVdValue()
獲得驗證碼得session值
FtpMkdir($truepath,$mmode,$isMkdir=true)
用FTP創建一個目錄
FtpChmod($truepath,$mmode)
用FTP改變一個目錄得權限
OpenFtp()
打開FTP連接
CloseFtp()
關閉FTP連接
TestStringSafe(&$uid)
用戶ID和密碼或其它字符串安全性測試,返回true或false
htmlEncode($string)
過濾HTML代碼
function AjaxHead()
發送一個ajax頭
sendmail($email, $mailtitle, $mailbody, $headers)
郵件發送函數
highlight($string, $words, $hrefs='')
加亮一段HTML里得某些詞匯
文件:include/inc_channel_unit_functions.php
GetFileUrl($aid,$typeid,$timetag,$title,$ismake=0,$rank=0,
$namerule='',$namerule2='',$money=0,$aburl=false,$siteurl='')
獲得文章得鏈接網址(對於動態得文章返回得是/plusview.php?aid=$aid)
這些參數必須通過主表dede_archives聯結欄目表dede_arctype查詢來獲得(注:dede得主表不是固定得)
GetTypeUrl($typeid,$typedir,$isdefault,$defaultname,$ispart,$namerule2,$siteurl='')
獲得某欄目得鏈接網址
GetParentIDS($tid,&$dsql)
獲得某欄目得所有上級欄目得ID,返回得ID用 , 號分開
TypeGetSunID($ID,&$dsql,$tb="dede_archives",$channel=0,$onlydd=false)
獲得某欄目得所有下級欄目ID,當 $onlydd=true 時返回得才是用','分開得ID列表
否則返回得是SQL條件語句,形式為 $tb.typeid=$ID1 or $tb.typeid=$ID2 這樣得形式
GetHotKeywords(&$dsql,$num=8,$nday=365,$klen=16,$orderby='count')
獲取網站搜索得熱門關鍵字
CkLitImageView($imgsrc,$imgwidth)
判斷是否有縮略圖片,有則返回一個img標記,一般在底層模板中使用,如:
[Field:litpic function="CkLitImageView(@me,80)"/]
文件:pub_charset.php
utf82gb($utfstr)
UTF8編碼轉gbk編碼
gb2utf8($gbstr)
gbk轉utf8編碼
big52gb($Text)
big5轉gb12312編碼
gb2big5($Text)
gb2312轉big5編碼
(注意:gb2312編碼一般不包含那些腦開殘體之類得生冷字,而gbk通常是支持得)
文件:inc_photograph.php
ImageResize($srcFile,$toW,$toH,$toFile="")
縮圖片自動生成函數,來源支持bmp、gif、jpg、png
WaterImg($srcFile)
給圖片加水印
DedeCms基本得類文件說明
(這里只說明 include 或其它目錄一些重要得inc 文件,至於模塊或功能性得文件,實際上一般每個文件或文件+action對應該着一個功能,如article_add.php這些已經很直觀了,確實不知 道得不妨在操做得地方點擊右鍵看屬性就知道你操做得功能對應什么文件了,因此不單獨說明。)
dedecms前台使用到模板得東西基本都是面向對象得,至於具體每個對象得流程我就不解析了,對於菜鳥說也是不懂得。
inc_arcbook_view.php
小說得列表、內容都是在這里操做得
inc_archives_view.php
所有dede內核涉及得文章頁,如文章、圖集、軟件或自定義模型得內容展示頁都是在這個文件處理得
inc_arclist_view.php
內容列表得處理類
inc_arcpart_view.php
封面頻道和通用調用標記得處理類
inc_arcsearch_view.php
搜索類
inc_arcspec_view.php
專題列表類
inc_bookfunctions.php
小說文本保存操做函數
inc_channel_unit.php
內容模型得特殊字段轉換處理類
inc_channel_unit_functions.php
與內核相關得重要函數
inc_custom_fields.php
自定義字段得表單和值得獲取處理函數
inc_digglist_view.php
Digg列表類
inc_freelist_view.php
自由列表類
inc_memberlogin.php
會員登錄類
inc_modules.php
模塊類
inc_rss_view.php
Rss列表類
inc_sitemap.php
網站地圖類
inc_taglist_view.php
標簽Tag列表類
inc_typelink.php
欄目屬性類
inc_userlogin.php
管理員登陸類
inc_vote.php
投票類
mail.class.php
郵件類
pub_collection.php
pub_collection_functions.php
采集類和函數
pub_datalist.php
數據列表類(模板用dede標簽)
pub_datalist_dm.php
數據列表類(動態用php)
pub_db_mysql.php
數據庫類
pub_dedeattribute.php
屬性解析類
pub_dedehtml2.php
HTML解析類(主要是獲取HTML里得圖片、鏈接等信息)
pub_dedetag.php
dede模板解析類
pub_httpdown.php
dede下載類
pub_oxwindow.php
dede高級提示窗口類
pub_splitword_www.php
dede分詞類
zip.lib.php
zip處理類
其它重要文件
dede/inc/inc_archives_functions.php
發文章時一些遠程抓圖、自定義模型字段列出之類函數都在這個文件
dede/inc/inc_batchup.php
DelArc($aid,$onlyfile=false,$channelid=0)
刪除某個文檔得函數
dede_addonarticle |
附加文章表 |
|||
|
aid |
int(11) |
文章編號 |
|
|
typeid |
int(11) |
分類欄目編號 |
|
|
body |
mediumtext |
文章內容 |
|
|
dede_addonflash |
附加Flash表 |
|
|
|
aid |
int(11) |
FLASH編號 |
|
|
typeid |
int(11) |
分類欄目編號 |
|
|
filesize |
varchar(10) |
文件大小 |
|
|
playtime |
varchar(10) |
播放時長 |
|
|
flashtype |
varchar(10) |
作品類型 |
|
|
flashrank |
smallint(6) |
作品等級 |
|
|
width |
smallint(6) |
影片寬度 |
|
|
height |
smallint(6) |
影片高度 |
|
|
flashurl |
varchar(80) |
FLASH地址 |
|
|
dede_addonimages |
附加圖集表 |
|
|
|
aid |
int(11) |
圖集編號 |
|
|
typeid |
int(11) |
分類欄目編號 |
|
|
pagestyle |
smallint(6) |
表現方式(1單頁顯示 2分多頁顯示 3多行多列展示) |
|
|
maxwidth |
smallint(6) |
大圖限制寬度 |
|
|
imgurls |
text |
圖片集內容(標簽存放) |
|
|
row |
smallint(6) |
多列式參數(行) |
|
|
col |
smallint(6) |
多列式參數(列) |
|
|
isrm |
smallint(6) |
是否下載遠程圖片 |
|
|
ddmaxwidth |
smallint(6) |
小圖片寬度限制 |
|
|
dede_addonsoft |
附加軟件表 |
|
|
|
aid |
int(11) |
軟件編號 |
|
|
typeid |
int(11) |
分類欄目編號 |
|
|
filetype |
varchar(10) |
文件類型 |
|
|
language |
varchar(10) |
界面語言 |
|
|
softtype |
varchar(10) |
軟件類型 |
|
|
accredit |
varchar(10) |
授權方式 |
|
|
os |
varchar(30) |
運行環境 |
|
|
softrank |
int(11) |
軟件等級 |
|
|
officialUrl |
varchar(30) |
官方網址 |
|
|
officialDemo |
varchar(50) |
程序演示地址 |
|
|
softsize |
varchar(10) |
軟件大小 |
|
|
softlinks |
text |
軟件下載鏈接列表 |
|
|
introduce |
text |
軟件介紹 |
|
|
dede_addonspec |
附加專題表 |
|
|
|
aid |
int(11) |
專題編號 |
|
|
typeid |
int(11) |
分類欄目編號 |
|
|
note |
text |
專題內容(僅存放標簽代碼) |
管理員信息表及系統用戶組管理表
dede_admin管理員信息表 |
|
|||||
|
ID |
int(10) |
自動編號 |
|
||
|
usertype |
int(10) |
用戶類型 |
|
||
|
userid |
varchar(30) |
用戶登錄ID |
|
||
|
pwd |
varchar(50) |
用戶密碼 |
|
||
|
uname |
varchar(20) |
用戶筆名 |
|
||
|
tname |
varchar(30) |
真實姓名 |
|
||
|
|
varchar(30) |
電子郵箱 |
|
||
|
typeid |
int(11) |
負責頻道(0表示全部) |
|
||
|
logintime |
datetime |
登錄時間 |
|
||
|
loginip |
varchar(20) |
登錄IP |
|
||
|
dede_admintype |
系統用戶組管理表 |
|
|||
|
rank |
smallint(6) |
組級別編號 |
|
||
|
typename |
varchar(30) |
組名稱 |
|
||
|
system |
smallint(6) |
是否為系統默認組 |
|
||
|
purviews |
text |
權限列表 |
|||
dede_arcatt文檔自定義屬性表 |
|
|||||
|
att |
smallint(6) |
編號 |
|
||
|
attname |
varchar(30) |
屬性名稱 |
|
||
|
dede_archives |
文章表 |
|
|||
|
ID |
int(11) |
自動編號 |
|
||
|
typeid |
int(11) |
所屬主欄目編號 |
|
||
|
typeid2 |
int(11) |
所屬副欄目編號 |
|
||
|
sortrank |
int(11) |
文章排序(置頂方法) |
|
||
|
iscommend |
smallint(6) |
是否推薦 |
|
||
|
ismake |
smallint(6) |
是否生成靜態 |
|
||
|
channel |
int(11) |
文章所屬模型 |
|
||
|
arcrank |
smallint(6) |
閱讀權限 |
|
||
|
click |
int(11) |
點擊次數 |
|
||
|
money |
smallint(6) |
消費點數 |
|
||
|
title |
varchar(80) |
標題 |
|
||
|
shorttitle |
varchar(36) |
簡略標題 |
|
||
|
color |
varchar(10) |
標題顏色 |
|
||
|
writer |
varchar(30) |
作者 |
|
||
|
source |
varchar(50) |
來源 |
|
||
|
litpic |
varchar(100) |
縮略圖 |
|
||
|
pubdate |
int(11) |
錄入時間 |
|
||
|
senddate |
int(11) |
發布時間 |
|
||
|
arcatt |
smallint(6) |
自定屬性(att) |
|
||
|
adminID |
int(11) |
發布管理員ID |
|
||
|
memberID |
int(11) |
發布會員ID |
|
||
|
description |
varchar(250) |
摘要 |
|
||
|
keywords |
varchar(60) |
關鍵詞 |
|
||
|
templet |
varchar(60) |
文檔模板 |
|
||
|
lastpost |
int(11) |
最近評論時間 |
|
||
|
postnum |
int(11) |
評論數目 |
|
||
|
redirecturl |
varchar(150) |
跳轉網址 |
|
||
|
mtype |
int(11) |
用戶自定義分類 |
|
||
|
userip |
varchar(20) |
用戶IP |
|
||
|
locklikeid |
smallint(6) |
是否鎖定相關文章 |
|
||
|
likeid |
varchar(240) |
相關文章ID |
|
||
|
dede_arcrank |
閱讀權限表 |
|
|||
|
ID |
int(10) |
自動編號 |
|
||
|
rank |
smallint(10) |
權限等級 |
|
||
|
membername |
varchar(20) |
等級名稱 |
|
||
|
adminrank |
smallint(10) |
管理等級 |
|
||
|
money |
int(11) |
消費點數 |
|
||
|
dede_arctype |
欄目管理表 |
|
|||
|
ID |
int(10) |
欄目編號(自動編號) |
|
||
|
reID |
int(10) |
父欄目編號 |
|
||
|
topID |
int(10) |
|
|
||
|
sortrank |
smallint(6) |
排序編號 |
|
||
|
typename |
varchar(30) |
欄目名稱 |
|
||
|
typedir |
varchar(100) |
欄目目錄 |
|
||
|
isdefault |
smallint(6) |
欄目列表選項(1鏈接到默認頁 0鏈接到列表第一頁 -1使用動態頁) |
|
||
|
defaultname |
varchar(20) |
默認頁的名稱 |
|
||
|
issend |
smallint(6) |
是否支持投稿 |
|
||
|
channeltype |
smallint(6) |
頻道類型 |
|
||
|
maxpage |
int(11) |
保留 |
|
||
|
ispart |
smallint(6) |
欄目屬性 |
|
||
|
corank |
smallint(6) |
瀏覽權限 |
|
||
|
tempindex |
varchar(60) |
封面模板 |
|
||
|
templist |
varchar(60) |
列表模板 |
|
||
|
temparticle |
varchar(60) |
文章模板 |
|
||
|
tempone |
varchar(60) |
單獨頁面模板 |
|
||
|
namerule |
varchar(50) |
文章命名規則 |
|
||
|
namerule2 |
varchar(50) |
列表命名規則 |
|
||
|
modname |
varchar(30) |
模板名稱 |
|
||
|
description |
varchar(200) |
欄目介紹 |
|
||
|
keywords |
varchar(100) |
關鍵詞 |
|
||
|
moresite |
smallint(6) |
多站點支持 |
|
||
|
siterefer |
smallint(6) |
多站點站點根目錄屬性 |
|
||
|
sitepath |
varchar(60) |
多站點站點根目錄 |
|
||
|
siteurl |
varchar(60) |
多站點綁定域名 |
|
||
|
ishidden |
smallint(6) |
是否隱藏欄目 |
|
||
|
dede_area |
地區表 |
|
|||
|
eid |
int(11) |
地區編號 |
|
||
|
name |
varchar(20) |
地區名稱 |
|
||
|
rid |
int(11) |
編號屬性 |
首頁模板 |
\templets\default\index.html |
文章頻道首頁 |
\templets\default\index_article.htm |
文章列表頁 |
\templets\default\list_article.htm |
文章內容頁 |
\templets\default\article_article.htm |
圖集頻道首頁 |
\templets\default\index_image.htm |
圖集列表頁 |
\templets\default\list_image.htm |
圖集內容頁 |
\templets\default\article_image.htm |
圖集詳細頁面 |
\templets\plus\showphoto.htm |
軟件頻道首頁 |
\templets\default\index_soft.htm |
軟件列表頁 |
\templets\default\list_soft.htm |
軟件內容頁 |
\templets\default\article_soft.htm |
軟件最終下載頁 |
\templets\plus\download_links_templet.htm |
動畫頻道首頁 |
\templets\default\index_flash.htm |
動畫列表頁 |
\templets\default\list_flash.htm |
動畫內容頁 |
\templets\default\article_flash.htm |
產品頻道首頁 |
\templets\default\index_product.htm |
產品列表頁 |
\templets\default\list_product.htm |
產品內容頁 |
\templets\default\article_product.htm |
分類信息頻道首頁 |
\templets\default\index_info.htm |
分類信息列表頁 |
\templets\default\list_info.htm |
分類信息內容頁 |
\templets\default\article_info.htm |
分類信息搜索頁 |
\templets\default\infosearch.htm |
專題列表頁 |
\templets\default\list_spec.htm |
專題內容頁 |
\templets\default\article_spec.htm |
圖書模塊
圖書首頁 |
\templets\default\books_index.htm |
圖書列表頁 |
\templets\default\books_list.htm |
圖書搜索頁 |
\templets\default\books_search.htm |
圖書內容頁 |
\templets\default\books_book.htm |
小說章節內容頁 |
\templets\default\books_story.htm |
漫畫章節內容頁 |
\templets\default\books_photo.htm |
vip章節內容頁 |
\templets\default\book_member_err.htm |
問答模塊
問答首頁 |
\ask\template\default\dede.htm |
問答列表頁 |
\ask\template\default\browser.htm |
問答內容頁 |
\ask\template\default\question.htm |
問答提問頁 |
\ask\template\default\post.htm |
問答內容維護頁 |
\ask\template\default\post.adopt.htm |
問答搜索結果頁 |
\ask\template\default\search.htm |
問答消息提示頁 |
\ask\template\default\showmsg.htm |
其他功能與插件
TAG列表頁 |
\templets\default\taglist.htm |
TAG內容列表 |
\templets\default\tag.htm |
DIGG列表頁 |
\templets\default\digg.htm |
搜索結果頁 |
\templets\default\search.htm |
高級搜索頁 |
\templets\plus\heightsearch.htm |
評論頁模板 |
\templets\plus\feedback_templet.htm |
評論驗證碼確認頁 |
\templets\plus\feedback_confirm.htm |
評論JS內容頁 |
\templets\plus\feedback_templet_js.htm |
站點地圖頁 |
\templets\plus\sitemap.htm |
RSS地圖頁 |
\templets\plus\rssmap.htm |
RSS內容頁 |
\templets\plus\rss.htm |
投票頁 |
\templets\plus\vote.htm |
欄目JS文件 |
\templets\plus\js.htm |
推薦文檔信息頁 |
\templets\plus\recommend.htm |
友情連接提交頁 |
\templets\plus\flink-add.htm |
友情鏈接列表頁 |
\templets\plus\flink-list.htm |
留言板插件 |
\templets\plus\guestbook.htm |
根目錄
/dede 管理后台目錄
/freelist 自由文檔列表生成目錄
/html 默認文章生成目錄
/include 程序核心文件目錄
/member 會員管理目錄
/plus 插件及輔助功能目錄
/setup 安裝目錄
/special 專題生成目錄
/templets 默認模板存放目錄
/upimg 上傳下載文件保存目錄
base.css 基本樣式表
index.php 網站默認首頁
robots.txt 搜索控制文件
/templets模板目錄
/dedecmsv31 3模板目錄
/default 默認模板目錄
article_article.htm 普通文章頁面模板
article_default.htm 一般文檔頁面模板
article_flash.htm flash頁面模板
article_image.htm 圖集頁面模板
article_soft.htm 軟件頁面模板
article_spec.htm 專題頁面模板
index.htm 網站首頁模板
index_article.htm 文章頻道封面模板
index_article_webart1.htm
index_article_webart2.htm
index_article_webart.htm
index_default.htm 一般文檔封面模板
index_flash.htm flash頻道封面模板
index_image.htm 圖集頻道封面模板
index_soft.htm 軟件頻道封面模板
list_article.htm 文章列表模板
list_default.htm 一般文檔列表目錄模板
list_flash.htm flash文檔列表模板
list_free.htm 自由列表模板
list_image.htm 圖集列表模板
list_soft.htm 軟件列表模板
list_spec.htm 專題列表模板
/img 模板圖片目錄(含樣式表)
/plus 輔助插件模板目錄
download_links_templet.htm 下載鏈接模板
feedback_confirm.htm 評論確認模板
feedback_templet.htm 用戶評論模板
feedback_templet_js.htm
flink-add.htm 友情鏈接添加模板
flink-list.htm 友情鏈接列表模板
guestbook.htm 留言本模板
heightsearch.htm 高級搜索模板
js.htm
recommend.htm 推薦好友模板
rss.htm RSS的XML模板
rssmap.htm RSS訂閱文件
showphoto.htm 圖片顯示模板
sitemap.htm 網站地圖模板
view_msg.htm 會員提示信息模板
vote.htm 投票結果顯示模板
/system 系統模板目錄
channel_list.htm 欄目列表系統模板
list_fulllist.htm 文檔列表系統模板
mynews.htm 站內新聞系統模板
part_arclist.htm 文章列表系統模板
part_autochannel.htm 分類欄目系統模板
part_channelartlist.htm 包含文章列表的欄目系統模板
part_imginfolist.htm 使用imginfolist標簽調用的模板
part_imglist.htm 使用imglist標簽調用的模板
part_type_list.htm 單個欄目的系統模板
spec_arclist.htm 專題列表文章系統模板
spec_list.htm 專題用模板
tag_arclist.htm
tag_fieldlist.htm fieldlist用系統模板
/system/channel 頻道特殊底層模板目錄
channel_downlinkpage.htm 下載地址列表鏈接模板
channel_downlinks.htm 下載地址列表模板
channel_spec_note.htm 專題節點列表模板
/include目錄 程序核心目錄
config_base.php 環境定義文件。用於檢測系統環境,定義工作目錄,保存數據庫鏈接信息,引入常用函數等,建議不要修改。
config_hand.php 系統配置文件。定義系統常用的配置信息定義,可從后台管理直接生成該文件。
config_passport.php 通行證文件
config_rglobals.php 檢測系統外部變量
config_rglobals_magic.php 同上
inc_archives_view.php 用於瀏覽文檔或對文檔生成HTML
inc_arclist_view.php 用於瀏覽頻道列表或對內容列表生成HTML
inc_arcmember_view.php 用於瀏覽會員發布的文檔
inc_arcpart_view.php 用於解析和創建全局性質的模板,如頻道封面,主頁,單個頁面等
inc_arcsearch_view.php 用於文檔搜索
inc_arcspec_view.php 用於瀏覽所有專題列表或對專題列表生成HTML
inc_channel_unit.php 用戶解析特定頻道的附加數據結構信息
inc_channel_unit_functions.php 系統共用函數集合
inc_downclass.php 防采集隨機字符串函數
inc_freelist_view.php 用於對特定內容列表生成HTML
inc_functions.php 可供用戶使用的函數集合
inc_imgbt.php GetTypeidSelMember
inc_memberlogin.php 用於用戶登錄及獲得會員狀態
inc_photograph.php 用於處理系統中的圖片,例如水印,縮略圖等
inc_photowatermark_config.php 圖片處理參數定義
inc_rss_view.php 用於瀏覽頻道RSS或對RSS生成靜態文件
inc_separate_functions.php SpGetArcList函數,用於獲得文檔列表
inc_sitemap.php 用於生成網站地圖
inc_type_tree.php 用於選擇欄目的目錄樹
inc_type_tree_member.php 同上,會員使用
inc_typelink.php 用於顯示文章的位置和欄目位置等
inc_typeunit_admin.php 用於頻道管理時的一些復雜操作,主要用於后台
inc_typeunit_menu.php 同上
inc_userlogin.php 用於管理員登錄
inc_vote.php 用於管理投票
jump.php 用於超鏈接跳轉
pub_charset.php 共用字符處理函數,GB/UTF-8/Unicode/BIG5等互換
pub_collection.php 用於采集
pub_collection_functions.php 采集用函數
pub_datalist.php 后台管理用數據列表
pub_datalist_dm.php 同上,不使用模板
pub_db_mysql.php 用於操作數據庫
pub_dedehtml2.php 用於采集中的HTML解析
pub_dedehtml.php HTML解析器
pub_dedetag.php 用於dede模板標簽解析
pub_httpdown.php 用於下載http中的資源
pub_oxwindow.php 后台程序擴展
pub_splitword_www.php 織夢分詞算法
validateimg.php 驗證碼
vdimgck.php 驗證碼
/inc 共用函數目錄
inc_fun_funAdmin.php 獲取拼音碼等函數
inc_fun_funString.php html代碼處理等函數
inc_fun_SpGetArcList.php 獲取文檔列表SpGetArcList
時間格式
{dede:field name='pubdate' function='strftime("%Y年%m月%d日 %H:%M:%S","@me")' /}2007年1月1日 18:30:02
{dede:field name='pubdate' function='strftime("%Y-%m-%d %H:%M:%S","@me")' /}2007-1-1 18:30:02
{dede:field name='pubdate' function='strftime("%Y年%m月%d日 %H時%M分%S秒","@me")' /}2007年1月1日 18時30分02秒
{dede:field name='pubdate' function='strftime("%m-%d %H:%M:%S","@me")' /}1-1 18:30:02
{dede:field name='pubdate' function='strftime("%m-%d","@me")' /}1-1
%Y-年
%m-月
%d-日
%H-小時
%M-分
%S-秒
24小時內的時間顯示紅色..
[field:pubdate runphp='yes']
$a="<font color='#ff0000'>";
$b="</font>";
$c=strftime("%Y年%m月%d日 %H:%M:%S","@me");
$ntime = time();
$oneday = 3600 * 24;
if(($ntime - @me)<$oneday) @me = $a.$c.$b;
else @me =$c;
[/field:pubdate]
最后更新時間
最后更新時間:{dede:tagname runphp='yes'}@me = date("Y-m-d H:i:s", time());{/dede:tagname}
XX天前
[field:pubdate runphp='yes']
$today = Floor(time()/(3600 * 24));
$senday= Floor(@me/(3600 * 24));
$updays = $today-$senday;
if($updays==0) @me = "今日";
else @me = $updays."天前";
[/field:pubdate]
織夢系統中,分類信息模型屬於獨立單表模型的,他的調用標簽為 ArcListsg 標簽,而使用系統內置的Arclistsg 標簽是無法調用信息的發布人的!也就是說沒有[field:信息發布人/] 這樣的字段可供選擇。
織夢系統提供了強大的SQL標簽供高級用戶使用,他的基本格式為:
1. {dede:sql sql=“完整的SQL查詢語句”}
2. 底層模板,用於輸出[field:字段名/]<!–字 段名取值范圍為查詢結果的所有字段–>
3. {/dede:sql}
我們了解了上面的這種方式以后,那么我們就可以使用SQL語句來調用分類信息模型了。一個簡單的例子:
1. {dede:sql sql=“select * FROM #@__addoninfos limit 0,10″}
2. 信息標題:[field:title/]
3. {/dede:sql}
上面的這種基本調用就是調用了信息發布的最新10條信息。這里的* 號就可以取值到信息發布者的會員id號,他的字段是mid,那么我們就可以在底層模板中通過 [field:mid/] 來進行輸出了。但是這里我們只輸出這個id號,無法取得他的會員名及昵稱啊?怎么辦呢?
這里我們就可以想到利用left join 來進行匹配了,因為他既然能夠獲取他的會員id號,那么這個值他是與織夢的會員表是相互關聯的,通過這個值我們可以關聯到織夢會員表來獲取更加詳細的會員 資料。比如:
Select a.*,m.* FROM #@__addoninfos a left join #@__member m on a.mid = m.mid
這里利用left join 來進行匹配,讓他們兩邊的ID號碼相等,就可以了。所以我們調用分類信息發布者到首頁的具體代碼就為:
1. {dede:sql sql=“Select a.*,m.* FROM #@__addoninfos a left join #@__member m on a.mid = m.mid limit 0 2″}
2. [field:字段名/]<!–這里的字段名的取值就 可以為addoninfos與member兩個表的所有字段了–>
3. {/dede:sql}
當然,這里提供的僅僅是一個思路!比如,后面的限制調用的欄目,只需要在 a.mid = m.mid 后面加上一個where a.typeid = 欄目id 來進行表示,如果你的欄目為多個,還可以使用 where a.typeid IN(欄目1,欄目2….欄目N)等等。
文章正文頁常用函數:
1.相應文章上下文調用:
{dede:prenext function="str_replace(' 下一篇:','<'.'br'.' />下一篇:
2.文章關鍵字TAG調用,每個關鍵字附帶鏈接地址
{dede:field name='keywords' runphp='yes' }
if(!empty(@me)){
$kws = explode(' ',@me);
@me = "";
foreach($kws as $k){
@me .= "<a href='/plus/search.php?keyword=$k' target='blank'>$k</a> ";
}
@me= str_replace('+', ' ',trim(@me));
}
{/dede:field}<BR>
3.復制相應文章地址按鈕
<INPUT onclick=copyToClipBoard() type=button value=復制本頁文章地址,傳給QQ/MSN上的好友 name=Submit width="100" height="16">
<SCRIPT language=javascript>
function copyToClipBoard(){
var clipBoardContent="";
clipBoardContent+=document.title;
clipBoardContent+="";
clipBoardContent+=this.location.href;
window.clipboardData.setData("Text",clipBoardContent);
alert("復制成功,請粘貼到你的QQ/MSN上推薦給你的好友");
</SCRIPT>
<SCRIPT>
document.body.oncopy = function () { setTimeout( function () { var text = clipboardData.getData("text"); if (text) { text = text + "\r\n參考鏈接:"+location.href; clipboardData.setData("text", text); } }, 100 ) }
</SCRIPT>
4.文章正文評論調用
<form action="{dede:field name='phpurl' /}/feedback.php?action=send" method="post" name="feedback">
<input type="hidden" name="arcID" value="{dede:field name="id"/}">
<input name="notuser" type="hidden" id="notuser" value="1" checked>
<><LABEL for=message>內容:</LABEL><TEXTAREA id=message onfocus=showcode() name=message></TEXTAREA></P>
<><BUTTON id=submitcomm
name=submitcomm type=submit value="submit">發表評論</BUTTON></P><INPUT id=itemid
type=hidden value="submit" name=itemid> </FORM>
5.調用收藏夾,添加文章到各大網站收藏夾
<!-- 添加網摘 --><STRONG><FONT color=#0e63e4>收</FONT><FONT
color=#58c600>藏</FONT><FONT color=#996699>到</FONT><FONT
color=#c00012>網</FONT><FONT color=#795f00>摘</FONT><FONT
color=#327f00>:</FONT></STRONG> <A title=Baidu搜藏
href='javascript:u=location.href;t=document.title;c%20=%20""%20+%20(window.getSelection%20? window.getSelection() : document.getSelection ? document.getSelection() : document.selection.createRange().text);var url="http://cang.baidu.com/do/add?it="+encodeURIComponent(t)+"&iu="+encodeURIComponent(u)+"&dc="+encodeURIComponent(c)+"&fr=ien#nw=1";window.open(url,"_blank","scrollbars=no,width=600,height=450,left=75,top=20,status=no,resizable=yes"); void 0'><IMG
alt=Baidu搜藏 src="/wm_img/baidu.gif" border=0></A> <A
href="javascript:window.open('http://shuqian.qq.com/post?title='+encodeURIComponent(document.title)+'&uri='+encodeURIComponent(document.location.href)+'&jumpback=2&noui=1','favit','width=960,height=600,left=50,toolbar=no,menubar=no,location=no,scrollbars=yes,status=yes,resizable=yes');void(0)"><IMG
title=QQ書簽 alt=QQ書簽 src="/wm_img/qq.gif" border=0></A> <A
href="javascript:location.href='http://www.google.com/bookmarks/mark?op=add&bkmk='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)"><IMG
alt=Google書簽 src="/wm_img/google.gif" border=0></A> <A
href="javascript:location.href='http://del.icio.us/post?&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)"><IMG
title=Del.icio.us alt=Del.icio.us src="/wm_img/delicious.gif" :
border=0></A> <A title=POCO網摘
href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:'')d.getSelection?d.getSelection():'');void(keyit=window.open('http://my.poco.cn/fav/storeIt.php?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t)+'&img=http://www.h-strong.com/blog/logo.gif','keyit','scrollbars=no,width=475,height=575,status=no,resizable=yes'));keyit.focus();"><IMG
alt=POCO網摘 src="/wm_img/poco.gif" border=0></A> <A title=Yahoo書簽 jhref="javascript:location.href='http://myweb2.search.yahoo.com/myresults/bookmarklet?u='+encodeURIComponent(location.href)+'&t='+encodeURIComponent(document.title)"><IMG
alt=Yahoo書簽 src="/wm_img/yahoo.gif" border=0></A> <A title=新浪
href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:'')d.getSelection?d.getSelection():'');void(vivi=window.open('http://vivi.sina.com.cn/collect/icollect.php?pid=28&title='+escape(d.title)+'&url='+escape(d.location.href)+'&desc='+escape(t),'vivi','scrollbars=no,width=480,height=480,left=75,top=20,status=no,resizable=yes'));vivi.focus();"><IMG
alt=新浪ViVi src="/wm_img/vivi.gif" border=0></A> <A title=365Key網摘
href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:'')d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();"><IMG
alt=365Key網摘 src="/wm_img/365key.gif" border=0></A> <A title=天極網摘
href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:'')d.getSelection?d.getSelection():'');void(yesky=window.open('http://hot.yesky.com/dp.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t)+'&st=2','yesky','scrollbars=no,width=400,height=480,left=75,top=20,status=no,resizable=yes'));yesky.focus();"><IMG alt=天極網摘 src="/wm_img/yesky.gif" border=0></A> <A title=和訊網摘
href="javascript:t=document.title;u=location.href;e=document.selection?(document.selection.type!='None'?document.selection.createRange().text:'')document.getSelection?document.getSelection():'');void(open('http://bookmark.hexun.com/post.aspx?title='+escape(t)+'&url='+escape(u)+'&excerpt='+escape(e),'HexunBookmark','scrollbars=no,width=600,height=450,left=80,top=80,status=no,resizable=yes'));"><IMG
alt=和訊網摘 src="/wm_img/hexun.gif" border=0></A> <A
href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:'')d.getSelection?d.getSelection():'');void(live=window.open('https://favorites.live.com/quickadd.aspx?marklet=1&mkt=en-us&url='+escape(d.location.href)+'&title='+escape(d.title)+'&top=1','live','scrollbars=no,status=no,resizable=yes'));live.focus();"><IMG
alt="Windows Live" src="/wm_img/live.gif" border=0></A> <A
# m8 O* S9 j2 f+ l2 @: U$ N$ ~3 y4 B5 m) `' U
title=鼠標選中部分作為描述,提交到diglog.com
onclick="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:'')d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.diglog.com/submit.aspx?title='+escape(d.title)+'&url='+escape(d.location.href)+'&description='+escape(t),'keyit','scrollbars=yes,width=500,height=500,left=65,top=20,status=no,resizable=yes'));keyit.focus();"
href="javascript://"><IMG alt="提交新發現,Dig it" src="/wm_img/digit.gif"
border=0></A> <!-- 添加網摘結束 --><INPUT onclick=javascript:window.external.addFavorite(window.location.href,document.title) type=button value=" 加入收藏夾 " name=add>
其他調用:
<!------------------------------------站內新聞調用 ------------------------------------>
<UL class=***>
{dede:mynews row='7' titlelen='30'}
<LI><a href="[field:arcurl /]" target=_blank>[field:title /]</a></LI>
{/dede:mynews}
</UL>
<!------------------------------------圈子調用 ------------------------------------>
{dede:group row="8" orderby='threads'}
[field:groupname/]
{/dede:group}
<!------------------------------------友情鏈接調用 ------------------------------------>"
圖片調用:{dede:flink type='image' row='1' col='9' titlelen='22'/}
文字調用:{dede:flink type='text' row='2' col='9' titlelen='24'/}
[<!------------------------------------熱門TAG調用 ------------------------------------>
{dede:hotwords num='20' subday='30'/}
<!------------------------------------獲取Phpwind論壇的最新主題貼子調用 ------------------------------------>
{dede:loop table='pw_threads' sort='tid' row='8' if=''}<br>
<a href="/bbs/read.php?tid=[field:tid/]"> ·[field:subject function="cn_substr('@me',30)"/]
([field:lastpost function="date('m-d H:M','@me')"/])</a> <br/>
{dede:loop}
-----------------------------------文章圖片幻燈片顯示 ------------------------------------>
<script language='javascript'>
linkarr = new Array();
picarr = new Array();
textarr = new Array();
var focus_width=240;
var focus_height=180;
var text_height=24;
var pics = "";
var links = "";
var texts = "";
var swf_height = focus_height+text_height;
var defJpeg = "{dede:global name='cfg_phpurl'/}/img/jpeg.jpg";
{dede:arclist type='image' att='3' row='5' function='FormatScript(@me)'}
linkarr[[field:global name=autoindex/]] = "[field:arcurl/]
picarr[[field:global name=autoindex/]] = "[field:picname/]
textarr[[field:global name=autoindex/]] = "[field:title/]";
{/dede:arclist}
for(i=1;i<picarr.length;i++){
if(picarr.indexOf("jpg")==-1 && picarr.indexOf("JPG")==-1) picarr = defJpeg;
if(pics=="") pics = picarr;
else pics += "|"+picarr;
}
for(i=1;i<linkarr.length;i++)
if(links=="") links = linkarr;
else links += "|"+linkarr;
}
for(i=1;i<textarr.length;i++){
if(texts=="") texts = textarr;
else texts += "|"+textarr;
}
document.write('<object
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase=http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0
width="'+ focus_width +'" height="'+ swf_height +'">');
document.write('<param name="allowScriptAccess" value="sameDomain"><param name="movie" value="{dede:global name='cfg_templeturl'/}/img/slide.swf">');
document.write('<param name="quality" value="high"><param name="bgcolor" value="#ffffff">');
document.write('<param name="menu" value="false"><param name=wmode value="opaque">');
document.write('<param name="FlashVars" value="pics='+pics+'&links='+links+'&texts='+;
texts+'&borderwidth='+focus_width+'&borderheight='+focus_height+'&textheight='+text_height+'">');
document.write('<embed src="{dede:global name='cfg_templeturl'/}/img/slide.swf" )
wmode="opaque" FlashVars="pics='+pics+'&links='+links+'&texts='+texts+'&borderwidth='+
focus_width+'&borderheight='+focus_height+'&textheight='+text_height+'" menu="false" bgcolor="#ffffff" quality="high"
width="'+ focus_width +'" height="'+ focus_height +'" allowScriptAccess="sameDomain"
type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />')
document.write('</object>'
</script>
DedeCms系統的模板是非固定的,用戶可以在新建欄目時可以自行選擇欄目模板,官方僅提供最基本的默認模板,即是內置系統模型的各個模板,由於 DedeCms支持自定義頻道模型,用戶自定義新頻道模型后,還需要按該模型的字段設計一套新的模板,此外,DedeCms也支持使用風格的形式使用模 板,默認風格是 default,它表示系統默認使用 cmspath/templets/default 這個文件夾的模板,如果你下載了一套新的模板,你可以不必要刪除 default 原有的文件,把下載的模板文件夾命名你想要的風格名稱,如 style2 等,然后在后台修改了默認的模板風格名稱為 style2 ,那系統將使用 templets/style2 這文件當作默認模板,但是若你手工指定了欄目模板的位置,則后台參數風格的定義無效。
一、概念,設計和使用模板,必須要理解下面幾個概念
1、板塊(封面)模板:
指網站主頁或比較重要的欄目封面頻道使用的模板,一般用“index_識別ID.htm”命名,此外,用戶單獨定義的單個頁面或自定義標記,也可選是 否支持板塊模板標記,如果支持,系統會用板塊模板標記引擎去解析后才輸出內容或生成特定的文件。
2、列表模板:
指網站某個欄目的所有文章列表的模板,一般用 “list_識別ID.htm” 命名。
3、檔案模板:
表示文檔查看頁的模板,如文章模板,一般用 “article_識別ID.htm” 命名。
4、其它模板:
一般系統常規包含的模板有:主頁模板、搜索模板、RSS、JS編譯功能模板等,此外用戶也可以自定義一個模板創建為任意文件。
二、 命名,DedeCms模板默認命名規則如下
1、模板保存位置:
模板目錄:cmspath/templets/樣式名稱(英文,默認為default,其中system為系統底層模板,plus為插件使用的模板) /具體功能模板文件}
2、 模板文件命名規范:
(1)index_識別ID.htm: 表示板塊(欄目封面)模板;
(2)list_識別ID.htm: 表示欄目列表模板;
(3)article_識別ID.htm: 表示內容查看頁(文檔模板,包括專題查看頁);
(4)search.htm: 搜索結果列表模板;
(5)index.htm: 主頁模板;
注解:[識別ID]可以在“頻道模型管理”的地方獲得,當然,你也可以在“頻道模型管理”的地方確定某個頻道的模板命名。
例:list_image.htm 表示是就是內容類型為圖片集的欄目默認列表模板。
article_article.htm 表示的是文章查看頁模板。
三、其它模板說明
1、默認底層模板
位置: cmspath/templets/system
功能:在沒有指定標記的默認底層模板的時候,系統將自動調用這個文件夾的相應文件作為底層模板。
2、插件目錄模板
位置: cmspath/templets/plus
功能:評論、友情鏈接、RSS地圖等模板。
3、會員后台模板
位置: cmspath/member/templets
功能:會員后台的模板。
四、二次開發
DedeCms主要的模板解析類是 include/inc_arcpart_view.php、include/inc_arclist_view.php、include /inc_archives_view.php,這些類是與pub_dedetag.PHP一起工作的,如果你想為文檔模板、列表模板、板塊模板增加一些 功能,可以直接修改這幾個類的ParseTemplet()或ParseTempletsFirst()這類的方法,把標記名稱,屬性對應試相應該的功能 函數即時。
織夢模板標記簡介
在了解DedeCms的模板代碼之前,了解一下織夢模板引擎的知識是非常有意義的。織夢模板引擎是一種使用XML名字空間形式的模板解析器,使 用織夢解析器解析模板的最大好處是可以輕松的制定標記的屬性,感覺上就像在用HTML一樣,使模板代碼十分直觀靈活,新版的織夢模板引擎不單能實現模板的 解析還能分析模板里錯誤的標記。
1、織夢模板引擎的代碼樣式有如下幾種形式:
{dede:標記名稱 屬性='值'/}
{dede:標記名稱 屬性='值'}{/dede:標記名稱}
{dede:標記名稱 屬性='值'}自定義樣式模板(InnerText){/dede:標記名稱}
提示:如果使用帶底層模板的標記,必須嚴格用{dede:標記名稱 屬性='值'}{/dede:標記名稱} 這種格式,否則會報錯。
2、織夢模板引擎內置有多個系統標記,這些系統標記在任何場合都是能直接使用的。
(1) global 標記,表示獲取一個外部變量,除了數據庫密碼之外,能調用系統的任何配置參數,形式為:{dede:global name='變量名稱'}{/dede:global} 或 {dede:global name='變量名稱'/}。其中變量名稱不能加 $ 符號,如變量 $cfg_cmspath ,應該寫成 {dede:global name='cfg_cmspath'/} 。
(2) foreach 用來輸出一個數組,形式為:{dede:foreach array='數組名稱'}[field:key/] [field:value/]{/dede:foreach}
(3) include 引入一個文件,形式為:{dede:include file='文件名稱' ismake='是否為dede板塊模板(yes/no)'/},對文件的搜索路徑為順序為:絕對路徑、include文件夾,CMS安裝目錄,CMS主 模板目錄。
3、織夢標記允許在任何標記中使用函數對得到的值進行處理,形式為:
{dede:標記名稱 屬性='值' function='youfunction("參數一","參數二","@me")'/}
其中 @me 用於表示當前標記的值,其它參數由你的函數決定是否存在,例如:{dede:field name='pubdate' function='strftime("%Y-%m-%d %H:%M:%S","@me")'/}
4、織夢標記允許有限的編程擴展。
格式為:
{dede:tagname runPHP='yes'}
$aaa = @me;
@me = "123456";
{/dede:tagname}
@me 表示這個標記本身的值,因此標記內編程是不能使用echo之類的語句的,只能把所有返回值傳遞給@me。
此外由於程序代碼占用了底層模板InnerText的內容,因此需編程的標記只能使用默認的InnerText。
織夢內容管理系統模板標簽代碼參考
【Arclist 標記】
這個標記是DedeCms最常用的一個標記,也叫自由列表標記,其中 hotart、coolart、likeart、artlist、imglist、imginfolist、specart、autolist 這些標記都是由這個標記所定義的不同屬性延伸出來的別名標記。
功能說明:獲取指定的文檔列表適用范圍:封面模板、列表模板、文檔模板。
基本語法:
{dede:arclist typeid='' row='' col='' titlelen='' infolen=''imgwidth='' imgheight='' listtype='' orderby='' keyword=''}
底層模板(InnerText){/dede:arclist}
屬性說明:
[1] typeid='' 表示欄目ID,在列表模板和檔案模板中一般不需要指定,在封面模板中允許用","分開表示多個欄目;
[2] row='' 表示返回文檔列表總數;
[3] col='' 表示分多少列顯示(默認為單列);
[4] titlelen='' 表示標題長度;
[5] infolen='' 表示內容簡介長度;
[6] imgwidth='' 表示縮略圖寬度;
[7] imgheight='' 表示縮略圖高度;
[8] type='' 表示檔案類型,其中空值、不使用這個屬性或type='all'時為普通文檔
§ type='commend'時,表示推薦文檔,等同於 {dede:coolart}{/dede:coolart}
§ type='image'時,表示必須含有縮略圖片的文檔,等同於{dede:imglist} {/dede:imglist}、{dede:imginfolist}{/dede:imginfolist}
§ type='spec'時,表示專題,等同於標記{dede:specart}{/dede:specart}
以上屬性值可以聯合使用,如: type='commend image' 表示推薦的圖片文檔
[9] orderby='' 表示排序方式,默認值是 senddate 按發布時間排列。
§ orderby='hot' 或 orderby='click' 表示按點擊數排列
§ orderby='pubdate' 按出版時間排列(即是前台允許更改的時間值)
§ orderby='sortrank' 按文章的新排序級別排序(如果你想使用置頂文章則使用這個屬性)
§ orderby='id' 按文章ID排序
§ orderby='postnum' 按文章評論次數排序
§ orderby='rank' 隨機獲得指定條件的文檔列表
[10] orderway='' 值為 desc 或 asc ,指定排序方式是降序還是順向排序,默認為降序。
[11] keyword='' 表示含有指定關鍵字的文檔列表,多個關鍵字用","分開
[12] channelid='' 表示特定的頻道模型ID,內置的頻道:專題(-1)、文章(1)、圖集(2)、Flash(4)、軟件(3)
[13] limit='起始,結束' 表示限定的記錄范圍,row屬性必須等於"結束 - 起始",MySQL的limit語句是由0起始的,如 “limit 0,5”表示的是取前五筆記錄,“limit 5,5”表示由第五筆記錄起,取下五筆記錄,使用了本屬性后,row屬性將無效。
[14] att='數值' 表示自定義屬性值
[15] subday='天數' 表示在多少天以內的文檔,通常用於獲取指定天數的熱門文檔、推薦文檔、熱門評論文檔等
[16] partsort='排列位數' 表示自動獲得父欄目的所有子數中排列在第幾位的欄目ID,標記為{dede:autolist}{/dede:autolist} 時,使用本屬性才有效。
底層模板字段:
ID(同 id),title,iscommend,color,typeid,ismake,description(同 info),writer,shorttitle,memberid
pubdate,senddate,arcrank,click,litpic(同 picname),typedir,typename,
arcurl(同 filename),typeurl,stime(pubdate 的"0000-00-00"格式),
textlink,typelink,imglink,image
其中:
textlink = <a href='arcurl'>title</a>
typelink = <a href='typeurl'>typename</a>
imglink = <a href='arcurl'><img src='picname' border='0' width='imgwidth' height='imgheight'></a>
image = <img src='picname' border='0' width='imgwidth' height='imgheight'>
字段調用方法:[field:varname/]
如:{dede:arclist infolen='100'}
[field:textlink/]
<br>
[field:info/]
<br>
{/dede:arclist}
注:底層模板里的Field實現也是織夢標記的一種形式,因此支持使用PHP語法,Function擴展等功能
如:給當天發布的內容加上 (new) 標志
[field:senddate runPHP='yes']
$ntime = time();
$oneday = 3600 * 24;
if(($ntime - @me)<$oneday) @me = "<font color='red'>(new)</font>";
else @me = "";
[/field:senddate]
【Field 標記】
功能說明:用於獲取特定欄目或檔桉的字段值及常用的環境變量值
適用范圍:封面模板、列表模板、文檔模板
(1)基本語法
{dede:field name='字段名'/}
(2) 系統分配的field
板塊模 板:PHPurl,indexurl,indexname,templeturl,memberurl,powerby,webname,specurl
列表模 板:position,title,PHPurl,templeturl,memberurl,powerby,indexurl,indexname,specurl, 欄目表dede_arctype的所有字段
其中 position 為 “欄目一 > 欄目二” 這樣形式的鏈接,title則為這種形式的標題
文檔模 板:position,PHPurl,templeturl,memberurl,powerby,indexurl,indexname,specurl,id(同 ID,aid)
(3) 文檔所有內容字段
檔案dede_archives表 和 附加表的所有字段。
【Channel 標記】
功能說明:用於獲取欄目列表
適用范圍:封面模板、列表模板、文檔模板
(1)基本語法
{dede:channel row='' type=''}
自定義樣式模板(InnerText)
{/dede:channel}
(2)屬性
[1] row='數字' 表示獲取記錄的條數(通用在某級欄目太多的時候使用,默認是 8)
[2] type = top,sun/son,self
type='top' 表示頂級欄目
type='son' 或 'sun' 表示下級欄目
type='self' 表示同級欄目
其中后兩個屬性必須在列表模板中使用。
(3)底層模板變量
ID,typename,typedir,typelink(僅表示欄目的網址)
例:
{dede:channel type='top'}
<a href='[field:typelink /]'>[field:typename/]</a>
{/dede:channel}
注:在沒有指定typeid的情況下,type標記與模板的環境有關,如,模板生成到欄目一,那么type='son'就表示欄目一的所有子類
【Type 標記】別名 onetype
功能說明:表示指定的單個欄目的鏈接
適用范圍:封面模板、列表模板、文檔模板
(1)語法 {dede:type typeid=''}{/dede:type}
(2)屬性 typeid='欄目ID'
(3)底層模板變量
typename,typelink(僅表示欄目的網址)
【Autochannel 標記】
功能說明:表示指定排序位置的單個欄目的鏈接
適用范圍:封面模板、列表模板、文檔模板
(1)語法 {dede:autochannel partsort=''}{/dede:autochannel}
(2)屬性 partsort='欄目所在的排序位置'
(3)底層模板變量
typename,typelink(僅表示欄目的網址)
【Mytag 標記】
功能說明:用於獲取自定義宏標記的內容
適用范圍:封面模板、列表模板、文檔模板
(1)基本語法
{dede:mytag typeid='' name='' ismake=''/}
(2)屬性
[1] typeid = '數字' 表示欄目ID,默認為 0,在沒有設定的欄目沒有定義這個名稱的標記,會按如下搜索方式來搜索“先向上查找父欄目 -> 通用標記(typeid=0)的同名標記”。
[2] name = '' 標記名稱。
[3] ismake = yes|no 默認為 no 表示mytag里的內容不包含其它封面模板的標記,yes則表示標記內容含有其它封面模板標記。
【Vote 標記】
功能說明:用於獲取一組投票表單
適用范圍:封面模板
(1) 基本語法
{dede:vote id='投票ID' lineheight='22'
tablewidth='100%' titlebgcolor='#EDEDE2'
titlebackground='' tablebgcolor='#FFFFFF'}
{/dede:vote}
注:本標記直接生成投票的HTML表單,為了讓你更方便修改其樣式,建議在后台->投票管理的地方直接復制生成的HTML代碼來使用。
【Flink 標記】,等同 friendlink
功能說明:用於獲取友情鏈接
適用范圍:封面模板
(1)基本語法
{dede:flink type='' row='' col='' titlelen='' tablestyle=''}{/dede:flink}
(2)屬性
[1]type:鏈接類型,值:
a. textall 全部用文字顯示
b. textimage 文字和圖得混合排列
c. text 僅顯示不帶Logo的鏈接
d. image 僅顯示帶Logo的鏈接
-------------------------------------
[2]row:顯示多少行,默認為4行
[3]col:顯示多少列,默認為6列
[4]titlelen:站點文字的長度
[5]tablestyle: 表示 <table 這里的內容>
【Mynews 標記】
功能說明:用於獲取站內新聞
適用范圍:封面模板
(1) 基本語法
{dede:mynews row='條數' titlelen='標題長度'}Innertext{/dede:mynews}
(2)屬性
[1] row 新聞條數
[2] titlelen 標題長度
(3)底層模板變量
[field:title/]、[field:writer/]、
[field:senddate function="strftime('%y-%m-%d %H:%M',@me)"/](時間)、[field:body/]
【LOOP 標記】
功能說明:用於調用任意表的數據,一般用於調用論壇貼子之類的操作
適用范圍:所有模板
(1) 基本語法
{dede:loop table=' sort='' row='' if=''}
底層模板
{dede:loop}
(2) 屬性
[1] table 表示查詢的數據表
[2] sort 用於排序的字段
[3] row 返回結果的條數
[4] if 查詢條件
(3)底層模板變量
這個標記的底層模板變量即是被查詢表的所有字段
例:獲取DZ論壇的最新主題貼 子:amp;amp;nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {dede:loop&nbsp;table='pw_threads'&nbsp;sort='tid'&nbsp;row='8'&nbsp;if=''}&lt;br&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a&nbsp;href="/bbs/read.PHP?tid=[field:tid/]"&gt;&nbsp;·[field:subject&nbsp;function="cn_substr('@me',30)"/]&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;([field:lastpost&nbsp;function="date('m-d&nbsp;H:M','@me')"/])&lt;/a&gt;&nbsp;&lt;br/&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{dede:loop}
【Channelartlist 標記】
功能說明:用於獲取當前頻道的下級欄目的內容列表
適用范圍:封面模板
(1)基本語法
{dede:channelArtlist typeid=0 col=2 tablewidth='100%'}
<table width="99%" border="0" cellpadding="3" cellspacing="1" bgcolor="#BFCFA9">
<tr>
<td bgcolor="#E6F2CC">
{dede:type}
<table border="0" cellpadding="0" cellspacing="0" width="98%">
<tr>
<td width='10%' align="center"><img src='[field:global name='cfg_plus_dir'/]/img/channellist.gif' width='14' height='16'></td>
<td width='60%'>
<a href="[field:typelink /]">[field:typename /]</a>
</td>
<td width='30%' align='right'>
<a href="[field:typelink /]">更多...</a>
</td>
</tr>
</table>
{/dede:type}
</td>
</tr>
<tr>
<td height="150" valign="top" bgcolor="#FFFFFF">
{dede:arclist row="8"}
<a href="[field:arcurl /]">[field:title /]</a><br>
{/dede:arclist}
</td>
</tr>
</table>
<div style='font-size:2px'> </div>
{/dede:channelArtlist}
除了宏標記外,channelArtlist 是唯一一個可以直接嵌套其它標記的標記,不過僅限於嵌套
{dede:type}{/dede:type} 和 {dede:arclist}{/dede:arclist} 兩個標記。
(2) 屬性
[1]typeid=0 頻道ID,默認的情況下,嵌套的標記使用的是這個欄目ID的下級欄目,如果你想用特定的欄目,可以用","分開多個ID。
[2]col=2 分多列顯示
[3]tablewidth='100%' 外圍表格的大小
【List 標記】
功能說明:表示列表模板里的分頁內容列表
適用范圍:僅列表模板 list_*.htm
(1)基本語法
{dede:list col='' titlelen=''
infolen='' imgwidth='' imgheight='' orderby='' pagesize=''}{/dede:list}
(2)屬性
[1]col 內容列數
[2]titlelen 標題長度
[3]infolen 內容摘要長度
[4]imgwidth 縮略圖寬
[5]imgheight 縮略圖高
[6]orderby 排序方式,有效的排序方式有 senddate、pubdate、id、click、lastpost、postnum ,默認為 sortrank
[7]pagesize 分頁大小
(3)底層模板變量
ID(同 id),title,iscommend,color,typeid,ismake,description(同 info),postnum,lastpost,shorttitle
pubdate,senddate,arcrank,click,litpic(同 picname),typedir,typename,
arcurl(同 filename),typeurl,stime(pubdate 的"0000-00-00"格式),
textlink,typelink,imglink,image
注:list標記除了支持檔案表的基本模板變量外,還支持附加表的字段,你可以在模型管理中知道附加表支持列表使用的字段有哪些。
【Page 標記】
功能說明:表示分頁頁面的附加參數
適用范圍:列表模板
語法: {dede:page pagesize="每頁結果條數"/}
注:此標記在dedecms3.1中已經過期,dedecms3.1中直接把 pagesize屬性加在 list 標記中,表示記錄分頁大小。
【Pagelist 標記】
功能說明:表示分頁頁碼列表
適用范圍:列表模板
(1)語法
{dede:pagelist listsize='3' listitem=''/}
(2)屬性
[1] listsize 表示 [1][2][3] 這些項的長度 x 2
[2] listitem 表示頁碼樣式,可以把下面的值疊加
index 首頁
pre 上一頁
pageno 頁碼
next 下一頁
end 末頁
option 下拉跳轉框
例: {dede:pagelist listsize='3' listitem='index pre pageno next end option'/}
【Pagebreak 標記】
功能說明:表示文檔的分頁鏈接列表。
適用范圍:僅文檔模板。
語法:{dede:pagebreak/}
【Prenext 標記】
功能說明:表示獲取文檔“上一篇/下一篇”的鏈接列表。
適用范圍:僅文檔模板。
語法:{dede:prenext/}
注:此標記默認為橫向排列,如果你想用豎向排列,可以用
{dede:prenext function="str_replace(' 下一篇:','<'.'br'.' />下一篇:',@me)"/} 表示
【Pagetitle 標記】
功能說明:表示獲取文檔的分頁標題
適用范圍:僅文檔模板。
(1)語法:{dede:pagetitle style='select'/}
(2)屬性:style 表示分頁標題的展示樣式
select 表示下拉框、link 表示文字直接鏈接
【Fieldlist 標記】
功能說明:獲得附加表的所有字段信息。
適用范圍:僅文檔模板。
語法:
{dede:fieldlist}
[field:name/] : [field:value/] <br>
{/dede:fieldlist}
下面我們就開始增加這個小擴展,我們知道在V5.3中織夢的標簽已經分離出來,也就是類似於arclist這樣的標簽可以自己修改或者二次開發,程序這些 標簽存放的目錄在/include/taglib文件夾下面,我們可以看那個文件名,就很容易知道這些標簽文件名和標簽的對應關系。
那我們現在需 要修改的是{dede:sql/}這個標簽,那我們就修改sql.lib.php這個文件。
打開后我們找到第34行,也就是代碼
$ctp->LoadSource($Innertext);
處, 在下面加上以下一段代碼:
$GLOBALS['autoindex'] = 0;
這段代碼就是定義一個全局變量,並賦值為0,接下來我們 只需要將下面代碼進行下修改:
while($row = $dsql->GetArray($thisrs))
{
$sqlCt++;
foreach($ctp->CTags as $tagid=>$ctag){
if(!empty($row[$ctag->GetName()])){ $ctp->Assign($tagid,$row[$ctag->GetName()]); }
}
$GLOBALS['autoindex']++; //每循環一次加上一個1然后解析出來
$revalue .= $ctp->GetResult();
}
這樣一來,這個 [field:global.autoindex/]標簽就可以在那個{dede:sql/}中使用了,我們舉個例子:
{dede:sql sql='select * from [url=mailto:dede_archives]dede_archives'[/url]}
[field:global.autoindex/]-[field:title/]</br>
{/dede:sql}
怎 么樣?很簡單吧,其實這種擴展還有很多很多,自己可以試試哦。
跨站腳本攻擊
首先打開文件:/include/common.func.php
在文件中加入函數
function RemoveXSS($val) {
$val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val);
$search = 'abcdefghijklmnopqrstuvwxyz';
$search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$search .= '1234567890!@#$%^&*()';
$search .= '~`";:?+/={}[]-_|\'\\';
for ($i = 0; $i < strlen($search); $i++) {
$val = preg_replace('/(&#[xX]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val);
$val = preg_replace('/(�{0,8}'.ord($search[$i]).';?)/', $search[$i], $val);
}
$ra1 = array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');
$ra2 = array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload');
$ra = array_merge($ra1, $ra2);
$found = true;
while ($found == true) {
$val_before = $val;
for ($i = 0; $i < sizeof($ra); $i++) {
$pattern = '/';
for ($j = 0; $j < strlen($ra[$i]); $j++) {
if ($j > 0) {
$pattern .= '(';
$pattern .= '(&#[xX]0{0,8}([9ab]);)';
$pattern .= '|';
$pattern .= '|(�{0,8}([9|10|13]);)';
$pattern .= ')*';
}
$pattern .= $ra[$i][$j];
}
$pattern .= '/i';
$replacement = substr($ra[$i], 0, 2).'<x>'.substr($ra[$i], 2);
$val = preg_replace($pattern, $replacement, $val);
if ($val_before == $val) {
$found = false;
}
}
}
return $val;
}
1. <p>
2. 搜索 <strong class="fc_03c">{dede:global name='keyword'/}</strong> 的結果
3. </p>
修改為:
1. <p>
2. 搜索 <strong class="fc_03c">{dede:global name='keyword' function='RemoveXSS(@me)'/}</strong> 的結果
3. </p>
在DedeCMS V5.3系統中,我們很多地方需要用到SQL語句,例如批量修改(替換)內容、數據內容調用等,在系統模板中有一個專門用於調用數據的模板標簽 {dede:sql/}我們可以參考幫助中心的模板標簽說明學習下這個標簽如何使用。
當然我們在使用SQL語句和學習SQL語句的之前需要對織夢的數據庫結構有一個大致的了解,我們可以通過幫助中心的數據庫說明,來簡單的了解這些內容。
以下為引用的內容: |
接下來我們收集整理一些常用的SQL語句幫助大家一同更好的使用DedeCMS系統。
我們將SQL語句分為兩類,功能型的和內容調用型,功能型的主要是對數據庫進行常規的操作,例如{insert、update},數據調用型的操作就 (select),兩種類型的SQL語句使用發放也很簡單,如果是功能型的只需要在系統后台[系統]-[SQL命令運行工具]中進行使用,如果是模板標簽 的數據調用類型,只需要在模板相應位置添加標簽即可。
感謝以下會員:crenn,cunzhangwang,tbggbt,hefa,nichelous,hw74
功能型SQL語句整理:
功能說明:添加自定義屬性
相關語句:
以下為引用的內容: |
功能說明:批量為作者和來源賦值
相關語句:
以下為引用的內容: |
功能說明:刪除指定IP的評論
相關語句:
以下為引用的內容: |
000.000.000.000 為垃圾評論發布者的IP
功能說明:清空文章中關鍵字字段
相關語句:
以下為引用的內容: |
功能說明:批量替換發布時間,入庫時間,更新 時間
相關語句:
以下為引用的內容: |
功能說明:批量修改欄目為動態或者靜態
相關語句:
以下為引用的內容: |
功能說明:文章內容批量替換SQL語句
相關語句:
以下為引用的內容: |
數據調用SQL語句整理:
標簽說明:常用內容統計代碼
相關標簽:
以下為引用的內容: |
調用說明:調用Discuz論壇附件帶圖片的 貼子
相關標簽:
以下為引用的內容: |
調用說明:調用UCHOME最新日志
相關標簽:
以下為引用的內容: |
調用說明:會員積分排行
相關標簽:
以下為引用的內容: |
調用說明:企業最新產品調用方法(圖片+標 題)
相關標簽:
以下為引用的內容: |
調用說明:調用最新加入企業及企業所屬行業代 碼到首頁
相關標簽:
以下為引用的內容: |
調用說明:推薦會員(帶用戶頭像)
相關標簽:
以下為引用的內容: |
調用說明:推薦企業
相關標簽:
以下為引用的內容: |
調用說明:UCenter Home會員調用(帶頭像)
相關標簽:
以下為引用的內容: |
另建議安裝《DEDECMS自動審核文檔+自動生成插件》提供的HTML自動生成插件,自動審核是最好不要!
方法:
1、打開dede目錄下的archives_do.php。注:也許你的不是dede是其它,各位站長根據自己情況
2、在archives_do.php文件查找成功審核指定的文檔
3、向上查看到
while($row = $dsql->GetArray('ckall'))
在其中下面增加代碼$time_wx = time() - rand(0,$cfg_index_cache * 10);//add code by wind shadow
成為這樣:
while($row = $dsql->GetArray('ckall'))
{
$time_wx = time() - rand(0,$cfg_index_cache * 10);//add code by wind shadow
4、接着向下看找到有set arcrank='0' where id='$aid'的代碼,共有3處
在set和arcrank='0'之間加入 sortrank='$time_wx',pubdate='$time_wx',senddate='$time_wx'
形成set sortrank='$time_wx',pubdate='$time_wx',senddate='$time_wx',arcrank='0' 形式,共有3處