帝國CMS最高效的幾種隨機文章的寫法
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;
?>