当前位置:首页 > 网站技术 > 后端技术 > 正文内容

PHPCMS列表页ajax动态获取更多(新手看完即会)

小彬2020-05-26后端技术459

本文取自Dong-Gephpcms 列表页ajax点击加载更多文章

但是在实践过程中,由于我对phpcms的不熟悉导致还是浪费了一点时间

经过咨询大佬,终于完美解决。

1、在phpcms/model创建一个自定义的模型查询news_model.class.php

<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('model', '', 0);
class news_model extends model {
  public function __construct() {
      $this->db_config = pc_base::load_config('database');
      $this->db_setting = 'default';
      $this->table_name = 'news';
      parent::__construct();
  }
}
?>


2、在phpcms/modules/content/index.php中添加如下代码

 //列表页产品数据点击加载更多
    public function product_getjson() {
      $catid = intval($_GET['catid']);
      $page = intval($_GET['page']);
      $start = $page*4; 
      $this->news = pc_base::load_model('news_model');
      $cate = $this->news->select(array('catid'=>$catid));
      $cates = '';
      foreach($cate as $k=>$v){
          $cates .=",".$v['id'];
      }
      $this->news = pc_base::load_model('news_model');
      if($cates){
          $cates=trim($cates,',');
          $where = " catid in ($cates)";
          $data = $this->news->select($where,"catid,thumb,
      title,description,inputtime,url","$start,4");
      }else{
          $data = $this->news->select(array('catid'=>$catid),
       "catid,thumb,title,description,inputtime,url","$start,4");
      }
      foreach($data as $key=>$val){
          $result[$key] = array(
              'catid' => $val['catid'],
              'title' => $val['title'],
              'thumb' => $val['thumb'],
              'url' => $val['url'],
              'year' => date('Y',$val['inputtime']),
              'day' => date('m.d',$val['inputtime']),
              'description' => $val['description']
          );
      }
      echo json_encode(array("data"=>$result)); 
  }


当然此段代码是获取当前ctaid下的数据,如果是一级栏目想要获取它下面的全部数据就要再写一个函数,把

catid 改成 typeid 即可。

因为一级栏目下面全部数据的typeid都是0

3、模板页调用:phpcms/templates/default/content/list_products.html(页面名字随意)

{template "content","header"}
<section class="company-banner">
</section>
<section class="company-list">
  <div class="sns-container">
      {pc:content action="lists" catid="$catid" num="4" order="id DESC" page="$page"}
          <ul class="company-ul clearfloat"  id="moreData">
              {loop $data $r}
                  <li>
                      <a href='{$r[url]}'>{$r[title]}</a>
                      <p class="data">
                          <b>{date('m.d',$r[inputtime])}</b>
                          <span>{date('Y',$r[inputtime])}</span>
                      </p>
                      <p class="descrtion">{$r[description]}</p>
                      <img src="{$r[thumb]}" alt="">
                  </li>
              {/loop}
          </ul>
          
      {/pc}
      
      <div class="more" data-id="{$catid}" id="moreWrap">
        <a href="javascript:void(0);">more +</a>  
      </div>
  </div>
</section>
<script>
$(function(){
var length = $(".company-ul li").length;
if(length<4){
    $("#moreWrap").remove();
}
var i=1;
$("#moreWrap").click(function(){
    var catid=$(this).attr("data-id");
    $.getJSON("/index.php?m=content&c=index&a=product_getjson&catid="+catid+"&page="+i, function(json){
        console.log(json,'json')
        if(json.data){ 
            var product_list = '';
            var _html2 = '';
            $.each(json.data, function(i, n){
                _html2 += '<li><a href="'+json.data[i].url +'">'+json.data[i].title +'</a>';
                _html2 += '<p class="data"><b>'+json.data[i].day +'</b>';
                _html2 += '<span>'+json.data[i].year +'</span></p>';
                _html2 += '<p class="descrtion">'+json.data[i].description +'</p>';
                _html2 += '<img src="'+json.data[i].thumb +'" /></li>';
            });
            product_list += _html2;
            $('#moreData').append(product_list);
        }else{
            $("#moreWrap").show().html("没有更多的数据...");  
        }
    }); 
    i = i + 1;
});
});
</script>
{template "content","footer"}


注:本文和原作者不一致的地方就在建模使用的名字,这也是我始终失败的原因。

如本文,我要调用news数据表的数据,那么就要建以news为前缀名的news_model.class.php文件,

然后在文件里自定义处写上需要调用的表名$this->table_name = '自定义';

最后在index.php需要读表的地方都要改成news表名,大功告成!

在此非常感谢Dong-Ge大佬phpcms 列表页ajax点击加载更多文章

分享给朋友:

相关文章

PHP入门基础之MySQL基础

PHP入门基础之MySQL基础

1、什么是数据库相关术语:数据库系统(Database System):DBS{    数据库(Database)    数据管理系统(Database Man...

PHPCMS实现表单提交数据功能

PHPCMS实现表单提交数据功能

PHPCMS实现表单提交数据功能一般的童鞋可能都会遇到明明在后台设置了表单,为啥在前台页面只提交了一次就不能提交了。造成这个原因是因为在phpcms后台表单设置里,默认设置了否的“允许同一IP多次提交...

 PHP入门基础之会话控制基础和实战

PHP入门基础之会话控制基础和实战

1、会话控制基础会话是具有逻辑关联的多个简单交互的集合简单交互模型逻辑关联http是无状态协议每个请求都是单独处理的,协议无法识别当前用户。有状态vs无状态  (跟朋友吃饭【不用二次介绍】...

PHP入门之Linux基础和shell命令行

PHP入门之Linux基础和shell命令行

centos 一般支持10年nubuntu lts 一般支持5年一、linux系统环境搭建wmware 虚拟机下载centos  DVD ISO 或者EVerythine ISO 镜像&nb...

Openssl常用功能和SSO单点登录逻辑

Openssl常用功能和SSO单点登录逻辑

Openssl 常用功能介绍一、openssl rand 产生随机数openssl rand 用于产生指定长度个 bytes 的随机字符。实例如下:E:\OpenSSL\foo>openssl...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

分享:

支付宝

微信