技术CTO-关注编程入门知识,提供编程入门教程

您的位置: 首页 > 原创文章 > 正文

phpcms v9获取全站最新文章标签

来源: 技术CTO 阅读:

相信用过phpcms的朋友们都知道phpcms v9只能根据栏目id获取最新的内容,但是有时候我们也需要获取全站最新发布的文章,这时候就需要自定义函数了,下面分享下作者写的获取代码,有需要的可以参考下。

首先在phpcms/modules/content/classes/content_tag.class.php这个文件的增加函数
public function newcontent($data){
        $num = intval($data['limit']) ? intval($data['limit']) : '20';
        // 设置排序
        switch($data['order']){
            case '1':
                $order = ' `id` ASC ';
                break;
            case '2':
                $order = ' `id` DESC ';
                break;
            case '3':
                $order = ' `inputtime` ASC ';
                break;
            case '4':
                $order = ' `inputtime` DESC ';
                break;
            case '5':
                $order = ' `updatetime` ASC ';
                break;
            case '6':
                $order = ' `updatetime` DESC ';
                break;
            default:
                $order = ' `id` DESC ';
        }
        if($data['catid']){
            $catids = explode(',', $data['catid']);
            foreach($catids as $catid){
                $catid = intval($catid);
                if(empty($catid))continue;
                $this->set_modelid($catid);
                $where = $this->category[$catid]['child'] ? ' `catid` IN ('.$this->category[$catid]['arrchildid'].')' : " `catid` = $catid";
                $datas = $this->db->select($where, '*', $num, $order);
                $data[$catid]['data'] = $datas;
                // 记录本次的文章数
                $data['num'][] = count($datas);
                $model_num++;
            }
        }else{
            $models = getcache('model', 'commons');
            foreach($models as $model){
                $this->db->set_model($model['modelid']);
                $datas = $this->db->select('', '*', $num, $order);
                $data[$model['modelid']]['data'] = $datas;
                // 记录本次的文章数
                $data['num'][] = count($datas);
                $model_num++;
            }
        }
        if($data){
            // 获取每个模型应该截取的条数
            $num = ceil($num/$model_num);
            // 循环条数记录用于找出条数不满足的数量然后进行平均
            $w_num = $w_num_t = '';
            foreach($data['num'] as $num_t){
                if($num_t < $num){
                    $w_num += $num-$num_t;
                    $w_num_t++;
                }
            }
            // 判断是否有不满足平均数的 如果有那么就增加平均值
            if($w_num_t){
                $num += ceil($w_num/($model_num-$w_num_t));
            }
            $datas = array();
            foreach($data as $r){
                $r_n = '';
                if(is_array($r['data']))
                foreach($r['data'] as $r_t){
                    $datas[] = $r_t;
                    if(++$r_n == $num)break;
                }
            }
            return $datas;
        }else{
            return false;
        }
    }
然后我们在需要调用全站最新的页面中调用下面的标签:
{pc:content  action="newcontent" num=15}
          <ul >
            {loop $data $r}<li><span class="date">{date('m-d',$r[inputtime])}</span> <a href="{$r['url']}" target="_blank">{str_cut($r[title],57,'')}</a></li>{/loop}
          </ul>
         {/pc}
这样就可以获取到全站最新的15条数据。

本文出自技术CTO:http://www.jscto.net,转载请注明出处。

^_^ 如果您热爱技术、热爱编程,想与更多的朋友一起交流学习,欢迎加入本站官方QQ群:345733473 ^_^