前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Phpcms随机文章

Phpcms随机文章

作者头像
李维亮
发布2021-07-09 11:12:20
7.9K0
发布2021-07-09 11:12:20
举报
文章被收录于专栏:李维亮的博客

lists输出时用随机排序

Phpcms默认不支持随机文章调用,必须自己动手实现,以下代码只有 order=”rand()”,其它与正常调用一样。调用代码如下:

代码语言:javascript
复制
{pc:content action="lists" catid="$catid" num="8" order="rand()" return="info"}
<ul class="list lh24 f13">
{loop $info $v}
<li><a href="{$v["url"]}" target="_blank" title="{$v["title"]}"{title_style($v[style])}>{$v["title"]}</a></li>
{/loop}
</ul>
{/pc}

方法二:自定义随机函数

打开phpcms/libs/functions/extention.func.php文件,将下面的代码添加到里面即可,本修改不影响以后V9升级,因为extention.func.php文件就是官方专门用了让开发者放自己的扩展函数库。

代码语言:javascript
复制
/** * 随机读取文章列表 * * @param $modelid 模型ID 必须
* @param $catid 栏目ID 可选,为0或未指定调去全模型的数据
* @param $siteid 站点ID 可选,默认为1
* @param $thumb 是否必须有缩微图 可选,默认为0
* @param $num 调用文章数量 可选,默认为10
* @return array 返回随机文章列表数组
*/
function suiji($modelid, $catid, $siteid = 1, $thumb = 0, $num = 10) {if(!$modelid = intval($modelid))return false; $sitid = intval($siteid) ? intval($siteid) : 1;
$catid = intval($catid);
$num = intval($num);
$thumb = intval($thumb) ? " AND thumb != """ : "";
$CATEGORYS = getcache("category_content_".$siteid,"commons");
if($CATEGORYS[$catid]["child"]){
$catids_str = $CATEGORYS[$catid]["arrchildid"];
$pos = strpos($catids_str,",")+1;
$catids_str = substr($catids_str, $pos);
$sql = " AND catid IN ($catids_str)".$thumb;
} elseif($catid) {
$sql = " AND catid="$catid"".$thumb;
} else {
$sql = $thumb;
}
$c_db = pc_base::load_model("content_model");
$c_db->set_model($modelid);
$id = "";
for($i=1;$i<=$num;$i++)
{
$not = $id ? " AND id NOT IN ($id) " : "";
$rs = $c_db->query("SELECT * FROM $c_db->table_name AS t1 JOIN (SELECT ROUND(RAND()*(SELECT MAX(id) FROM $c_db->table_name WHERE status = 99 $sql)) AS id2) AS t2 WHERE t1.id>=t2.id2 and t1.status = 99 $sql $not ORDER BY t1.id ASC LIMIT 1");
while($r = mysql_fetch_array($rs,MYSQL_ASSOC)){
$return[]=$r;
$id = $id ? $id.",".$r["id"] : $r["id"];
}
}
return $return;
}

随机函数使用方法:

代码语言:javascript
复制
<div class="box">
<h5 class="title-2">随机文章</h5>
<ul class="content">
{php $data = suiji(1,0,1,0,15)}
{loop $data $r}
<li> · <a href="{$r[url]}" target="_blank" title="{$r[title]}">{str_cut($r[title], 51, "")}</a></li>
{/loop}
</ul>
</div>

如果想要调用全站随机文章,参考 phpcms全站最新文章和随机文章

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • lists输出时用随机排序
  • 方法二:自定义随机函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档