dedecms随机调用文章数据方法总结 – DeDecms


avatar
pcwnas 2023-04-21 164

原文来自:https://www.zixuephp.com

dedecms随机调用文章数据方法总结

有时我们为了网站优化都会对网站最后一些文章进行随机读取显示,这样可以提高网站对搜索引擎的体验,下面我来介绍dedecms随机调用文章数据方法,有需要的朋友可参考.

方法一,直接利用artlist中的orderyb=rand 即可实例,代码如下:

  1. {dede:arclistrow=10orderby=rand}
  2. <li><ahref="[field:arcurl/]"target="_blank">[field:title/]</a></li>{/dede:arclist}

方法二,利用自定做法

1.增加以下dedecms自定义标签 randarc,代码如下:

  1. functionlib_randarc(&$ctag,&$refObj){
  2. global$dsql;
  3. FillAttsDefault($ctag->CAttribute->Items,"limit|1");
  4. extract($ctag->CAttribute->Items);
  5. $s='';
  6. $tcp=newDedeTagParse();
  7. $tcp->SetNameSpace("field",'[',']');
  8. $tcp->LoadSource($ctag->GetInnerText());
  9. $sql=$query="SELECTse.*,tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
  10. FROM`dede_archives`seLEFTJOIN`dede_arctype`tpONse.typeid=tp.idWHERE1orderbyrand()limit$limit";
  11. $dsql->Execute("f",$sql);
  12. while($row1=$dsql->GetArray("f")){
  13. $row1['arcurl']=GetFileUrl($row1['id'],$row1['typeid'],$row1['senddate'],$row1['title'],
  14. $row1['ismake'],
  15. $row1['arcrank'],$row1['namerule'],$row1['typedir'],$row1['money'],
  16. $row1['filename'],$row1['moresite'],$row1['siteurl'],$row1['sitepath']);
  17. foreach($tcp->CTagsas$k=>$v){
  18. $tcp->Assign($k,$row1[$v->GetName()]);
  19. }
  20. $s.=$tcp->GetResult();
  21. }
  22. return$s;
  23. }

2:在dedecms文章模板中调用,代码如下:

{dede:randarc limit=1}<a href=[field:arcurl/]>[field:title/]</a>{/dede:randarc}

这样很简单的就完成了dedecms文章页面随机调用一篇文章的功能

首页随机调用文章并定时自动更新

要实现DEDE首页自动更新的前提是网站首页必须有随机文章,对于随机文章不懂的朋友看这里实现DEDE首页内页随机文章列表代码,熟悉的直接跳过,代码如下:

  1. {dede:arclistsort=’rand’titlelen=48row=16}
  2. <li><ahref=”[field:arcurl/]“title=”[field:title/]“target=”_blank”>[field:title/]</a></li>
  3. {/dede:arclist}

这时首页每次更新的内容来源就有了,只是还不会自动生成更新的html文件,下面来说让dede自动生成首页的具体方法.

把下面的代码复制下来新建一个文本文档粘贴保存,然后把文件名改为rrsc_cn.php中的,上传到根目录,修改首页模板,在网站首页的<head></head>这部分加入<script src=”/rrsc_cn.php” language=”javascript“></script>这段代码,然后更新首页,代码如下:

  1. <?php
  2. functionsp_input($text)
  3. {
  4. $text=trim($text);
  5. $text=htmlspecialchars($text);
  6. if(!get_magic_quotes_gpc())
  7. returnaddslashes($text);
  8. else
  9. return$text;
  10. }
  11. $autotime=300;//自动更新时间,单位为秒,这里我设为5分钟,大家可以自行更改。
  12. $fpath=”../data/last_time.inc”;//记录更新时间文件,如果不能达到目的,请检查是否有读取权限。
  13. include($fpath);
  14. if(emptyempty($last_time))
  15. $last_time=0;
  16. if(sp_input($_GET['renew'])==”now”)
  17. $last_time=0;
  18. if((time()-$last_time)>=$autotime)
  19. {
  20. define(‘DEDEADMIN’,ereg_replace(“[/\]{1,}”,’/',dirname(__FILE__)));
  21. require_once(DEDEADMIN.”/../include/common.inc.php”);
  22. require_once(DEDEINC.”/arc.partview.class.php”);
  23. /*
  24. $row=$dsql->GetOne(“Select*Fromdede_homepageset”);
  25. $dsql->Close();
  26. $templet=$row['templet'];
  27. $position=$row['position'];
  28. */
  29. $templet=”default/index.htm”;//这里是首页模板位置,当前是dede默认首面位置。
  30. $position=”../index.html”;
  31. $homeFile=dirname(__FILE__).”/”.$position;
  32. $homeFile=str_replace(”\&;,”/”,$homeFile);
  33. $homeFile=str_replace(”//”,”/”,$homeFile);
  34. $pv=newPartView();
  35. $pv->SetTemplet($cfg_basedir.$cfg_templets_dir.”/”.$templet);
  36. $pv->SaveToHtml($homeFile);
  37. $pv->Close();
  38. $file=fopen($fpath,”w”);
  39. fwrite($file,”<?phpn”);
  40. fwrite($file,”$last_time=”.time().”;n”);
  41. fwrite($file,’?>’);
  42. fclose($file);
  43. }
  44. ?>