原来的Discuz后台模块模板里字段只有一个{pic}字段。只可以调用一张附件图片。
参考帖子 https://www.tuyuanma.com/news_8399_1_1 实现调出所有附件图片。
具体原理是添加字段{picArr},在帖子模块里返回当前帖子的所有附件图片的url,把url全部转成JSON,这样比较好调用。
1、首先同样在文件/source/class/block/forum/block_thread.php里面找到。- function fields() {
- return array(
- 'id' => array('name' => lang('blockclass', 'blockclass_field_id'), 'formtype' => 'text', 'datatype' => 'int'),
- 'url' => array('name' => lang('blockclass', 'blockclass_thread_field_url'), 'formtype' => 'text', 'datatype' => 'string'),
- 'title' => array('name' => lang('blockclass', 'blockclass_thread_field_title'), 'formtype' => 'title', 'datatype' => 'title'),
- 'pic' => array('name' => lang('blockclass', 'blockclass_thread_field_pic'), 'formtype' => 'pic', 'datatype' => 'pic'),
复制代码 大概在170行左右。
在 'pic' => array('name' => lang('blockclass', 'blockclass_thread_field_pic'), 'formtype' => 'pic', 'datatype' => 'pic'), 后面添加- 'picArr' => array('name' => lang('blockclass', '所有附件图片'), 'formtype' => 'text', 'datatype' => 'string'),
复制代码 然后在大概365行左右 找到- while($data = DB::fetch($query)) {
- $_G['block_thread'][$data['tid']] = $data;
- if($style['getsummary']) {
- $threadtids[$data['posttableid']][] = $data['tid'];
- }
- $listtids[$data['tid']] = $data['tid'];
复制代码 在后面添加- $arr = array();
- $i=substr($data['tid'], -1);
- $picSql = DB::query("SELECT attachment,tid FROM `" . DB::table('forum_attachment_' . $i) . "` WHERE tid in(" . $data['tid'] .")");
- while ($result = DB::fetch($picSql)) {
- array_push($arr, $result);
- }
复制代码
继续在385行找到- 'fields' => array(
- 'fulltitle' => str_replace('\\\'', ''', addslashes($data['subject'])),
复制代码 后面添加- 'picArr' => json_encode($arr),
复制代码 这样就改完了,后台——工具——更新缓存——3个全选——更新。
然后在模块模板里就能看到。 |