【phpcms-v9】如何通过{pc}标签获取全站文章内容?
发布:smiling 来源: PHP粉丝网 添加日期:2014-10-23 15:10:37 浏览: 评论:0
1.phpcms-v9默认情况下只能根据catid获取当前栏目及子栏目下的文章,但是有时候我们需要如何通过{pc}标签来获取全站文章内容的需求,应该怎么做呢?
第一步:在content_tag.class.php文件中添加如下方法:
- /**
- * 列表页标签:主要返回的是主表中数据与附表中数据
- * @param $data
- */
- public function lists_all($data) {
- $this->db->set_model(1);//将模型手动指定为文章模型,为什么?因为根据源代码的套路,模型id的是根据catid来设置的,但是现在获取的是所有的文章,而不局限于某个栏目,所以只能手动将其设置为文章模型1 //根据模型id获取当前模型所对应的模型表和数据表 1:文档模型-news 3:图片模型-picture 2:下载模型-download
- if(isset($data['where'])) { //如果pc标签中设置了where属性,一般情况下不存在
- $sql = $data['where'];
- } else { //如果pc标签中没有设置where属性
- $thumb = intval($data['thumb']) ? " AND thumb != ''" : ''; //如果有thumb属性
- $sql = "status=99 ".$thumb;//去掉catid条件 //如果当前栏目下不存在子栏目
- }
- $order = $data['order']; //pc标签中order属性
- //$sql作为一个条件出现,调用的是model.calss.php文件中的select方法,返回结果集数组,并按照键名'id'排序
- $return = $this->db->select($sql, '*', $data['limit'], $order, '', 'id');//从数据库中获取主表数据,使用的也是sql语句查询
- //如果需要在前台显示类别名称,可添加如下代码
- $TYPES = getcache('type_content','commons');//获取类别缓存文件,此文件缓存了所有与类别信息相关的信息
- foreach ($return as $key=>$v) {
- $return[$key][typename]=$TYPES[$v['typeid']][name];//给$return中的每篇文章追加一个类别字段
- }
- //echo "<pre>";
- //print_r($return);
- //调用副表的数据
- if (isset($data['moreinfo']) && intval($data['moreinfo']) == 1) { //如果pc标签中设置了moreinfo属性:是否调用附表数据
- $ids = array();
- //$return为返回的主表数据
- foreach ($return as $v) { //循环主表中的记录信息:$v-主表中的每条记录
- if (isset($v['id']) && !emptyempty($v['id'])) {
- $ids[] = $v['id']; //ids[]是主表中排序完成的文章id数组
- } else {
- continue;
- }
- }
- if (!emptyempty($ids)) {
- $this->db->table_name = $this->db->table_name.'_data'; //副表名
- $ids = implode('\',\'', $ids); //以逗号拼接成一个字符串
- $r = $this->db->select("`id` IN ('$ids')", '*', '', '', '', 'id');//查询与主表中数据有关的副表中的数据
- if (!emptyempty($r)) {
- foreach ($r as $k=>$v) { //副表中的数据
- //$return:返回的主表中的数据,主表中的id字段值与附表中的id字段值是对应的,也就是说一篇文章在主表中存储的id跟在附表中存储的id的值是相等的
- if (isset($return[$k])) $return[$k] = array_merge($v, $return[$k]);//主表中数据与副表中数据合并
- } //开源软件:phpfensi.com
- }
- }
- }
- return $return;
- }
第二步:在模板文件中调用:
- {pc:content action="lists_all" num="15" order="id DESC" page="$page"}
- {loop $data $r $val}
- <a href="{$val[url]}">
- <dl class="wenzhangliebiao">
- <dt><img src="{$val[thumb]}" width="132" height="97" alt="盘点苹果公司的生财之道"></dt>
- <dd>
- <h3>{$val[title]}</h3>
- <p>{str_cut($val[description],220,'...')} </p>
- <div><span>{date('Y年m月d日 H:i:s',$val[inputtime])}</span> <span>{date('H:i',$val[updatetime])}更新</span></div>
- </dd>
- </dl>
- </a>
- {/loop}
- {/pc}
Tags: phpcms全站标签 phpcms全站文章
相关文章
- ·Phpcms v9利用GET标签调用全站内容月排行(2014-10-19)
- ·【phpcms-v9】phpcms-v9中get标签调用全站文章内容(2014-10-24)
- ·Phpcms V9 调用全站文章排行的解决方案(2014-10-19)
- ·phpcms v9调用全站最新文章功能代码(2014-10-20)
- ·PHPCMS全站文章点击排行2个例子(2014-12-05)
- ·Phpcms v9调用全站文章排序榜实现方法(2015-03-24)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)