您好,欢迎来到菜鸟吧源码网-本站资源仅供学习与参考,禁止用于商业或违法行为!
  • 首 页
  • 下载APP
  • 公告:菜鸟吧APP于2024.9.15正式上线,请首页右上角进入下载,本站资源均来源于互联网及会员投稿发布,所有资源仅供学习参考研究使用,请勿商用或其它非法用途,商用请购买正版,否则产生一切后果由用户自行承担!谢谢!

     

    当前位置:主页 > 站长学堂 > dede教程 >
    织梦dedecms首页列表页,ajax点击加载更多,瀑布流,首页多栏目切换
    时间:2020-02-28 12:04 作者:菜鸟哥 浏览:收藏 挑错 打印

    简化部分主要是栏目切换时,除子第一个默认栏目,其它的全改成ajax,不再生成静态页,而且通过PHP循环,简化了代码.另外加载更多按钮等也修改了触发形式.

    效果图

    织梦dedecms首页列表页,ajax点击加载更多,瀑布流,首页多栏目切换


    一,模板

    模板中涉及一个函数.get_url_by_typeid2() 在这里的说明,点击查看

    [html]view plaincopy
    1. <divclass="container  margin-top over-hidden">

    2. <divclass="xl12 xb12 over-hidden">

    3. <!-- 切换标签 -->

    4. <styletype="text/css">

    5.        .slideTxtBox{ width:100%;  text-align:left;  }  

    6.        .slideTxtBox .hd{ height:38px; line-height:27px;  position:relative; overflow:hidden }  

    7.        .slideTxtBox .hd ul{left:10px; float:left; position:absolute;  top:3px; height:39px;over-flow:hidden;}  

    8.        .slideTxtBox .hd ul li{height:40px; float:left;color:#fff;padding:0px 7px 0px 6px; cursor:pointer;  }  

    9.        .slideTxtBox .hd ul li a{color:#fff; }  

    10.        .slideTxtBox .hd ul li.on  

    11. {background:url({dede:global.cfg_templets_skin/}/images/bg5.png) repeat-x; }  

    12.        .slideTxtBox .hd ul li.on a{color:#555}  

    13.        .slideTxtBox .bd ul{zoom:1;padding-bottom:50px;display:none;position:relative;min-height:100px}  

    14.        .slideTxtBox .bd li{ height:24px; line-height:24px;   }  

    15. </style>

    16. <divid="slideTxtBox"class="slideTxtBox  padding00"style="overflow:visible !important;">

    17. <!-- 主导航 -->

    18. <divclass="hd bg-main pr">

    19. <ulid="tab"class="border-top border-main border-big">

    20. <liclass="on"id=""><ahref="javascript:"onclick="javascript:loadMoreApply(1,0);">全部</a></li>

    21.                    {dede:channel type='top'row='50' }  

    22. <liid="tab[field:id/]"><ahref="javascript:"onclick="javascript:change_tab([field:id/]);loadMoreApply(1,[field:id/]);" >[field:typename/]</a></li>

    23.        {/dede:channel}  

    24. </ul>

    25. <spanclass="icon-angle-down text-white width30 padding-left10  ib text-22  top7 right2 bg-main"data-target="#navbar2">

    26. </span>

    27. </div>

    28. <!-- 下拉导航 -->

    29. <divclass="navbar-body margin-top6  hidden  ib"id="navbar2">

    30. <ulclass="nav nav-inline nav-menu  ">

    31.      {dede:channelartlist typeid="top"row='33' }  

    32. <liclass="{dede:field.active/}">

    33. <ahref="javascript:"onclick="javascript:change_tab({dede:field.typeid/});loadMoreApply(1,{dede:field.typeid/});">

    34. {dede:field name="typename"/}  

    35. </a>

    36. </li>

    37. {/dede:channelartlist}  

    38. </ul>

    39. </div>

    40. <divclass="bd"id="slideTxtBox-bd">

    41. <ulid="0"class="show">

    42. <!-- 全部 -->

    43.    {dede:arclist row='2'titlelen='100'orderby='id' }  

    44. <divclass="bg-fff    width-100 ib pr">

    45. <divclass="xl12  padding10">

    46. <divclass="media media-x">

    47. <aclass="float-left"href="[field:arcurl/]">

    48. <imgsrc="[field:litpic/]"width="80"class="radius"alt="[field:title/]">

    49. </a>

    50. <divclass="media-body"style="width:900px;height:;">

    51. <strong>[field:title/]</strong>

    52. <divstyle="height:5px;"></div>

    53. <!-- 点击 -->

    54. <span>

    55. <spanclass=" cursor icon-click"></span>

    56. <scriptsrc="/plus/count_list.php?view=yes&aid=[field:id/]"type='text/javascript'language="javascript"></script></span>

    57. <spanid="diggNum[field:id/]"><ahref="javascript:"class=" text-bbb text-16 width33 " onclick="javascript:postDigg('good',[field:id/])"><spanid="digg[field:id/]"class="icon-heart2 "></span></a>[field:goodpost/]  

    58. </span>

    59. <divstyle="height:12px;"></div>

    60. <!-- 所属分类 archives-->

    61. <aclass="button bg-gray button-little radius-none margin-right2 text-12"href="javascript:"onclick="javascript:change_tab([field:typeid/]);loadMoreApply(1,[field:typeid/]);">[field:typename/]</a>[field:typeid2 function="get_url_by_typeid2(@me)"/]  

    62. </div>

    63. </div>

    64. </div>

    65. <aclass="button bg-main button-small right5 text-white ib   pa text-14"href="javascript:;"   onclick="showtip('[field:title/]')"style="top:40px">进入小程序</a>

    66. </div>

    67. {/dede:arclist}  

    68. <pclass="text-center margin-bottom bottom0  right width-100"><aonclick="javascript:loadMoreApply(1,0);"href="javascript:"class="button radius-rounded border-main"id="0data">加载更多</a></p>

    69. </ul>

    70.    {dede:channel type='top'row='25' }  

    71. <!-- [field:typename/] -->

    72. <ulid="[field:id/]">

    73. <pclass="text-center  bottom0 margin-bottom margin-big-top width-100"><aonclick="javascript:loadMoreApply(1,[field:id/]);"href="javascript:" class="button radius-rounded border-main"id="[field:id/]data">加载更多</a></p>

    74. </ul>

    75.    {/dede:channel}  

    76. </div>

    77. </div>

    78. <!-- slideTxtBox end -->

    79. <scripttype="text/javascript">

    80. var tabs=document.getElementById("tab").getElementsByTagName("li");  

    81. var divs=document.getElementById("slideTxtBox-bd").getElementsByTagName("ul");  

    82. for(var i=0;i<tabs.length;i++){  

    83. tabs[i].onclick=function(){change(this);}  

    84. }  

    85. function change(obj){  

    86. for(var i=0;i<tabs.length;i++)  

    87. {  

    88. if(tabs[i]==obj){  

    89. tabs[i].className="on";  

    90. divs[i].className="show";  

    91. }  

    92. else{  

    93. tabs[i].className="";  

    94. divs[i].className="";  

    95. }  

    96. }  

    97. }  

    98. //所属分类切换  

    99. function change_tab(typeid){  

    100. $("#tab"+typeid).siblings("li").removeClass("on");  

    101. $("#tab"+typeid).addClass("on");  

    102. $("#"+typeid).siblings("ul").removeClass("show");  

    103. $("#"+typeid).addClass("show");  

    104. }  

    105. </script>

    106. <!-- 切换结束 -->

    107. </div>

    108. </div>

    109. <scripttype="text/javascript">

    110. $('.icon-angle-down').each(function() {  

    111.        var e = $(this);  

    112.        var target = e.attr("data-target");  

    113.        e.click(function() {  

    114.            $(target).toggleClass("hidden");  

    115.        });  

    116.    });  

    117. var loadConfig = {  

    118.                url_api:'/plus/list.php',  

    119.                //typeid:{dede:field name="typeid"/},  

    120.                pagesize:2,  

    121.                loading : 0  

    122.                }  

    123.                var page0=2;  

    124.                {dede:channel type='top'row='25' }  

    125.            var page[field:id/]=1;  

    126.    {/dede:channel}  

    127. function  loadMoreApply(orderby,typeid){  

    128. $("#navbar2").addClass("hidden");  

    129.         eval(" page =page"+typeid+";");  

    130.         var pagesize = loadConfig.pagesize;  

    131.         var url = loadConfig.url_api,  

    132. data={ajax:'pullload',typeid:typeid,page:page,pagesize:pagesize,orderby:orderby};  

    133.            function ajax(url, data) {  

    134.                $.ajax({url: url,data: data,async: false,type: 'GET',dataType: 'json',success: function(data) {  

    135.                    addContent(data,typeid);      

    136.                }});  

    137.            }  

    138.            ajax(url,data);  

    139. }  

    140. function addContent (rs,typeid){  

    141.    if(rs.statu== 1){  

    142.        var data = rs.list;  

    143.        var total = rs.total;  

    144.        var arr=[];  

    145.        var length = data.length;  

    146.        for(var i=0;i<length;i++){  

    147.            arr.push('<divclass="bg-fff    width-100 ib pr">');  

    148.            arr.push('<divclass="xl12  padding10"><divclass="media media-x"><aclass="float-left"href="'+data[i].arcurl+'"><imgsrc="'+data[i].picname+'"width="80"class="radius"alt="'+data[i].title+'"></a><divclass="media-body"style="width:900px"><strong>'+data[i].title+'</strong><divstyle="height:5px;"></div><span><spanclass=" cursor icon-click"></span>'+data[i].click+'</span>');  

    149.            arr.push('<spanid="diggNum'+data[i].id+'"><ahref="javascript:"class=" text-bbb text-16" onclick="javascript:postDigg(\'good\','+data[i].id+');"><spanid="digg'+data[i].id+'"class="icon-heart2 "></span></a>'+data[i].goodpost+'</span><divstyle="height:12px;"></div>');  

    150. arr.push('<aclass="button bg-gray button-little radius-none margin-right2 text-12"href="javascript:"onclick="javascript:change_tab('+data[i].typeid+');loadMoreApply(1,'+data[i].typeid+');">'+data[i].typename+'</a>'+data[i].typeid2+'</div></div></div><aclass="button bg-main button-small right5 text-white ib   pa text-14"href="javascript:;"   onclick="showtip(\''+data[i].title+'\')"style="top:40px">进入小程序</a></div>');    

    151. }  

    152.        $('#'+typeid).append(arr.join(''));  

    153. loadConfig.load_num = rs.load_num;  

    154.        if(total<page*loadConfig.pagesize || page> loadConfig.load_num){  

    155.            //$('#'+typeid).append('<pclass="text-center margin-top"><ahref="javascript:"class="button radius-rounded border-main width-20"id="'+typeid+'data">没有了!</a></p>');  

    156.        $("#"+typeid+"data").html('没有了!');  

    157.        }else{  

    158.            //$('#'+typeid).append('<pclass="text-center margin-top"><ahref="javascript:"class="button radius-rounded border-main width-20"id="'+typeid+'data">加载更多</a></p>');  

    159.        }  

    160.         eval("page"+typeid+" ++;");  

    161.    }else{  

    162.    $("#"+typeid+"data").html('没有了!');  

    163.    }  

    164. }  

    165. $(document).ready(function(){  

    166. loadMoreApply(1,0);  

    167. $('.copy-lay .close2').click(function(){  

    168.        $('.alert2').hide();  

    169.    });  

    170.    $('.alert2').click(function(e){  

    171.        if( $(e.target).parents().hasClass('copy-lay') ){  

    172.            return;  

    173.        }else{  

    174.            $(this).hide();  

    175.        }  

    176.    });  

    177. });  

    178. function showtip(title){  

    179.    $('#alerttip,#copyBtn').html(title);  

    180.    $('.alert2').show();  

    181. }  

    182. </script>

    183. {dede:sql sql='Select * from  `myppttype`  where id=2'}    

    184. <divclass="alert2 alert-copy">

    185. <divclass="copy-lay"style="[field:other/]">

    186. <spanclass="close2"></span>

    187. <divclass="copy"id="copyBtn"></div>

    188. <divclass="copy-layer-img"style="background: url('[field:pic/]') no-repeat; -o-background-size: contain; background-size: contain; "></div>

    189. </div>

    190. </div>

    191.        {/dede:sql}      




    二,,修改,plus/list.PHP 在require_once(dirname(__FILE__)."/../include/common.inc.php");

    的下面增加一段


    [php]view plaincopy
    1. if(isset($_GET['ajax'])){  

    2. $typeid = isset($_GET['typeid']) ? intval($_GET['typeid']): 0;//传递过来的分类ID

    3. $orderby = isset($_GET['orderby']) ? intval($_GET['orderby']): 1;  

    4. //print_r($orderby);exit;

    5. //1id排,2hot排序

    6. $page = isset($_GET['page']) ? intval($_GET['page']): 0;//页码

    7. $pagesize = isset($_GET['pagesize']) ? intval($_GET['pagesize']): 10;//每页多少条,也就是一次加载多少条数据

    8. $start = $page>0 ? ($page-1)*$pagesize : 0;//数据获取的起始位置。即limit条件的第一个参数。

    9. $ntime2 = gmmktime(0, 0, 0, gmdate('m'), gmdate('d'), gmdate('Y'));  

    10. $limitday = $ntime2 - (40 * 24 * 3600);//40天内热文

    11. $orwheres = " senddate > $limitday ";  

    12. //$typesql = $typeid ? " WHERE typeid=$typeid" : '';

    13. if($orderby==1){//id降序

    14. $typesql = $typeid ? " WHERE a.arcrank=0 and a.typeid=$typeid or CONCAT( ',', a.typeid2, ',' ) LIKE '%,".$typeid.",%' " : '';  

    15. $typesql3 = $typeid ? " WHERE arcrank=0 and typeid=$typeid or CONCAT( ',', typeid2, ',' ) LIKE '%,".$typeid.",%' " : '';  

    16.  } else{//hot排序

    17. $typesql = $typeid ? " WHERE a.arcrank=0 and a.typeid=$typeid or CONCAT( ',', a.typeid2, ',' ) LIKE '%,".$typeid.",%' and ".$orwheres : " WHERE ".$orwheres;  

    18. $typesql3 = $typeid ? " WHERE arcrank=0 and typeid=$typeid or CONCAT( ',', typeid2, ',' ) LIKE '%,".$typeid.",%' and ".$orwheres : " WHERE ".$orwheres;  

    19.   }  

    20. //print_r($typesql );exit;

    21. //这个是用于首页实现瀑布流加载,

    22. //因为首页加载数据是无需分类的,所以要加以判断,如果无需

    23. $total_sql = "SELECT COUNT(id) as num FROM `archives`  $typesql3 ";  

    24. $temp = $dsql->GetOne($total_sql);  

    25. $total = 0;//数据总数

    26. $load_num =0;  

    27. if(is_array($temp)){  

    28. $load_num= round(($temp['num']-$pagesize)/$pagesize);//要加载的次数,因为默认已经加载了

    29. $total = $temp['num'];  

    30.   }  

    31. //print_r($total);exit;

    32. if($orderby==1){//新

    33. $sql = "SELECT a.*,t.typedir,t.typename,t.isdefault,t.defaultname,t.namerule,  

    34.        t.namerule2,t.ispart, t.moresite,t.siteurl,t.sitepath  

    35. FROM `archives` as a JOIN `arctype` AS t ON a.typeid=t.id    $typesql ORDER BY a.id DESC LIMIT $start,$pagesize";  

    36. }else{//热门

    37. $sql = "SELECT a.*,t.typedir,t.typename,t.isdefault,t.defaultname,t.namerule,  

    38.        t.namerule2,t.ispart, t.moresite,t.siteurl,t.sitepath  

    39. FROM `archives` as a JOIN `arctype` AS t ON a.typeid=t.id    $typesql ORDER BY a.click DESC LIMIT $start,$pagesize";  

    40.    }  

    41. //echo "$sql";exit;

    42. $dsql->SetQuery($sql);//

    43. $dsql->Execute('list');//die(mysql_error());

    44. $statu = 0;//是否有数据,默认没有数据

    45. $data = array();  

    46. $index = 0;  

    47. while($row = $dsql->GetArray("list")){  

    48. $row['info'] = $row['info'] = $row['infos'] = cn_substr($row['description'],250);  

    49. $row['id'] =  $row['id'];  

    50. $row['typeid2']=get_url_by_typeid2($row['typeid2']);  

    51. $row['filename'] = $row['arcurl'] = GetFileUrl($row['id'],$row['typeid'],$row['senddate'],$row['title'],$row['ismake'],  

    52. $row['arcrank'],$row['namerule'],$row['typedir'],$row['money'],$row['filename'],$row['moresite'],$row['siteurl'],$row['sitepath']);  

    53. $row['typeurl'] = GetTypeUrl($row['typeid'],$row['typedir'],$row['isdefault'],$row['defaultname'],$row['ispart'],$row['namerule2'],$row['moresite'],$row['siteurl'],$row['sitepath']);  

    54. if($row['litpic'] == '-' || $row['litpic'] == ''){  

    55. $row['litpic'] = $GLOBALS['cfg_cmspath'].'/images/defaultpic.gif';  

    56.   }  

    57. if(!preg_match("#^http:\/\/#i", $row['litpic']) &&$GLOBALS['cfg_multi_site'] == 'Y'){  

    58. $row['litpic'] = $GLOBALS['cfg_mainsite'].$row['litpic'];  

    59.   }  

    60. $row['picname'] = $row['litpic'];//缩略图

    61. $row['writer'] = $row['writer'];  

    62. $row['click'] = $row['click'];  

    63. $row['stime'] = GetDateMK($row['pubdate']);  

    64. $row['timeago']= timeago($row['pubdate']);  

    65. $row['typelink'] = "<a href='".$row['typeurl']."'>".$row['typename']."</a>";//分类链

    66. $row['fulltitle'] = $row['title'];//完整的标题

    67. $row['shorttitle'] = $row['shorttitle'];//副标题

    68. $row['title'] = cn_substr($row['title'], 60);//截取后的标题

    69. $data[$index] = $row;  

    70. $index++;  

    71. }  

    72. if(!empty($data)){  

    73. $statu = 1;//有数据

    74. }  

    75. $result =array('statu'=>$statu,'list'=>$data,'total'=>$total,'load_num'=>$load_num);  

    76. echo json_encode($result);//返回数据

    77. exit();  

    78. }  

    郑重声明:
    本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
    我们不承担任何技术及版权问题,且不对任何资源负法律责任。
    如无法下载,联系站长索要。
    如有侵犯您的版权,请给我们来信:cainiaovip8@qq.com,我们尽快处理。

    织梦中TAG标签字数长度限制解决方法织梦中TAG标签字数长度限制解决方法
    织梦后台突然打不开或打开后空白的解决方法织梦后台突然打不开或打开后空白的解决
    织梦系统解决后台“DEDECMS安全提示”的方法织梦系统解决后台“DEDECMS安全提示”