这两天客服在易优问答看到有个别用户提出这个问题,可以负责任的告诉你:易优CMS不可以随机输出图集中的某张图片。什么?那没办法了吗?不着急,慢慢来,方法是留给有准备的人的。

易优原生图集代码

{eyou:volist name="$eyou.field.image_list" id="field"}
<img src="{$field.image_url}" alt="{$field.title}" />
图片集描述:{$field.intro}
{/eyou:volist}

上述代码可知,是用volist循环输出图片数组。而在ThinkPHP框架中,volist本身并不支持随机排序。如果你想在volist循环中输出随机排序的数据,你需要在查询数据库时就进行随机排序,然后再使用volist进行输出。所以,我们直接输出PHP吧,先select获取图集列表数组,在用PHP函数shuffle打乱数组,最后foreach输出break终止输出,即可随机获取1条数据了。

第一种方法:直接读取数据表

/**
* 易优产品/图片模型的图集随机输出1张--读取数据库
* ============================================================================
* 源码志
* 网站地址: https://www.yuanmazhi.com
* ============================================================================
* Author: Mangold
* Date: 2024-10-12
*/
/** 先获取当前文章页ID **/
{eyou:assign name='aid' value='$eyou.field.aid' /}
/** 随机输出一张图片代码 Start **/
{eyou:php}
	$sql = 'select * from ey_product_img where aid = '.$aid.'';
	$row = db()->query($sql);
	shuffle($row);
	foreach ($row as $_k => $_v) {
		echo "图片ID:".$_v['img_id'];
		echo " -- ";
		echo "图片链接:".$_v['image_url'];
		echo "<br/>";
		break;
	}
{/eyou:php}
/** 随机输出一张图片代码 End **/

其他字段,可以查看ey_product_img数据表。

上面是产品模型图集字段的代码,图片模型的图集字段和其他模型的图集字段都是差不多的,找到图集数据表,替换ey_product_img即可。

例如图片模型图集数据表是ey_images_upload,那么就可以使用下面这个SQL替换一下,其它字段也是一样,自行查找替换。

$sql = 'select * from ey_product_img where aid = '.$aid.'';

【推荐】第二种方法:使用易优底层字段

代码非常简短,直接使用易优在底层已经做好的图集数组$image_list = $eyou['field']['image_list'];

产品和图片这两模型的图集是系统内置的,有用户要问了,自己增加的多图字段怎么办呢?

我们在模型里增加一个名称是图集,标识是tuji的多图字段,查找数据表发现是在ey_article_content里,不能直接使用上面代码。

其实也简单,套用第二种方法即可,就是要获取image_list,但是自定义字段使用的是diyfield标签,所以使用这个标签的Db数据即可,代码如下

文章模型等自定义多图字段的随机1张图片

隐藏内容
本内容需评论后查看

上面代码中的tuji换为你自己在后台设置的字段标识哦!

很简单吧!有需要的拿去用吧,记得分享转载标明出处哦!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
根据2013年1月30日《计算机软件保护条例》为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。鉴于此,本站希望大家严格按此说明研究软件,不得上线运营,如需商业运营请到正规渠道购买,如侵犯到您的权益,请联系我们!适当收费为网站运营需要成本。