
介绍情况:
我想随机调用CMS内所有内容的链接地址,随机的!前台调用这个函数 然后前台每次点击进入的内容就不一样,但是这个内容就是CMS里面 别的例如论坛什么的都不调用!
例如: http://192.168.43.187/dsp/content/show/id/24.html 这个网址我想做成http://192.168.43.187/dsp/content/show/id/随机.html
通过标签解决了 但是需要的是fun方式
{qb:tag name="dspsuiji01" time="-1" type="dsp" rows="1" order="rand()" by="asc" status="rand()" mid="3"}
<a href="{$rs.url}">
{/qb:tag}
目的:通过一个动态链接调用 cms内的所有内容进行随机。
现状:当前情况修改后 是只能在当前栏目下里面的内容随机。
感谢码农给的这个方法。
复制Content出来修改.
app\common\fun\Content
order("$order desc,id desc")
order('id',$by)
分别替换 orderRaw('rand()')
恳请大家帮忙解决下。
效果演示:打开抖音 底部导航有个首页 点击 就可以看到效果。
很简单的,给你一个我自己用的fun函数
<?php
namespace app\common\fun;
use think\Db;
class Myfun
{
/**
* @param string $mo 模块名称
* @param array $map 判断条件
* @param int $rows 行数
* @return unknown|array|void
*/
public function getRandUrl($mo='cms',$map=[],$rows=1){
$rows > 1 ? $fx = 'column' : $fx = 'value' ;
$randid = Db::name($mo.'_content')->where($map)->orderRaw('rand()')->limit($rows)->$fx('id');
if($rows==1){
$data = Content::info($randid,$mo);
}else{
foreach ($randid AS $v){
$data[] = Content::info($v,$mo);
}
}
return $data;
}
}保存到fun下
参数说明:
第一个:模块名称 比如cms
第二个:判断条件,比如要筛选mid=3的 那就 ['mid'=>3]
第三个:一次随机多少行,默认是一个,如果多个直接写数字即可
模板调用方式
//默认是一条数据,直接调用就好
{:fun("Myfun@getRandUrl",cms)['url']} // ['url'] 可以换成任意字段,你需要url就是url
//多条数据的用volist循环
{volist name=":fun('Myfun@getRandUrl',cms,[],10)" id="vo"}
{$vo.url}<br />
{/volist}效果:

你的问题.有点含糊, 你是想得到随机一篇内容吗? 直接操作数据库吧
{:tempdir(json_decode(query('select * from qb_cms_content3 order by rand() limit 1')[0]['mv_url'],true)[0]['url'])}