- {pc:content action="lists" catid="25" num="$pagesize" page="$page" return="data"}
- <ul>
- {loop $data $n $r}
- <li><a href="{$r[url]}">{$r[title]}</a></li>
- {/loop}
- </ul>
- {/pc}
pc标签起作用需要在数据库module表中注册,pc:content PC 标签中{pc:}冒号之后跟随的为模块名,表示class content_tag, 前台模板文件产生的phpcms\templates\default,静态页的调试.tag标签编译后的效果,也是后台调用的方法
- <?php
- $content_tag = pc_base::load_app_class("content_tag", "content");
- if (method_exists($content_tag, 'lists')) {
- $pagesize = 4;$page = intval($page) ? intval($page) : 1;
- if($page<=0){$page=1;}$offset = ($page - 1) * $pagesize;
- $content_total = $content_tag->count(array('catid'=>$catid,'order'=>'id DESC','limit'=>$offset.",".$pagesize,'action'=>'lists',));
- $pages = pages($content_total, $page, $pagesize, $urlrule);
- $data = $content_tag->lists(array('catid'=>$catid,'order'=>'id DESC','limit'=>$offset.",".$pagesize,'action'=>'lists',));
- }
- ?>
标签中的参数变量是前提控制类提供,参数的调用,写page参数是会调用count($data)
- {pc:comment action="get_comment" commentid="$commentid"}
- {php $comment = $data;}
- {/pc}
- public function lists($data) {
- $where = '1';
- if ($data['limit']) $where .= " AND `num`='".$data['limit']."'";
- if ($data['catid']) $where .= " AND `catid`!=''";
- $listorder = array('`id` ASC', '`id` DESC', '`listorder` ASC', '`listorder` DESC');
- $result = $this->c->select($where, '*', $data['limit'], $listorder[$data['listorder']]);
- if (is_array($result)) {
- foreach($result as $k => $r) {
- if ($r['curl']) {
- $content_arr = explode('|', $r['curl']);
- $r['url'] = go($content_arr['1'], $content_arr['0']);
- }
- $res[$k] = $r;
- //$res['num']= $this->count($data); //记录总条数
- }
- } else {
- $res = array();
- }
- return $res;
- }
下表为PC标签保留参数表,几乎所有的PC标签都支持这些保留参数设置
变量名 |
默认值 |
说明 |
action | null | 本参数的值表示为操作事件,模型类PC标签必须使用包含本参数,以说明要进行的操作。 |
cache |
0 |
缓存存储时间(单位秒) |
num |
20 |
获取记录的条数,最后会被模板引擎处理成limit 传送到处理函数中。 |
page |
null |
当前分页。一般填写为$_GET[page] |
urlrule |
null |
URL规则 |
return |
data |
返回数据变量名 |
没有page参数$data['limit']=pagesize,有page参数$data['limit']=page,pagesize;
该标签解析类是在每个模块下面的classes/的以“模块名_tag.class.php”的文件
单行PHP解析语法{php $i=1;}{if $n%5==0}<li class="dashed_line"></li>{/if}
- {pc:get sql="SELECT * FROM phpcms_member" cache="3600" page="$page" dbsource="discuz" return="data"}
- {pc:xml url="http://www.yourname.com/asdfasdf.xml " cache="3600"}{/pc}
- {pc:json url="http://www.yourname.com/asdfasdf.json" cache="3600"}{/pc}
为什么用模板标签?需要一些参数来控制页面的显示效果,参数自己可以手动加,如num,cache,page
- {pc:get sql="SELECT * FROM wechenews ORDER BY id desc" num="7" start="23"}
- {loop $data $r}
- <li><span>[{getMore($r[catid])}] </span><a href="{$r[url]}" class="title" title="{$r[title]}">{str_cut($r[title],32,'')}</a></li>
- {/loop}
num调用条数 start起始输出的位置
v9的标签函数像2008那样支持limit="0,5"这样的写法
- {pc:content action="limit" type="lists" catid="54" thumb="" order="listorder DESC" step="3,5"}
- {loop $data $r}
- <li>·<a href="{$r[url]}" title="{$r[title]}">{$r[title]}</a></li>
- {/loop}{/pc}
type:定义 的是类别:可选lists或者position(目前支持普通列表和推荐位)
catid:选择 了lists的类别才需要填写这个值
position:选择了position的类别才需要填写这个值
thumb:不分类 别都可以
order:排序方式
step:传说中的limit
试验结果可行
将内容模型标签的class类文件 找出:文件地址 phpcms\modules\content\classes\content_tag .class.php
添加标签函数:
- /**
- * limit页标签
- * @param $data
- */
- public function limit($data){
- $data['limit']=$data['step'];
- return $this->$data['type']($data);
- }
phpcms文章列表页如何获取文章的分类名称及分类链接:
效果如:
程序如下:
{pc:content action="lists" catid="$catid" num="25" order="updatetime DESC" page="$page" moreinfo="1"}
{loop $data $r}
<a href="{$CAT['url']}">{$CAT[catname]}</a>
{/loop}
{/pc}