帝国CMS几种高效的随机调用文章的写法

  • 2017-06-27
  • 3649

php随机文章

 

方法1、WC写的高效随机调用

 

<?php

$randnum=1; //随机数量

$randids='';

$randdh='';

for($i=1;$i<=$randnum;$i++)

{

$randids.=$randdh.rand(18,30); //1为最小ID,100000为最大ID

$randdh=',';

}

?>

[e:loop={29,1,0,0,"id in ($randids)"}]

<a href="<?=$bqsr[titleurl]?>"><?=esub($bqr[title],42)?></a>

[/e:loop]

 

问题:因为在 $randids.=$randdh.rand(18,30); 这个里,ID改成1,10000,无法显示,只有改成当前栏目的最小和最大ID,才能显示出来。那么问题是:现在文章少,如果以 后文章增多,这里的最大ID要随时修改么?还是有其他的办法呢?

 

答案:增加个系统扩展变量,以后改扩展变量就可以,不用改模板

如:增加了一个<?=$public_r['add_listnum']?>扩展变量 写到“$randids.=$randdh.rand(18,30); ”

格式为: $randids.=$randdh.rand($public_r['add_listnum']>); 即:把<?和?>去掉

 

 

----------------------------------------------------------------------------------------------------------------------------------------------

 

方法2、

 

第一步:创建一个自定义页面:后台-栏目-自定义页面- 增加自定义页面

填写:①页面模式:直接页面式 ②页面名称(*):php随机文章 ③文件名(*): ../../test.php (在根目录) ④所属分类:有就选择没有就默认不选

⑤ 网页标题、网页关键词、网页描述:省略不填了 ⑥页面内容(*):看第二步

 

注释:填写大意为:位置为 ../../test.php,直接页面式

 

第二步:代码大致为(下面的要连接上数据库)

<!--code.start-->?php

require('e/class/connect.php'); //引入数据库配置文件和公共函数文件

require('e/class/db_sql.php'); //引入数据库操作文件

$link=db_connect(); //连接MYSQL

$empire=new mysqlquery(); //声明数据库操作类

$sql="SELECT * FROM {$dbtbpre}ecms_news AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM {$dbtbpre}ecms_news )-(SELECT MIN(id) FROM {$dbtbpre}ecms_news))+(SELECT MIN(id)

FROM {$dbtbpre}ecms_news )) AS id) AS t2 WHERE t1.id >= t2.id ORDER BY t1.id LIMIT 1";

?<!--code.end-->

<!--code.start-->?php

$str="";

for($i=1;$i<11;$i++){

$nr= $empire->fetch1($sql);

$titleurl=sys_ReturnBqTitleLink($nr);

$str=$str."<li><a href='".$titleurl."' title='".$nr['title']."'>".$nr['title']."</a></li> ";

}

db_close(); //关闭MYSQL链接

$empire=null; //注消操作类变量

echo $str;

?<!--code.end-->

 

第三步:①模板中用[readhttp]'http://127.0.0.1/dg2/test.php'[/readhttp] 调用文件 (不成功,只有后台刷新才能随机变化)

②用框架代码:<iframe border=0 name=lantk src="http://127.0.0.1/dg2/test.php" width=400 height=400 allowTransparency scrollbars=yes frameBorder="0"></iframe> (成功,但不利于seo)

 

 

注释:①看看 code.start 和 code.end是干啥的(就是<和>):

 

//解析代码

function RepExeCode($string){

global $public_r;

if($public_r[candocode])

{

$string=str_replace('<!--code.start-->','<',$string);

$string=str_replace('<!--code.end-->','>',$string);

}

return $string;

}

 

②for($i=1;$i<11;$i++){ 这行中的11表示调用10条 举例:for($i=1;$i<6;$i++){ 表示条用5条

 

 

方法2----演变、

 

直接在根目录(目录自行选择更改)新建一个php文件把下面的代码复制进去

<?php

require('../class/connect.php'); //引入数据库配置文件和公共函数文件

require('../class/db_sql.php'); //引入数据库操作文件

$link=db_connect(); //连接MYSQL

$empire=new mysqlquery(); //声明数据库操作类

$sql="SELECT * FROM {$dbtbpre}ecms_news AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM {$dbtbpre}ecms_news )-(SELECT MIN(id) FROM {$dbtbpre}ecms_news))+(SELECT MIN(id)

FROM {$dbtbpre}ecms_news )) AS id) AS t2 WHERE t1.id >= t2.id ORDER BY t1.id LIMIT 1";

?>

<?php

$str="";

for($i=1;$i<6;$i++){

$nr= $empire->fetch1($sql);

$titleurl=sys_ReturnBqTitleLink($nr);

$str=$str."<li><a href='".$titleurl."' title='".$nr['title']."'><h3 class='title'>".$nr['title']."</h3></a></li> ";

}

db_close(); //关闭MYSQL链接

$empire=null; //注消操作类变量

echo $str;

?>

相关阅读

帝国CMS调用单个会员信息以及会员列表的方法

帝国CMS 调用当前栏目的链接地址

帝国CMS[showclasstemp][带模板的栏目导航标签]支持调用栏目别名

帝国cms指定id范围随机调用信息

帝国CMS灵动标签调用当前栏目下的所有子栏目

成都律品科技有限公司专注律师互联网营销技术服务,创始人员2009年开始从事律师行业互联网技术开发、营销运营工作已十年,2018年公司正式成立,不断探索律师行业服务需求,致力于为律师行业提供透明、优质的服务,现已为全国多家律师事务所、律师团队提供互联网技术及营销支持。

在线咨询
  • 152-0832-9147

  • 105991110

全时在线,如未回复请留下联系方式

微信咨询