原文来自:https://www.zixuephp.com
dedecms随机调用文章数据方法总结
有时我们为了网站优化都会对网站最后一些文章进行随机读取显示,这样可以提高网站对搜索引擎的体验,下面我来介绍dedecms随机调用文章数据方法,有需要的朋友可参考.
方法一,直接利用artlist中的orderyb=rand 即可实例,代码如下:
- {dede:arclistrow=10orderby=rand}
- <li><ahref="[field:arcurl/]"target="_blank">[field:title/]</a></li>{/dede:arclist}
方法二,利用自定做法
1.增加以下dedecms自定义标签 randarc,代码如下:
- functionlib_randarc(&$ctag,&$refObj){
- global$dsql;
- FillAttsDefault($ctag->CAttribute->Items,"limit|1");
- extract($ctag->CAttribute->Items);
- $s='';
- $tcp=newDedeTagParse();
- $tcp->SetNameSpace("field",'[',']');
- $tcp->LoadSource($ctag->GetInnerText());
- $sql=$query="SELECTse.*,tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
- FROM`dede_archives`seLEFTJOIN`dede_arctype`tpONse.typeid=tp.idWHERE1orderbyrand()limit$limit";
- $dsql->Execute("f",$sql);
- while($row1=$dsql->GetArray("f")){
- $row1['arcurl']=GetFileUrl($row1['id'],$row1['typeid'],$row1['senddate'],$row1['title'],
- $row1['ismake'],
- $row1['arcrank'],$row1['namerule'],$row1['typedir'],$row1['money'],
- $row1['filename'],$row1['moresite'],$row1['siteurl'],$row1['sitepath']);
- foreach($tcp->CTagsas$k=>$v){
- $tcp->Assign($k,$row1[$v->GetName()]);
- }
- $s.=$tcp->GetResult();
- }
- return$s;
- }
2:在dedecms文章模板中调用,代码如下:
{dede:randarc limit=1}<a href=[field:arcurl/]>[field:title/]</a>{/dede:randarc}
这样很简单的就完成了dedecms文章页面随机调用一篇文章的功能
首页随机调用文章并定时自动更新
要实现DEDE首页自动更新的前提是网站首页必须有随机文章,对于随机文章不懂的朋友看这里实现DEDE首页内页随机文章列表代码,熟悉的直接跳过,代码如下:
- {dede:arclistsort=’rand’titlelen=48row=16}
- <li><ahref=”[field:arcurl/]“title=”[field:title/]“target=”_blank”>[field:title/]</a></li>
- {/dede:arclist}
这时首页每次更新的内容来源就有了,只是还不会自动生成更新的html文件,下面来说让dede自动生成首页的具体方法.
把下面的代码复制下来新建一个文本文档粘贴保存,然后把文件名改为rrsc_cn.php中的,上传到根目录,修改首页模板,在网站首页的<head></head>这部分加入<script src=”/rrsc_cn.php” language=”javascript“></script>这段代码,然后更新首页,代码如下:
- <?php
- functionsp_input($text)
- {
- $text=trim($text);
- $text=htmlspecialchars($text);
- if(!get_magic_quotes_gpc())
- returnaddslashes($text);
- else
- return$text;
- }
- $autotime=300;//自动更新时间,单位为秒,这里我设为5分钟,大家可以自行更改。
- $fpath=”../data/last_time.inc”;//记录更新时间文件,如果不能达到目的,请检查是否有读取权限。
- include($fpath);
- if(emptyempty($last_time))
- $last_time=0;
- if(sp_input($_GET['renew'])==”now”)
- $last_time=0;
- if((time()-$last_time)>=$autotime)
- {
- define(‘DEDEADMIN’,ereg_replace(“[/\]{1,}”,’/',dirname(__FILE__)));
- require_once(DEDEADMIN.”/../include/common.inc.php”);
- require_once(DEDEINC.”/arc.partview.class.php”);
- /*
- $row=$dsql->GetOne(“Select*Fromdede_homepageset”);
- $dsql->Close();
- $templet=$row['templet'];
- $position=$row['position'];
- */
- $templet=”default/index.htm”;//这里是首页模板位置,当前是dede默认首面位置。
- $position=”../index.html”;
- $homeFile=dirname(__FILE__).”/”.$position;
- $homeFile=str_replace(”\&;,”/”,$homeFile);
- $homeFile=str_replace(”//”,”/”,$homeFile);
- $pv=newPartView();
- $pv->SetTemplet($cfg_basedir.$cfg_templets_dir.”/”.$templet);
- $pv->SaveToHtml($homeFile);
- $pv->Close();
- $file=fopen($fpath,”w”);
- fwrite($file,”<?phpn”);
- fwrite($file,”$last_time=”.time().”;n”);
- fwrite($file,’?>’);
- fclose($file);
- }
- ?>