absolute

  • 柔宇炮轰小米后再发长文声明:称无意碰瓷与炒作 游戏电脑问题解决分享!

    1月29日消息 不久前,柔宇科技曾对小米的双折叠手机提出异议,其副总裁樊俊超曾在朋友圈炮轰小米,称小米双折叠手机是买的别人尚未量产的概念柔性屏幕和概念机。现在柔宇科技在官方微博上发…

    2020年9月18日
    38
  • 微软推送新的Windows 10更新五月版18362.116更新 游戏电脑问题解决分享!

    5月21日消息 微软在5月晚些时候公开发布2019 Windows 10更新五月版正式版。现在Windows 10更新五月版仍处于慢速和发布预览通道测试中。现在微软推送了…

    2020年9月18日
    23
  • linux入门系列9–用户管理及文件权限控制,分享

    ​ 前面文章分享了Linux下常用命令以及Shell编程相关知识,本节继续学习Linux用户管理及文件权限控制。 ​ Linux是多用户多任务操作系统,具有很好的稳定性和安全性。既…

    2020年6月14日
    136
  • javascript操作xml(增删改查)例子代码hta版,xmlhta分享

    包括了stu.hta(是HTML应用程序);      stu.xml 注意下面的HTML代码必须保存为后缀名为hta否则当对XML文件进行…

    DOS/BAT脚本 2020年5月18日
    152
  • 织梦dedecms首页列表页,ajax点击加载更多,瀑布流,首页多栏目切换简化版分享


    先看效果图:一,模板模板中涉及一个函数.get_url_by_typeid2() 在这里的说明,点击查看http://www.dengb.com/news/dedecms-17684.html
    <div class="container margin-top over-hidden"> <div class="xl12 xb12 over-hidden"> <!– 切换标签 –> <style type="text/css"> .slideTxtBox{ width:100%; text-align:left; } .slideTxtBox .hd{ height:38px; line-height:27px; position:relative; overflow:hidden } .slideTxtBox .hd ul{left:10px; float:left; position:absolute; top:3px; height:39px;over-flow:hidden;} .slideTxtBox .hd ul li{height:40px; float:left;color:#fff;padding:0px 7px 0px 6px; cursor:pointer; } .slideTxtBox .hd ul li a{color:#fff; } .slideTxtBox .hd ul li.on {background:url({dede:global.cfg_templets_skin/}/images/bg5.png) repeat-x; } .slideTxtBox .hd ul li.on a{color:#555} .slideTxtBox .bd ul{zoom:1;padding-bottom:50px;display:none;position:relative;min-height:100px} .slideTxtBox .bd li{ height:24px; line-height:24px; } </style> <div id="slideTxtBox"class="slideTxtBox padding00"style="overflow:visible !important;"> <!– 主导航 –> <div class="hd bg-main pr"> <ul id="tab"class="border-top border-main border-big"> <li class="on"id=""><a href="javascript:"onclick="javascript:loadMoreApply(1,0);">全部</a></li> {dede:channel type='top' row='50' } <li id="tab[field:id/]"><a href="javascript:"onclick="javascript:change_tab([field:id/]);loadMoreApply(1,[field:id/]);" >[field:typename/]</a></li> {/dede:channel} </ul> <span class="icon-angle-down text-white width30 padding-left10 ib text-22 top7 right2 bg-main" data-target="#navbar2"> </span> </div> <!– 下拉导航 –> <div class="navbar-body margin-top6 hidden ib" id="navbar2"> <ul class="nav nav-inline nav-menu "> {dede:channelartlist typeid="top" row='33' } <li class="{dede:field.active/}"> <a href="javascript:"onclick="javascript:change_tab({dede:field.typeid/});loadMoreApply(1,{dede:field.typeid/});"> {dede:field name="typename"/} </a> </li> {/dede:channelartlist} </ul> </div> <div class="bd"id="slideTxtBox-bd"> <ul id="0" class="show"> <!– 全部 –> {dede:arclist row='2' titlelen='100' orderby='id' } <div class="bg-fff width-100 ib pr"> <div class="xl12 padding10" > <div class="media media-x"> <a class="float-left" href="[field:arcurl/]"> <img src="[field:litpic/]" width="80" class="radius" alt="[field:title/]"> </a> <div class="media-body" style="width:900px;height:;"> <strong>[field:title/]</strong> <div style="height:5px;"></div> <!– 点击 –> <span> <span class=" cursor icon-click"> </span> <script src="/plus/count_list.php?view=yes&aid=[field:id/]" type='text/javascript' language="javascript"></script></span> <span id="diggNum[field:id/]"><a href="javascript:"class=" text-bbb text-16 width33 " onclick="javascript:postDigg('good',[field:id/])"><span id="digg[field:id/]" class="icon-heart2 "> </span> </a>[field:goodpost/] </span> <div style="height:12px;"></div> <!– 所属分类 archives–> <a class="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)"/] </div> </div> </div> <a class="button bg-main button-small right5 text-white ib pa text-14"href="javascript:;" onclick="showtip('[field:title/]')"style="top:40px">进入小程序</a> </div> {/dede:arclist} <p class="text-center margin-bottom bottom0 right width-100" ><a onclick="javascript:loadMoreApply(1,0);"href="javascript:"class="button radius-rounded border-main"id="0data">加载更多</a></p> </ul> {dede:channel type='top' row='25' } <!– [field:typename/] –> <ul id="[field:id/]"> <p class="text-center bottom0 margin-bottom margin-big-top width-100"><a onclick="javascript:loadMoreApply(1,[field:id/]);"href="javascript:" class="button radius-rounded border-main"id="[field:id/]data">加载更多</a></p> </ul> {/dede:channel} </div> </div> <!– slideTxtBox end –> <script type="text/javascript"> var tabs=document.getElementById("tab").getElementsByTagName("li"); var divs=document.getElementById("slideTxtBox-bd").getElementsByTagName("ul"); for(var i=0;i<tabs.length;i++){ tabs[i].onclick=function(){change(this);} } function change(obj){ for(var i=0;i<tabs.length;i++) { if(tabs[i]==obj){ tabs[i].className="on"; divs[i].className="show"; } else{ tabs[i].className=""; divs[i].className=""; } } } //所属分类切换 function change_tab(typeid){ $("#tab"+typeid).siblings("li").removeClass("on"); $("#tab"+typeid).addClass("on"); $("#"+typeid).siblings("ul").removeClass("show"); $("#"+typeid).addClass("show"); } </script> <!– 切换结束 –> </div> </div> <script type="text/javascript"> $('.icon-angle-down').each(function() { var e = $(this); var target = e.attr("data-target"); e.click(function() { $(target).toggleClass("hidden"); }); }); var loadConfig = { url_api:'/plus/list.php', //typeid:{dede:field name="typeid"/}, pagesize:2, loading : 0 } var page0=2; {dede:channel type='top' row='25' } var page[field:id/]=1; {/dede:channel} function loadMoreApply(orderby,typeid){ $("#navbar2").addClass("hidden"); eval(" page =page"+typeid+";"); var pagesize = loadConfig.pagesize; var url = loadConfig.url_api, data={ajax:'pullload',typeid:typeid,page:page,pagesize:pagesize,orderby:orderby}; function ajax(url, data) { $.ajax({url: url,data: data,async: false,type: 'GET',dataType: 'json',success: function(data) { addContent(data,typeid); }}); } ajax(url,data); } function addContent (rs,typeid){ if(rs.statu== 1){ var data = rs.list; var total = rs.total; var arr=[]; var length = data.length; for(var i=0;i<length;i++){ arr.push('<div class="bg-fff width-100 ib pr">'); arr.push('<div class="xl12 padding10"><div class="media media-x"><a class="float-left" href="'+data[i].arcurl+'"><img src="'+data[i].picname+'" width="80" class="radius" alt="'+data[i].title+'"></a><div class="media-body" style="width:900px"><strong>'+data[i].title+'</strong><div style="height:5px;"></div><span> <span class=" cursor icon-click"> </span>'+data[i].click+'</span>'); arr.push('<span id="diggNum'+data[i].id+'"><a href="javascript:"class=" text-bbb text-16" onclick="javascript:postDigg('good','+data[i].id+');"><span id="digg'+data[i].id+'" class="icon-heart2 "> </span> </a>'+data[i].goodpost+'</span> <div style="height:12px;"></div>'); arr.push('<a class="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><a class="button bg-main button-small right5 text-white ib pa text-14"href="javascript:;" onclick="showtip(''+data[i].title+'')"style="top:40px">进入小程序</a></div>'); } $('#'+typeid).append(arr.join('')); loadConfig.load_num = rs.load_num; if(total<page*loadConfig.pagesize || page> loadConfig.load_num){ //$('#'+typeid).append('<p class="text-center margin-top"><a href="javascript:" class="button radius-rounded border-main width-20"id="'+typeid+'data">没有了!</a></p>'); $("#"+typeid+"data").html('没有了!'); }else{ //$('#'+typeid).append('<p class="text-center margin-top"><a href="javascript:" class="button radius-rounded border-main width-20"id="'+typeid+'data">加载更多</a></p>'); } eval("page"+typeid+" ++;"); }else{ $("#"+typeid+"data").html('没有了!'); } } $(document).ready(function(){ loadMoreApply(1,0); $('.copy-lay .close2').click(function(){ $('.alert2').hide(); }); $('.alert2').click(function(e){ if( $(e.target).parents().hasClass('copy-lay') ){ return; }else{ $(this).hide(); } }); }); function showtip(title){ $('#alerttip,#copyBtn').html(title); $('.alert2').show(); } </script> {dede:sql sql='Select * from `dede_myppttype` where id=2'} <div class="alert2 alert-copy"> <div class="copy-lay" style="[field:other/]"> <span class="close2"></span> <div class="copy" id="copyBtn"></div> <div class="copy-layer-img" style="background: url('[field:pic/]') no-repeat; -o-background-size: contain; background-size: contain; "></div> </div> </div> {/dede:sql} 二,,修改,plus/list.PHP 在require_once(dirname(__FILE__)."/../include/common.inc.php");的下面增加一段if(isset($_GET['ajax'])){ $typeid = isset($_GET['typeid']) ? intval($_GET['typeid']): 0;//传递过来的分类ID $orderby = isset($_GET['orderby']) ? intval($_GET['orderby']): 1; //print_r($orderby);exit; //1id排,2hot排序 $page = isset($_GET['page']) ? intval($_GET['page']): 0;//页码 $pagesize = isset($_GET['pagesize']) ? intval($_GET['pagesize']): 10;//每页多少条,也就是一次加载多少条数据 $start = $page>0 ? ($page-1)*$pagesize : 0;//数据获取的起始位置。即limit条件的第一个参数。 $ntime2 = gmmktime(0, 0, 0, gmdate('m'), gmdate('d'), gmdate('Y')); $limitday = $ntime2 – (40 * 24 * 3600);//40天内热文 $orwheres = " senddate > $limitday "; //$typesql = $typeid ? " WHERE typeid=$typeid" : ''; if($orderby==1){//id降序 $typesql = $typeid ? " WHERE a.arcrank=0 and a.typeid=$typeid or CONCAT( ',', a.typeid2, ',' ) LIKE '%,".$typeid.",%' " : ''; $typesql3 = $typeid ? " WHERE arcrank=0 and typeid=$typeid or CONCAT( ',', typeid2, ',' ) LIKE '%,".$typeid.",%' " : ''; } else{//hot排序 $typesql = $typeid ? " WHERE a.arcrank=0 and a.typeid=$typeid or CONCAT( ',', a.typeid2, ',' ) LIKE '%,".$typeid.",%' and ".$orwheres : " WHERE ".$orwheres; $typesql3 = $typeid ? " WHERE arcrank=0 and typeid=$typeid or CONCAT( ',', typeid2, ',' ) LIKE '%,".$typeid.",%' and ".$orwheres : " WHERE ".$orwheres; } //print_r($typesql );exit; //这个是用于首页实现瀑布流加载, //因为首页加载数据是无需分类的,所以要加以判断,如果无需 $total_sql = "SELECT COUNT(id) as num FROM `dede_archives` $typesql3 "; $temp = $dsql->GetOne($total_sql); $total = 0;//数据总数 $load_num =0; if(is_array($temp)){ $load_num= round(($temp['num']-$pagesize)/$pagesize);//要加载的次数,因为默认已经加载了 $total = $temp['num']; } //print_r($total);exit; if($orderby==1){//新 $sql = "SELECT a.*,t.typedir,t.typename,t.isdefault,t.defaultname,t.namerule, t.namerule2,t.ispart, t.moresite,t.siteurl,t.sitepath FROM `dede_archives` as a JOIN `dede_arctype` AS t ON a.typeid=t.id $typesql ORDER BY a.id DESC LIMIT $start,$pagesize"; }else{//热门 $sql = "SELECT a.*,t.typedir,t.typename,t.isdefault,t.defaultname,t.namerule, t.namerule2,t.ispart, t.moresite,t.siteurl,t.sitepath FROM `dede_archives` as a JOIN `dede_arctype` AS t ON a.typeid=t.id $typesql ORDER BY a.click DESC LIMIT $start,$pagesize"; } //echo "$sql";exit; $dsql->SetQuery($sql);// $dsql->Execute('list');//die(mysql_error()); $statu = 0;//是否有数据,默认没有数据 $data = array(); $index = 0; while($row = $dsql->GetArray("list")){ $row['info'] = $row['info'] = $row['infos'] = cn_substr($row['description'],250); $row['id'] = $row['id']; $row['typeid2']=get_url_by_typeid2($row['typeid2']); $row['filename'] = $row['arcurl'] = GetFileUrl($row['id'],$row['typeid'],$row['senddate'],$row['title'],$row['ismake'], $row['arcrank'],$row['namerule'],$row['typedir'],$row['money'],$row['filename'],$row['moresite'],$row['siteurl'],$row['sitepath']); $row['typeurl'] = GetTypeUrl($row['typeid'],$row['typedir'],$row['isdefault'],$row['defaultname'],$row['ispart'],$row['namerule2'],$row['moresite'],$row['siteurl'],$row['sitepath']); if($row['litpic'] == '-' || $row['litpic'] == ''){ $row['litpic'] = $GLOBALS['cfg_cmspath'].'/images/defaultpic.gif'; } if(!preg_match("#^http://#i", $row['litpic']) &&$GLOBALS['cfg_multi_site'] == 'Y'){ $row['litpic'] = $GLOBALS['cfg_mainsite'].$row['litpic']; } $row['picname'] = $row['litpic'];//缩略图 $row['writer'] = $row['writer']; $row['click'] = $row['click']; $row['stime'] = GetDateMK($row['pubdate']); $row['timeago']= timeago($row['pubdate']); $row['typelink'] = "<a href='".$row['typeurl']."'>".$row['typename']."</a>";//分类链 $row['fulltitle'] = $row['title'];//完整的标题 $row['shorttitle'] = $row['shorttitle'];//副标题 $row['title'] = cn_substr($row['title'], 60);//截取后的标题 $data[$index] = $row; $index++; } if(!empty($data)){ $statu = 1;//有数据 } $result =array('statu'=>$statu,'list'=>$data,'total'=>$total,'load_num'=>$load_num); echo json_encode($result);//返回数据 exit(); }

    2020年5月12日
    117
  • 织梦首页列表页,ajax加载更多,瀑布流,首页多栏目切换分享


    效果图加载更多按钮
    http://www.dengb.com/dedecms/1277811.html www.dengb.com true http://www.dengb.com/dedecms/1277811.html TechArticle 织梦首页列表页,ajax加载更多,瀑布流,首页多栏目切换 效果图 加载更多按钮 一,模板上要引入jq文件script language=JavaScript type=text/javascript sr…

    2020年5月12日
    119
  • dedecms/gbk站点mip改造方案分享分享


    前言:近期尝试对一个做过跳转适配的dedecms/gbk手机站进行整站mip改造,经过一系列思路完善和测试,终于完成,回顾下过程,主要问题可分为以下几类:1、非utf-8站点的编码问题 前些时候宋同学在站长社区发布了新装utf-8版cms和转换数据库编码的教程,我刚开始也是类似思路,但因为站点经过二次开发以及包含一些乱七八糟的附加文件等,重装cms很难复原之前的修改,此思路卒。后又尝试在数据库调用时以gbk编码读取,测试生成后虽大体上浏览正常,但还是存在些许后续问题和少部分乱码,也放弃了该方案。最终,灵光一闪——为什么要在程序执行过程中纠结?完全可以在生成静态页面时进行替换整改啊!顿时柳暗花明之感油然而生,测试果然可行,之后遇到后续问题(如下面问题2、3)也因此思路而变得易解决了。
    2、路径问题,<a>、<img>/<mip-img>等标签中的相对路径需均转换为完整url,这个在目前教程里貌似没有明确提出,根目录相对路径还好,主要是相对当前页面路径转换完整url需加上所在目录有些难度(特别是标签调用生成的相对路径,如分页)。
    3、内联样式问题模板里的内联样式可以手动整改,虽烦琐但难度不大,主要问题在于后台发布文章时,cms编辑器会自动生成包括内联样式在内的各种不符合mip规则的原始代码,除了折腾一下对编辑器进行修改,其他也很难解决了。
    4、js问题 mip规范局限了js的使用,这个的确挺头疼的,好在我改造的站点内js不多,所以删掉部分效果和使用现有组件替换,也凑合解决了此问题。不过还是希望百度mip团队能在考虑下此方面的规范方案优化,不少站点有很多js代码且不能去除,全部以组件形式提交也很费事且需要一定的程序基础,其他问题还可以按统一教程去解决,但js上的mip改造却无法如此,按照目前的限制会导致很多站长因此一点就不得不放弃mip改造。
    5、其他小问题 ·发现少部分样式有冲突,需根据实际情况对本身css进行局部修改。 ·发现mip cache无法识别站点中图片的302跳转,如原站使用302跳转的图片,mip生效后无法显示图片。该问题已和百度技术人员沟通,说后续可以考虑支持,目前我自己加了一段代码对路径做了下处理。 ·组件使用bug(如mip-carousel多图轮播图片套<a>链接会导致图片显示空白,且无法自适应屏幕)。 ·mip引入提交后就回显个success,也没有提交记录和状态,用户体验上有所欠缺。正题:基于dedecms/gbk的整站mip改造
    第一部分:模板修改1、js部分:删除或使用现有组件替换
    2、调用百度mip文件:head里加<link rel="stylesheet" type="text/css"href="https://mipcache.bdstatic.com/static/mipmain-v1.1.1.css">body里加<script src="https://mipcache.bdstatic.com/static/mipmain-v1.1.2.js"></script>
    3、head里加<link rel="canonical"href="{dede:global.cfg_basehost/}{dede:field name='arcurl'/}" >,通过dedecms标签直接调用当前页url。
    4、外部通用css文件:建议将css文件中的样式代码嵌入<style mip-custom>…</style>中,另存为模板文件(如css.htm),用{dede:includefilename="css.htm"/}替换相关模板中的<link rel="stylesheet" type="text/css"href="…" />。模板中的内联css可人工进行查找替换,合并至<stylemip-custom>中。(虽在下面代码中可以自动进行处理,但从静态文件生成性能角度考虑,还是建议人工先将模板中的内联样式一次性整改好。)
    注:以上操作大多可通过批量查找替换来完成,看似需要修改很多,但实际工作量并不大。

    第二部分:程序文件修改· 静态生成移动站:
    找到/include/dedetag.class.php文件中解析模板输出为文件的函数: function SaveTo($filename) { $fp = @fopen($filename,"w")or die("DedeTag Engine Create File False"); fwrite($fp,$this->GetResult()); fclose($fp);}
    替换为(部分代码可根据实际情况进行改动):
    //路径转换函数文件。$content:代码源,$feed_url:首页,$f_url:相对路径的目录部分 function relative_to_absolute($content,$protocol, $domain, $f_url) { //根目录相对路径(如href="/a/b.html")转换 $new_content =preg_replace('/hrefs*=s*(['"])s*//','href=\1'.$protocol.$domain.'/', $content); $new_content =preg_replace('/srcs*=s*(['"])s*//', 'src=\1'.$protocol.$domain.'/',$new_content); //当前页相对路径(如href="a/b.html")转换 $new_content =preg_replace('/hrefs*=s*(['"])(?!(http|https)://)/','href=\1'.$protocol.$domain.$f_url,$new_content); $new_content =preg_replace('/srcs*=s*(['"])(?!(http|https)://)/','src=\1'.$protocol.$domain.$f_url, $new_content); return $new_content; }
    function SaveTo($filename) { $fp=@fopen($filename,"w") ordie("DedeTag Engine Create File False"); if(substr($_SERVER['PHP_SELF'],-6)=='_m.php'||substr($filename,-13)=='/m/index.html'){//跳转适配站识别是否为移动端生成,不影响pc端的gbk编码。移动端为独立站点需去掉此判断条件。 $f_url=explode('www.域名.com/m',dirname($filename));//分割路径,获取当前页相对路径的目录部分 //如dirname($filename)得到的本地绝对路径为D:/wwwroot/www.域名.com/m/yygk/xwzx,用网站目录“www.域名.com/m”作为标识分割路径,得到目录部分“/yygk/xwzx”。 $html=$this->GetResult(); $html=$this->relative_to_absolute($html,'http://','m.域名.com',$f_url[1].'/');//相对路径转换绝对路径 $html=str_replace('<metacharset="gb2312">','<metacharset="utf-8">',iconv('gbk','utf-8//ignore',$html));//转换为utf-8编码声明,fwrite会以此生成对应编码的静态页面 $html=str_replace('<a','<a target="_blank" ',$html);//<a>标签加target $html=str_replace('<img','<mip-img ',$html);//替换<img>标签
    /*主要针对编辑器生成的内联样式,将内联样式转换到head的style标签中*/ if(preg_match_all('/sstyles*=s*['"](.*?)['"]/',$html,$css)){ $css0=array_unique($css[0]);//过滤重复style foreach($css0as $k => $v){ $html=str_replace($v,'class="mip_add_css_'.$k.'"',$html);//mip_add_css_为自定义样式名前缀,可自行修改,但需避免与原有样式名重复 $temp_name='mip_add_css_'.$k; $$temp_name=$css[1][$k]; $add_css.='.'.$temp_name.'{'.$css[1][$k]."}n"; } $html=str_replace('<stylemip-custom>',"<style mip-custom>n".$add_css,$html); } fwrite($fp, $html); }else{//pc端执行 fwrite($fp,$this->GetResult()); } fclose($fp); }
    注:该方案初步测试成功,因生成静态文件时处理程序增加,理论上来说会对生成效率有所影响。另外,不排除存在问题的可能性,如有问题或其他想法可回帖共同研究探讨。· 默认动态移动站:1、修改/m目录下index.php、list.php、view.php三个php文件的编码,改为utf-8。2、找到/include/dedetag.class.php文件中解析模板直接输出的函数: function Display() { echo $this->GetResult(); }替换为: function Display() { $html=str_replace('<meta charset="gb2312">','<meta charset="utf-8">',$this->GetResult());//转换为utf-8编码声明,此处源内容$this->GetResult()不需要转编码 echo $html; }如此即可以utf-8编码输出动态页面,其他处理可参照上面静态生成站点方案中的代码。

    本文转载自百度站长社区:http://bbs.zhanzhang.baidu.com/thread-139404-1-1.html