1. 內容標簽
在官方模板頁里邊,我們可以看到如{tag_網站首頁頭條} 這樣的標簽。
這種標簽就是“內容標簽”,可以在后臺的“模板風格”->的“內容標簽管理”里進行查看和修改。
這種標簽屬于模塊化的標簽,也就是說它通過SQL語句查詢配合數據調用條件賦值到模板通過模板引擎來進行讀取和生成的。 大家編輯一下模板基本上就能看出來。 【如果打算做出一個個性化的網站,我不太推崇過多的使用這種方式,當然,很多重復調用的部分,用這種方式還是不錯的。 或許是因為個人喜好,我個人不太常用這種方式,所以這里就不多講,我們今天主要要講一下get】
2. get常用調用方式
我覺得這種方式的靈活性很強大。個人推薦。下面將重點說一下,get的幾種常用調用方式,個人認為,做PHPCMS的模板,了解了get基本上就夠用了。
(1)調用一個欄目下的最新,帶縮略圖的文章,同時調用出起內容簡介(多個欄目ID調用)
以下為模板中的標簽
<div class="oz_z1" id="tt_index"><!--中一開始資訊推薦-->
{get sql="select*from phpcms_content where catid>=79 and catid<=85 and status=99 and posids=1 and `thumb`!='' order by updatetime desc" rows="1"}
<li><A href="{$r[url]}" target="_blank">{str_cut($r[title], 40)}</A></li><br />
<div id="tit_z1">
<dt><A href="{$r[url]}" title="{str_cut($r[title], 50)}" target="_blank"><img src="{thumb($r[thumb], 110, 75)}" /></A></dt>
<dl><A href="{$r[url]}" target="_blank">{str_cut($r[description],100)}</A></dl>
</div>
{/get}
在使用get的時候注意一點就是{/get} get的結束標簽。
說明:phpcms_content 這是數據庫里邊數據表的名稱,如果你的數據表前綴進行了修改,這里也必須進行修改。如果你在安裝phpcms的時候設置的為woshi_. 那么這里就應該是woshi_content
catid>=79 and catid<=85 欄目ID大于等于75并且欄目id小于等于85. 也就是調用欄目ID75 76 77 78 79 80 81 82 83 84 85的文章。
posids=1 文章類型為首頁推薦
status=99 文章已經通過審核
`thumb`!='' 縮略圖不為空,也就是必須要有縮略圖
{$r[url]} 內容頁的地址
{str_cut($r[title], 40)} 文章標題,長度限制為40
{thumb($r[thumb], 110, 75)} 縮略圖地址 縮略圖大小限制為width=110px height=75px
{str_cut($r[description],100) 文章簡介調用 簡介長度為100
通過上面的調用及模板語句(div li ),我通過css的控制可得出如下test.gif。 具體的css部分,我們后面在講。
(2)調用多個欄目ID,(欄目ID為不連續(xù)ID) 也就是說我們在欄目建立初期有欄目ID75 76 77 78 79 80 81 82 83 84 85。 而在建立了其它欄目之后,我們有在這個欄目添加了一個新的欄目,產生了一個新的ID。比如ID 95. 那么我們應該怎么樣使用get來調用啦?
在(1)中我們使用了catid>=XX and catid<=XX 如果說現在要加入catid95 那么就不能在用and了 而應該使用or 。 具體方式如下
{get sql="select*from phpcms_content where catid>=79 and catid<=85 or catid=95 order by updatetime desc" rows="6"}
{/get}
如果說我們這里調用的是文章標題列表 數量為6 那么我們要在div中循環(huán)的就應該是li了。具體如下
<div class="oz_z2">
{get sql="select*from phpcms_content where catid>=79 and catid<=85 or catid=95 order by updatetime desc" rows="6"}
<li><A href="{$r[url]}" target="_blank">{str_cut($r[title], 38)}</A></li>
{/get}
</div>
這里說明一點updatetime 的排序方式。 比如說我們想按照文章錄入的時間來進行降序排列(也就是吧最新的排前面),在使用updatetime之后,我們會發(fā)現,編輯一前的文章之后,這篇文章被 調用到了列表的最前面。所以updatetime是文章編輯或修改時間,如果我們不想以這種方式進行排序,而是想以文章錄入時間進行降序排列,可以吧這里 的updatetime改為inputtime
(3)使用get調用 欄目名及其相對應的欄目地址
在使用get 的sql查詢時,我們通常都會查詢phpcms_content這個表,在這個表里邊包括了所有的文章及下載等內容信息,但欄目只有id卻沒有欄目名,所 有的欄目信息都在 phpcms_category 這個表里邊,其實打開數據庫一看,我們就一目了然了。所以在調用欄目名及其地址的時候我們需要借助 {str_cut($CATEGORY[$r[catid]][catname],4)} 這種方式來進行參數傳遞,呵呵,我索性連欄目名長度截取也加上,方便大家吧。呵呵。 有夠BT ,呵呵 具體示例如下:
<div class="oz_z2">
{get sql="select*from phpcms_content where catid>=52 and catid<=55 or catid=50 or catid=77 or catid=78 order by updatetime desc" rows="6"}
<li><p>[<a href="{$CATEGORY[$r[catid]][url]}" target="_blank">{str_cut($CATEGORY[$r[catid]][catname],4)}</a>]</p><A href="{$r[url]}" target="_blank">{str_cut($r[title], 38)}</A></li>
{/get}
</div>
這個get調用的欄目ID分別為52 53 54 55 77 78 活學活用 呵呵!
{$CATEGORY[$r[catid]][url]} 欄目地址
{str_cut($CATEGORY[$r[catid]][catname],4)} 欄目名 長度為4 根據自己需要調整吧~
其他參數前面介紹了! 這里就不多說了 繼續(xù)下一個問題。
(4)如何調用后臺設置的標題顏色???
其實這個東東 一點都不神秘。 只是個<span></span>而已! 呵呵 接下來就直接示例吧!
<div id="hdlist">
<ul>
{get sql="select*from 99inet_content where catid=40 and status=99 order by updatetime desc" rows="7"}
<li> [{date('m-d', $r[updatetime])}] <A href="{$r[url]}" target="_blank">{if $r[style]}<span class="{$r[style]}"> {str_cut($r[title], 22)}</span>{else}{str_cut($r[title], 22)}{/if}</A></li>
{/get}</ul>
</div>
{get}部分俺就不說了,上面基本上都說了~ [{date('m-d', $r[updatetime])}] 這個地方調用的是文章日期
在這個小部分,大家注意我標出來的藍色代碼和量個綠色代碼,有人會問:為什么調用兩次標題里?? 呵呵 別急 接下來告訴大家為什么。
<A href="{$r[url]}" target="_blank">{if $r[style]}<span class="{$r[style]}"> {str_cut($r[title], 22)}</span>{else}{str_cut($r[title], 22)}{/if}</A>
其實這段代碼好簡單奧,有html基礎地人都能看明白。{if$r[style]} 如果數據庫相對應的文章的style字段不為空(也就是有內容),就生成<span class="{$r[style]}"> {str_cut($r[title], 22)}</span> ,也就是說如果這篇文章你設置了標題顏色或者效果(加粗、斜體等),那么最終生成的html頁應該是這樣的
<a href="文章地址" target="_blank"><span class="b">網站標題</span></a> 其實class的指是官方設置好的,這里的b是標題加粗。 其值我們在這里不深究。
如果說在后臺沒有給標題加任何效果。你們生成的html就是
<a href="文章地址" target="_blank網站標題</a> 沒有調用<span>而已
我盡量說的比較簡單了,我認為這個確實應該很簡單了吧。 呵呵
忘了一點,不過記得以前有位仁兄好像發(fā)過,想象我也加上吧,這樣基本上get的常規(guī)用法就比較全面了。
(5)調用的技巧,limit參數。 【比如:調用從第二條開始的連續(xù)幾條信息】
<div id="hdlist">
<ul>
{get sql="select*from phpcms_content where catid=39 and status=99 order by updatetime desc limit 2,7"}
<li>[{date('m-d', $r[updatetime])}] <A href="{$r[url]}" title="{str_cut($r[title], 50)}" target="_blank">{if $r[style]}<span class="{$r[style]}">{str_cut($r[title], 22)}</span>{else}{str_cut($r[title], 22)}{/if}</A></li>
{/get}</ul>
</div>
調用欄目id為39并且通過審核的文章,從第二條起的連續(xù)7條信息。 這個里邊就使用了上面講的調用后臺設置的標題顏色。
簡單 簡單 相當的簡單。 這次真的完了。 奧對了,在使用limit是 不可同時使用row ,至于為什么?你想想就明白了
(6)如何使用get在欄目首頁調用所有文章模型的文章 (這個是模型的全部)
<div class="test">
{get sql="SELECT contentid,catid,typeid,areaid,title,style,thumb,keywords,description,userid,updatetime,inputtime,url FROM `yimi_content` WHERE status=99 ".get_sql_catid($cid)." ORDER BY contentid DESC" rows="40"}
<li><a href="{$r[url]}">{$r[title]}</a></li>
{/get}
</div>
可惜是模型的全部 大家可以試驗一下 給個思路 研究中...
(7)最近發(fā)現一個問題,哪就是在get的使用過程中 大家比較困惑的是id的取值,這點是我沒想到的,呵呵,所以我今天增加了欄目首頁調用所有子欄目內容的說明。同時也提一下,id的另一種賦值方法。
{get sql="SELECT * FROM `phpcms_content` c,`phpcms_content_count` n WHERE c.contentid=n.contentid AND c.`status`=99 and catid in (39,40,41,42,43,44,45,46,47,48,66,68,69,70,71,72,73,74,75,76) ORDER BY contentid DESC" rows="10"}
<li><a href="{$r[url]}">{$r[title]}</a></li>
{/get}
一些小例子:
GET標簽不愧是萬能的,不僅短巧,還能提高模板制作效率.
下面分享自己平時常用的幾組GET標簽,希望對你們有幫助.
@7天內的點擊排行榜
<ol>
{get sql="SELECT * FROM `phpcms_content` c,`phpcms_content_count` n WHERE updatetime>'.TIME.'-7*86400 and c.contentid=n.contentid AND c.`status`=99 and catid='$catid' '.get_sql_catid($catid).' ORDER BY n.hits DESC" rows="8"}
<li><a href="{$r[url]}">{str_cut($r[title], 88)}</a></li>
{/get}
</ol>
@7天內的評論排行榜
<ol>
{get sql="SELECT * FROM `phpcms_content` c,`phpcms_content_count` n WHERE updatetime>'.TIME.'-7*86400 and c.contentid=n.contentid AND c.`status`=99 and catid='$catid' '.get_sql_catid($catid).' ORDER BY n.comments DESC" rows="8"}
<li><a href="{$r[url]}">{str_cut($r[title], 88)}</a></li>
{/get}
</ol>
@圖片推薦GET標簽(調用推薦ID為10的帶有縮略圖的信息)
{get sql="SELECT * FROM `phpcms_content` a, `phpcms_c_news` b WHERE a.contentid=b.contentid AND `status`=99 AND `thumb`!='' AND a.`contentid` IN(SELECT `contentid` FROM `phpcms_content_position` WHERE `posid`='10') ".get_sql_catid($catid)." ORDER BY a.contentid DESC" rows="3"}
<div class="col">
<div class="img" width="134"><a href="{$r[url]}"><img src="{thumb($r[thumb], 130, 90)}" alt="{$r[title]}" border="0" /></a></div>
<h6><a href="{$r[url]}">{if $r[style]}<span class="{$r[style]}">{str_cut($r[title], 800,'')}</span>{else}{str_cut($r[title], 800,'')}{/if}</a></h6>
</div>
{/get}
@DIGG排行榜的GET標簽
<ol>
{get sql="SELECT * FROM phpcms_content c,phpcms_digg d WHERE c.contentid=d.contentid AND c.status=99 ORDER BY d.supports DESC" rows="8"}
<li><span>{$r[supports]}</span><a href="{$r[url]}">{str_cut($r[title], 88)}</a></li>
{/get}
</ol>
@只調用新聞模型且推薦ID為7的新聞
<ul>
{get sql="SELECT * FROM phpcms_content c,phpcms_c_news n,phpcms_content_position p WHERE c.contentid=n.contentid and c.contentid=p.contentid and posid=7 and `status`=99 ORDER BY inputtime DESC" rows="6"}
<li><a href="{$r[url]}">{str_cut($r[title], 88)}</a></li>
{/if}
</ul>
@調用相關新聞
{get sql="SELECT * FROM phpcms_content c,phpcms_content_tag t WHERE c.contentid!='$contentid' and c.contentid=t.contentid and c.status=99 AND t.tag IN('.get_sql_in($r[keywords]).') ORDER BY c.contentid DESC" rows="6"}
<li><a href="{$r[url]}">{str_cut($r[title], 88)}</a></li>
{/get}