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']) && !empty($v['id'])) {
$ids[] = $v['id']; //ids[]是主表中排序完成的文章id数组
} else {
continue;
}
}
if (!empty($ids)) {
$this->db->table_name = $this->db->table_name.'_data'; //副表名
$ids = implode('\',\'', $ids); //以逗号拼接成一个字符串
$r = $this->db->select("`id` IN ('$ids')", '*', '', '', '', 'id');//查询与主表中数据有关的副表中的数据
if (!empty($r)) {
foreach ($r as $k=>$v) { //副表中的数据
//$return:返回的主表中的数据,主表中的id字段值与附表中的id字段值是对应的,也就是说一篇文章在主表中存储的id跟在附表中存储的id的值是相等的
if (isset($return[$k])) $return[$k] = array_merge($v, $return[$k]);//主表中数据与副表中数据合并
}
}
}
}
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> &nbsp;&nbsp;&nbsp;&nbsp;<span>{date('H:i',$val[updatetime])}更新</span></div>
</dd>
</dl>
</a>
{/loop}
{/pc}

phpcms-v9 --- 如何通过{pc}标签获取全站文章内容?的更多相关文章

  1. phpcms V9 常用的调用标签

    本文介绍phpcms v9中模板标签使用说明. >>调用根目录下phpcms\template\content\header文件 {template "content" ...

  2. phpcms v9 在当前栏目下获取父栏目与当前栏目的名称与连接

    <a href="#" target="_blank">首页</a> > <a href="{$CATEGORYS ...

  3. Phpcms V9当前栏目及所有二级栏目下内容调用标签

    在二级栏目列表页调用: <!--* 获取子栏目* @param $parentid 父级id* @param $type 栏目类型* @param $self 是否包含本身 0为不包含* @pa ...

  4. PHPCMS V9 为今天或几天前文章加new

    今天内发布: {pc:content action="lists" catid="13" order="listorder DESC" nu ...

  5. 如何用PC标签在列表页中调出文章内容 phpcms

    如何用PC标签在列表页中调出文章内容 phpcms v9 moreinfo=”"参数说明 {pc:content action="lists" catid="$ ...

  6. PHPCMS V9调用时间标签 |日期时间格式化

    PHPCMS V9 如何调用时间标签,下面分享常见的调用时间标签 |日期时间格式化  1.日期时间格式化显示: a标准型:{date('Y-m-d H:i:s', $rs['inputtime'])} ...

  7. Phpcms V9全站伪静态设置方法

    为什么要伪静态?具体在这里就不说了,你懂的!一方面更新修改后不需要生成静态文件,另一方面为了SEO! 访问规则如下 1 2 list-{$catid}-{$page}.html content-{$c ...

  8. phpcms v9 邓士鹏(石家庄职业技术学院)

    头部标题.关键词.描述调用: <title>{if isset($SEO['title']) && !empty($SEO['title'])}{$SEO['title'] ...

  9. Phpcms V9缩略图裁剪存在黑边的解决方法

    最近用Phpcms v9又碰到一个老问题:在内容页缩略图裁剪的时候出现黑边,这种情况很久没碰到,估计是长宽不同或者会在首页.列表页.内容页不同地方偶然出现的情况,在这里分享下Phpcms V9缩略图裁 ...

随机推荐

  1. springMVC在JSP页面取map值

    在springmMVC中.jsp页面取得map值. 在controller层: Map<String, Object> map = new HashMap<String, Objec ...

  2. 小心ThreadLocal的陷阱

    ThreadLocal用在多线程时保存线程级的局部变量,当我们需要在线程内共享数据时,ThreadLocal屡试不爽,但是ThreadLocal也会有一个问题,当你使用线程池时,线程可能会被重用,所以 ...

  3. 解决OpenWrt多拨刚开机拨号只拨上一次问题

    红色标注为需要权限755/etc/ppp/ip-up.d/ip-up: 一旦 PPP 连结建立后, pppd 会找寻 /etc/ppp/ip-up 指令稿 如果这个指令稿存在并且可以执行的话,那么 P ...

  4. SSR服务端一键安装脚本

    支持新协议混淆,SSR服务端一键安装脚本   Shadowsocks-R 是项目 shadowsocks 的增强版,用于方便地产生各种协议接口.实现为在原来的协议外套一层编码和解码接口,不但可以伪装成 ...

  5. String.Empty、string=”” 和null的区别

    String.Empty是string类的一个静态常量: String.Empty和string=””区别不大,因为String.Empty的内部实现是: 1 2 3 4 5 6 7 8 9 10 1 ...

  6. highcharts:根据Y的数值范围,动态改变图形的填充颜色

    图形实例: 源代码如下:   <!DOCTYPE html><html><head><meta charset="utf-8">&l ...

  7. Javascript 拖拽雏形——逐行分析代码,让你轻松了解拖拽的原理

    拖拽的原理: 其实就是鼠标与左上角的距离保持不变.我们来看下图, 这红点就是鼠标. 拖拽拖拽实际上来说就是通过鼠标的位置来计算物体的位置,就是这么简单,就是这么任性. 那这个距离怎么求呢?? 鼠标的位 ...

  8. Oracle EBS-SQL (INV-4):检查负库存记录数.sql

    DEFINE DATE1="01/15/20** 23:59:59"      /*输入指定日期*/DEFINE CODE="%"                ...

  9. Android-Ant自动编译打包android项目 -- 2 ----签名与渠道包

    上篇介绍了怎么使用ant自动编译打包现有的android项目,这篇将继续介绍如果如何在ant打包应用的时候加入签名信息以及自动打包渠道包. 1. 加入签名信息: 在项目的根目录下建一个ant.prop ...

  10. 前端js模板库 JinkoTemplate

    有时候需要使用ajax来异步生成html,最土的方法就是用js的‘+’连接html代码,生成繁琐.一旦需要修改,对于少量的html代码到没啥问题,要是比较复杂的样式时,就真坑爹了,眼花缭乱有木有?Ji ...