標籤:
很NB很強大的語句,用了他你可以在模板頁面寫任何php語句了
{dede:php}
$thisid = $refObj->Fields[‘id‘];
$row = $dsql->GetOne(‘select v_type,video from `#@__addonarticle` where aid=‘.$thisid);
if($row["v_type"]=="swf")
{
echo "結果一";
}
else
{
echo "結果二"
;
</script>‘;
}
{/dede:php}
dedecms裡面有兩個標籤還是比較靈活的,一個是{dede:PHP} {/dede:PHP}另外一個是{dede:sql}標籤,{dede:PHP}標籤注釋要用來在模板中寫PHP代碼的,{dede:sql}主要是用來調用sql用的,下面就來介紹下這兩個標籤到底該如何使用。該文章是轉自百度空間的一篇文章。
{dede:sql}標籤的用法
sql標籤可以稱得上是個萬能標籤了,查詢資料庫將其輸出,這裡介紹一些關於這個標籤的用法:
1.用來輸出統計內容,這個是不錯的,舉個例子,我們來統計下總共發了多少的文章,思路就是輸出dede_addonarticle這個文章附加表內容總數就可以了。
123 |
{dede:sql sql= "SELECT COUNT(*) AS nums FROM dede_addonarticle" } [field:name = "nums" /] {/dede:sql} |
2.使用~field~來進行特殊的查詢,比如之前論壇上面很多會員需要做一個輸出當前發布文章會員的相關內容,之前用sql或者arclist標籤是沒辦法實現的,因為每篇內容是不同的,這裡我們來用5.5的sql語句來做個示範。
我們首先在文章模板中相應的位置加上下面的標籤
123 |
{dede:sql sql= "SELECT * FROM dede_archives WHERE writer=~writer~" } [field:id/], {/dede:sql} |
這個放到article_article.htm頁面,將會檢索出當前會員發布的相關文章,這裡的~ writer~會根據當前內容的環境變數進行替換後再執行查詢。
這裡出現在SQL語句中條件查詢的~ writer~,也就是$refObj->Fields[$value]這個裡面的相關內容
模板中使用PHP
許多人希望織夢的模板標籤能夠更加靈活,加入可以運行PHP的功能,這裡在DedeCMS V5.5中就加入了一個可以執行php的特殊標籤{dede:php}{/dede:php},這個標籤可以執行PHP語句了。
我這裡舉幾個常用的例子:
1.最簡單的輸出內容:
123456 |
{dede:php} $numA = 1; $numB = 2; echo $numA + $numB; {/dede:php} |
在 {dede:php}裡想要輸出資訊 可以直接使用print , echo 之類的列印出來 賦值給@me 無效
這個輸出的內容是計算結果:
3
2.結合SQL查詢輸出單條內容
1234 |
{dede:php} $row = $dsql->GetOne( ‘select id,typename from dede_arctype where id=2‘ ); print_r($row); {/dede:php} |
這個輸出的內容是
Array
(
[id] => 2
[typename] => 問答
)
3.擷取當前頁面的變數
比如我們這裡進入系統背景[模板]-[全域標記測試],我們在代碼中填入下面的內容:
1234 |
{dede:php} print_r($refObj->Fields); {/dede:php} |
在PHP中想要擷取dede某個欄位值 可以使用 $refObj->Fields 對象來擷取 列入擷取 title => $refObj->Fields[‘title‘]
如果環境變數保持預設,即"不使用環境ID",我們會看到以下的結果:
1234567891011 |
Array ( [typeid] => 0 [phpurl] => /plus [indexurl] => / [templeturl] => /templets [memberurl] => /member [specurl] => /special [indexname] => 首頁 [templetdef] => /templets/ default ) |
那我們再換個環境變數測試看看,這裡以我本地的欄目為測試了:
1234567891011121314 |
Array ( [id] => 3 [reid] => 0 [topid] => 0 [sortrank] => 1 [typename] => 產品 [typedir] => {cmspath}/product … … [indexname] => 首頁 [templetdef] => /templets/ default [position] => 首頁 > 產品 > [title] => 產品 ) |
這樣一來就檢索出當前頁面的局部變數了,接下來我們可以來結合前面的SQL語句來實現根據不同環境ID調用內容不同欄目內容。
例如:
12345 |
{dede:php} $thisid = $refObj->Fields[ ‘id‘ ]; $row = $dsql->GetOne( ‘select id,typename from dede_arctype where id=‘ .$thisid); print_r($row); {/dede:php} |
這樣是來調用當前欄目的標題,這個標籤功能類似於{dede:field.typename/}
dedecms織夢dede:sql標籤,在dedecms中嵌套php文法等一些方法