,{dede:sql name=auto key='rand' orderby='rand()'},
`,,3. 在上述代码下方,添加以下代码:,,
`,{dede:list pagesize='8'},[field:title function="cn_substr(@me,1,25)"/],{/dede:list},
“,,4. 保存模板文件,刷新前台页面,即可看到随机调用的文章数据。DEDECMS随机调用文章数据方法归纳
方法一:使用arclist标签中的orderby属性
在DEDECMS中,可以使用arclist标签并设置orderby属性为rand来实现随机调用文章,具体代码如下:
{dede:arclist row=10 orderby=rand} <li><a href="[field:arcurl/]" target="_blank">[field:title/]</a></li> {/dede:arclist}
这种方法简单直接,通过设置row属性可以控制显示的文章数量,row=10表示随机调用10篇文章。
方法二:自定义标签randarc
可以通过自定义标签randarc来实现更复杂的随机调用需求,步骤如下:
1、增加自定义标签
function lib_randarc(&$ctag , &$refObj){ global $dsql; FillAttsDefault($ctag>CAttribute>Items ,"limit|1"); extract($ctag>CAttribute>Items); $s = ''; $tcp = new DedeTagParse(); $tcp>SetNameSpace("field",'[',']'); $tcp>LoadSource($ctag>GetInnerText()); $sql = $query = "SELECT se.*,tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath FROMdede_archives
se LEFT JOINdede_arctype
tp ON se.typeid=tp.id WHERE 1 order by rand() 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>CTags as $k => $v ){$tcp>Assign($k , $row1[$v>GetName()]);} $s.=$tcp>GetResult(); } return $s; }
2、在模板中调用
{dede:randarc limit=1}<a href=[field:arcurl/]>[field:title/]</a>{/dede:randarc}
这种方法可以实现更加灵活的随机调用功能,适用于需要特定条件过滤和复杂展示逻辑的场景。
方法三:定时自动更新首页
为了实现首页的定时自动更新,可以结合自定义标签和脚本文件来完成,以下是具体步骤:
1、创建PHP脚本文件
新建一个文本文档,将以下代码复制进去并保存为rrsc_cn.php文件,上传到网站根目录。
<?php function sp_input( $text ) { $text = trim( $text ); $text = htmlspecialchars( $text ); if ( !get_magic_quotes_gpc() ) return addslashes( $text ); else return $text; } $autotime = 300; // 自动更新时间,单位为秒,这里设为5分钟,大家可以自行更改。 $fpath = “../data/last_time.inc”; // 记录更新时间文件,如果不能达到目的,请检查是否有读取权限。 if( empty($last_time) ) $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 * From dede_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 = new PartView(); $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” ); fclose( $file ); } ?>
2、修改首页模板
在首页模板的head部分加入以下代码:
<script src="/rrsc_cn.php" language="javascript"></script>
这样可以实现首页的定时自动更新,确保每次访问时内容都是最新的。
方法四:调用全站随机文章
如果需要在站点范围内随机调用文章,可以使用以下代码:
{dede:arclist row='10' typeid='top' titlelen='35' orderby='rand'} <li><a href="https://www.360muye.cn/[field:arcurl/]">[field:title/]</a></li> {/dede:arclist}
这段代码会从整个站点中随机调用10篇文章进行展示。
FAQs
问题一:如何确保随机调用的文章不会重复?
答:为了避免随机调用的文章重复,可以在SQL查询中使用DISTINCT关键字来去除重复记录。
SELECT DISTINCT id, title FROMdede_archives
ORDER BY RAND() LIMIT 10;
这样可以确保每次调用的10篇文章都是唯一的。
问题二:如何提高随机调用的性能?
答:随机调用大量数据可能会对数据库性能造成影响,为了提高性能,可以考虑以下措施:
1、缓存机制:将随机调用的结果缓存一段时间,减少数据库查询次数。
2、分页加载:将随机调用的文章分页加载,每次只加载一部分,避免一次性加载过多数据。
3、优化索引:确保用于随机排序的字段有适当的索引,以提高查询效率。
通过以上方法,可以有效地实现DEDECMS中文章数据的随机调用,提升网站的用户体验和SEO效果。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1229350.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复