相对于其它CMS来说,phpcms更为专业,功能也更为强大。但,对于站长的入门要求也就稍微的高了一些。 特别是对根基比较差的站长,很多都是看的一头雾水。我个人接触PHPCMS2008 也就两周多。看了论坛的几篇教程,今天想想,我决定自己写下一些使用过程中的心得,以方便广大新手站长能够轻松入门,并打造出属于自己的网站。【前提声明:个人水平有限,有不足和不对的地方还望大家多多指教。】
一。模板制作之标签篇
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为不连续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中循环的就应该是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之后,我们会发现,编辑一前的文章之后,这篇文章被调用到了列表的最前面。所以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 根据自己需要调整吧~
其他参数前面介绍了! 这里就不多说了 继续下一个问题。
(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>而已
我尽量说的比较简单了,我认为这个确实应该很简单了吧。 呵呵
忘了一点,不过记得以前有位仁兄好像发过,想象我也加上吧,这样基本上get的常规用法就比较全面了。
(5)调用的技巧,limit参数。 【比如:调用从第二条开始的连续几条信息】
<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并且通过审核的文章,从第二条起的连续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)最近发现一个问题,哪就是在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}
用哪种方法就看自己喜好吧,反正个人认为能达到目的就行。
注意在(6)和(7)中的 `phpcms_content` 这个符号是``而不是'' 搞错了没办法执行奥
最后编者注:其实很多人都说,你用的是get ,我不了解或者不懂那个东西。 其实我觉得,我基本上吧get使用中的大部分遇到的情况都已经列出来了,如果你愿意仔细的花点时间来看和研究,我认为应该不是一件很难的事。因为,确实真的很简单....
本教程暂时告一段落,接下来就是div+css部分了!