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

1.phpcms-v9默认情况下只能根据catid获取当前栏目及子栏目下的文章,但是有时候我们需要如何通过{pc}标签来获取全站文章内容的需求,应该怎么做呢?

第一步:在content_tag.class.php文件中添加如下方法:

 1 /**
 2      * 列表页标签:主要返回的是主表中数据与附表中数据
 3      * @param $data
 4      */
 5     public function lists_all($data) {
 6         $this->db->set_model(1);//将模型手动指定为文章模型,为什么?因为根据源代码的套路,模型id的是根据catid来设置的,但是现在获取的是所有的文章,而不局限于某个栏目,所以只能手动将其设置为文章模型1    //根据模型id获取当前模型所对应的模型表和数据表 1:文档模型-news  3:图片模型-picture   2:下载模型-download
 7         if(isset($data[‘where‘])) {                                            //如果pc标签中设置了where属性,一般情况下不存在
 8             $sql = $data[‘where‘];
 9         } else {                                                            //如果pc标签中没有设置where属性
10             $thumb = intval($data[‘thumb‘]) ? " AND thumb != ‘‘" : ‘‘;        //如果有thumb属性
11             $sql = "status=99 ".$thumb;//去掉catid条件                //如果当前栏目下不存在子栏目
12         }
13         $order = $data[‘order‘];                                            //pc标签中order属性
14         //$sql作为一个条件出现,调用的是model.calss.php文件中的select方法,返回结果集数组,并按照键名‘id‘排序
15         $return = $this->db->select($sql, ‘*‘, $data[‘limit‘], $order, ‘‘, ‘id‘);//从数据库中获取主表数据,使用的也是sql语句查询
16
17         //如果需要在前台显示类别名称,可添加如下代码
18
19         $TYPES = getcache(‘type_content‘,‘commons‘);//获取类别缓存文件,此文件缓存了所有与类别信息相关的信息
20         foreach ($return as $key=>$v) {
21             $return[$key][typename]=$TYPES[$v[‘typeid‘]][name];//给$return中的每篇文章追加一个类别字段
22         }
23         //echo "<pre>";
24         //print_r($return);
25
26         //调用副表的数据
27         if (isset($data[‘moreinfo‘]) && intval($data[‘moreinfo‘]) == 1) {    //如果pc标签中设置了moreinfo属性:是否调用附表数据
28             $ids = array();
29             //$return为返回的主表数据
30             foreach ($return as $v) {                                        //循环主表中的记录信息:$v-主表中的每条记录
31                 if (isset($v[‘id‘]) && !empty($v[‘id‘])) {
32                     $ids[] = $v[‘id‘];                                        //ids[]是主表中排序完成的文章id数组
33                 } else {
34                     continue;
35                 }
36             }
37             if (!empty($ids)) {
38                 $this->db->table_name = $this->db->table_name.‘_data‘;        //副表名
39                 $ids = implode(‘\‘,\‘‘, $ids);                                //以逗号拼接成一个字符串
40                 $r = $this->db->select("`id` IN (‘$ids‘)", ‘*‘, ‘‘, ‘‘, ‘‘, ‘id‘);//查询与主表中数据有关的副表中的数据
41                 if (!empty($r)) {
42                     foreach ($r as $k=>$v) {                                //副表中的数据
43                         //$return:返回的主表中的数据,主表中的id字段值与附表中的id字段值是对应的,也就是说一篇文章在主表中存储的id跟在附表中存储的id的值是相等的
44                         if (isset($return[$k])) $return[$k] = array_merge($v, $return[$k]);//主表中数据与副表中数据合并
45                     }
46                 }
47             }
48         }
49         return $return;
50     }

第二步:在模板文件中调用:

{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}
时间: 2024-10-22 11:49:14

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

phpcms V9 常用的调用标签

本文介绍phpcms v9中模板标签使用说明. >>调用根目录下phpcms\template\content\header文件 {template "content","header"} >>字符集 (gbk或者utf-8) {CHARSET} >>标题和标题seo优化 {if isset($SEO['title']) && !empty($SEO['title'])} {$SEO['title']}{/if}

获取远程文章内容时,显示图片的两种方式

第一种: 通过Html.fromHtml(String,ImageGetter,tagHandler) CharSequence text = Html.fromHtml(capter, new ImageGetter() {                                        @Override                    public Drawable getDrawable(String source) {                        

WordPress获取页面文章内容的代码

下面是具体相关的页面内容调用代码: wordpess调用某页面内容的代码如下: <?php $article_id = 1; //页面的ID echo get_post($article_id)->post_content; ?> post_author:(整数)文章作者的编号 post_data:(字符)文章发表的日期和时间(YYYY-MM-DD HH-MM-SS) post_data_gmt:(字符)文章发表的格林尼治标准时间(GMT) (YYYY-MM-DD HH-MM-SS) p

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

PHPCMS V9 如何调用时间标签,下面分享常见的调用时间标签 |日期时间格式化 1.日期时间格式化显示: a标准型:{date('Y-m-d H:i:s', $rs['inputtime'])} 输出为:2013-01-31 13:15:10 b拆分型:{date('Y',$rs[inputtime])}年{date('m',$rs[inputtime])}月{date('d',$rs[inputtime])}日 输出为:2013年01月31日 c扩展型: {date('Y',$inputt

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

最近用Phpcms v9又碰到一个老问题:在内容页缩略图裁剪的时候出现黑边,这种情况很久没碰到,估计是长宽不同或者会在首页.列表页.内容页不同地方偶然出现的情况,在这里分享下Phpcms V9缩略图裁剪存在黑边的解决方法. 在Phpcms V9缩略图裁剪函数thumb进行之前,会有个getpercent函数对图片长度和高度进行判断,修正这个错误,可以通过修改getpercent函数判断来做到,具体文件:phpcms/libs/classes/image.class.php. 找到第65.66行:

PHPCMS V9 全站通用日期时间标签

用PHPCMS V9 建站时,经常会用到时间标签,它是通用标签调用-日期时间格式化,适用全站. 1.日期时间格式化显示: a\标准型:{date('Y-m-d H:i:s', $rs['inputtime'])} 输出为:2013-01-31 13:15:10 b\拆分型:{date('Y',$rs[inputtime])}年{date('m',$rs[inputtime])}月{date('d',$rs[inputtime])}日 输出为:2013年01月31日 c\扩展型: {date('Y

phpcms V9如何调用全站文章排行

想在首页添加浏览排行功能,却发现Phpcms竟然不支持调用全站文章排行.仔细研究了Phpcms源码,终于找到解决办法. 默认情况下,Phpcms只支持调用当前文章排行,代码如下: {pc:content  action="hits" catid="$catid" num="10" order="views DESC" cache="3600"} 其中$catid为待调用栏目的id,如果想实现全站调用,需要修

phpcms pc标签详解

PHPCMS V9内容模块PC标签调用说明 模块名:content 模块提供的可用操作 操作名 说明 lists 内容数据列表 relation 内容相关文章 hits 内容数据点击排行榜 category 内容栏目列表 position 内容推荐位列表 position操作说明如下: -------------------------------------------------------------------------------- 内容推荐位列表(position): 可用参数:

phpcms v9 常用调用标签(全)

本文介绍phpcms v9中模板标签使用说明. {template "content","header"}调用根目录下phpcms\template\content\header文件{CHARSET}字符集 (gbk或者utf-8){if isset($SEO['title']) && !empty($SEO['title'])}{$SEO['title']}{/if}{$SEO['site_title']}{$SEO['keyword']}{$SE