調用dede:sql,dede:php標籤 調用文章的靜態鏈接地址

轉載地址:http://an0438033.blog.163.com/blog/static/79019877201381411502928/




很多時候我們用織夢後臺調用數據的時候,自帶的標籤很多時候都沒辦法調用我們要的數據,因此要自己寫sql去調用,之前有個問題搞了兩天都沒搞出來,後來看到下面這個文章,問題解決了!

使用dedecms這個程序建站有兩年多的時間了,期間建了不少網站不過至今沒有一個網站賺錢的,痛苦啊。可能平時花太多的時候在折騰網站上面,而沒有用心去推廣宣傳。喜歡折騰沒辦法,不然也就沒有以下的內容分享給大家了。

補充:發佈這往篇文章後,無意間發現在了dedecms的GetOneArchive,只要傳入一個文檔id就可以獲得文章鏈接了,其實這個函數返回的的文章信息數組包含了:鏈接地址,標題,文章ID,欄目ID,這裏只需要文章鏈接地址。具體代碼如下

1
2
3
{dede:sql sql="select * From dede_archives a where a.title like '%<a href="http://www.qmtx3.com/live/" target="_blank">生活</a>小<a href="http://www.qmtx3.com" target="_blank">竅門</a>%' and a.arcrank>-1 limit 8"}
    <li><a title="[field:title/]" href="[field:id runphp='yes']$url=GetOneArchive(@me);@me=$url['arcurl'];[/field:id]">[field:title runphp='yes']@me=cn_substr(@me, 50);[/field:title]</a></li>
{/dede:sql}

如果你僅僅需要調用文章的鏈接地址該方法不失爲一個快捷的方法,文章下部分介紹的方法較爲複雜,但如果你想調用文章鏈接地址的同時還想調用欄目名稱不妨試下

爲什麼要使用dede:php,dede:sql

在一些比較複雜的調用中用dede:arclist標籤是解決不了問題的,比如說大家常說的調用某一會員發佈的文章等等之類,這些一般要通過dede:sql標籤來實現。

今天我所說的調用也是比較特殊的就是在首頁調用指定關鍵字的文章,其實這個跟dedecms的相關文章標籤類似。這裏給大家分享兩種方法。

dede:sql標籤調用指定關鍵字文章靜態地址

這裏引用dedecms官方關於dede:sql的介紹

【Sql 標記】
功能說明:用於從模板中用一個SQL查詢獲得其返回內容。
適用範圍:非擴展模塊所有模板。 
(1)語法:{dede:sql sql="這裏寫sql語句"}底層模板{/dede:sql} 
(2)屬性:
[1] sql 完整的SQL查詢語句。
(3)底層模板:
SQL語句中查出的所有字段都可以用[field:字段名/]來調用。

你可以去dedecms官網查看dede:sql等其他dedecms標籤的調用規則

好了瞭解dede:sql標籤後,就可以根據自己的需求寫sql語句了,我這裏是要調用指定關鍵字的文章,sql語句如下:

"select * From dede_archives a where a.arcrank>-1 and a.title like '%生活小竅門%' limit 8"

語句解析:a.arcrank>-1限制調用已審覈的文章;like '%生活小竅門%'調用指定關鍵字的文章;limit 8爲調用條數爲8條

然後就開始寫完整的標籤和底層模板了,如下:

這樣就OK了?起初我也以爲就是這麼簡單,興奮的打開預覽頁面,靠,title="",href=""這兩個屬性都是空的,想一下算是明白了。dede:sql標籤其實就是通過sql查詢數據庫返回查詢的字段(注:這裏我查詢的字段爲*,你可以根據你的實際情況來查詢),底板模板中的[field:字段名稱]調用的就是這個返回的字段,這些字段是沒有經過任何程序處理的,直接就是數據庫裏的內容。比如說fulltitle,arcurl這個在數據庫中就沒有這兩個字段,平常我們在dede:arclist中用到的這些字段只不過是dede在php程序中處理的。知道了問題所在然後查了下資料終於解決了。

1、首先解決完整標題和截字問題:我使用的是[field:title runphp='yes']@me=cn_substr(@me, 50);[/field:title]這種方法相信大家也經常用到,這裏就不多作介紹了,以後可能會專門弄個文章介紹這種用法。50就是截字長度

2、解決dede:sql標籤靜態文章地址問題:這裏比較麻煩了,我在網上轉了一下,多數給出的解決辦法就是href="/plus/view.php?aid=[field:id/]",顯然這不是我想要的這不是靜態地址,而其他地址用arclist調用的又是靜態地址,結果就成了一篇文章有兩個地址一個靜態一個動態,這對seo來說顯然不友好,最好通過自己折騰終於成功了

3、解決id不能正確獲取的問題:之前沒注意到因爲dede_arctype和dede_archives兩個表id字段名是一樣的,以至於底層模板獲取不到正確的id,之前select改了下,增加了別名。

dede:sql調用文章靜態鏈接地址的完美方法

1
2
3
{dede:sql sql="select * From dede_archives a, dede_arctype t where a.typeid = t.id and a.title like '%生活小竅門%' and a.arcrank>-1 limit 8"}
    <li><a title="[field:title/]" href="[field:array runphp='yes']             @me=GetFileUrl(@me['id'],@me['typeid'],@me['senddate'],@me['title'],@me['ismake'],@me['arcrank'],@me['namerule'],@me['typedir'],@me['money']);              [/field:array]">[field:title runphp='yes']@me=cn_substr(@me, 50);[/field:title]</a></li>
{/dede:sql}

不管怎麼說總算還是實現了我想要的效果,後來想了想用dede:php標籤如何實現這個效果呢,其實方法和dede:sql標籤是一樣的,也就不多說什麼了,直接貼代碼:

1
2
3
4
5
6
7
{dede:php}
    $dsql->SetQuery("select a.id as aid, t.id as tid,typeid,senddate,title,ismake,arcrank,namerule,typedir From dede_archives a, dede_arctype t where a.typeid = t.id and a.title like '%生活小竅門%' and a.arcrank>-1 limit 8");
    $dsql->Execute();
    while($row = $dsql->GetArray()){
        echo '<li><a title="'.$row['title'].'" href="'.GetFileUrl($row['aid'],$row['typeid'],$row['senddate'],$row['title'],$row['ismake'],$row['arcrank'],$row['namerule'],$row['typedir'],$row['money']).'">'.cn_substr($row['title'], 50).'</a></li>';
    }
{/dede:php}

最後的叼叼,dedecms個人覺得做一般的文章資訊類站點還是夠用的,不過要做什麼會員、下載。。。這些功能的站,dedecms貌似不怎麼能勝任,就像dede:php,dede:sql這些標籤,新手站長肯定搞不清楚的。這個效果在竅門天下首頁右邊那裏有演示,

1
2
3
{dede:sql sql="select a.id as aid, t.id as tid,typeid,senddate,title,ismake,arcrank,namerule,typedir From dede_archives a, dede_arctype t where a.typeid = t.id and a.title like '%生活小竅門%' and a.arcrank>-1 limit 8"}
    <li><a title="[field:title/]" href="[field:array runphp='yes']@me=GetFileUrl(@me['aid'],@me['typeid'],@me['senddate'],@me['title'],@me['ismake'],@me['arcrank'],@me['namerule'],@me['typedir'],@me['money']);[/field:array]">[field:title runphp='yes']@me=cn_substr(@me, 50);[/field:title]</a></li>
{/dede:sql}

哎,就這樣吧,寫原創文章真的累人,如果閣下要轉載請保留下鏈接信息http://www.qmtx3.com/a/201304/20064.html,謝謝,如果有什麼問題可以加筆者QQ:27856361一起討論。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章