discuz 帖内单独调用附件
VIEW CONTENTS
首页 建站教程 discuz教程 查看内容

discuz 帖内单独调用附件

2018-3-25 20:14| 发布者: admin| 查看: 967| 评论: 0
之前模板下载内容页图片幻灯图片用的是默认代码,因为只能用一处,弊端是每次上传模板时,图片不能在帖子中显示,但为了设置封面,每次还要先插入图片,设置好封面再把插入帖内的图去掉,很烦。

今天认真的琢磨了下,现在写出帖内调用本帖所有图片附件。
帖内所有图片附件

[代码]php代码:

    <!--{eval $tbid = DB::result(DB::query("SELECT tableid FROM ".DB::table('forum_attachment')." WHERE `tid`= $_G[tid]"));}-->
    <!--{if $tbid}-->
    <!--{eval $cover = DB::fetch_all("SELECT attachment FROM ".DB::table('forum_attachment_'.$tbid.'')." WHERE `tid`= $_G[tid] AND `isimage`=1;");}-->
    <!--{/if}-->
    <!--{loop $cover $thecover}-->
    <!--{if $thecover['attachment']}-->
    <li><img src="/data/attachment/forum/$thecover['attachment']" alt="<!--{if $thecover['description']}-->$thecover['description']<!--{else}--><!--{$_G[forum_thread][subject]}--><!--{/if}-->"/></li>
    <!--{/loop}-->
    <!--{else}-->
    <img src="$_G['style'][styleimgdir]/down/images/nopic.jpg" alt="暂无图片附件"/>
    <!--{/if}-->
思路是,用本帖的tid查询附件分表后缀tableid,再拿获取到的tableid去查询附件地址,加上条件`isimage`=1,即只要图片附件。
熬夜写的东西有些混乱,先这样吧。
非图附件的调用,之前一直有点bug,现在基本解决,贴上代码:
帖内附件只能显示在帖子正文区内,这点对于改动较大的模板就不够灵活,比如我想要放在帖子的头上。。。

贴上调用非图附件的方法和上面调用图片的道理是一样的,只是类型来区分。

[代码]php代码:

    <!--{if $tbid}-->
    <!--{eval $downfiles = DB::fetch_all("SELECT * FROM ".DB::table('forum_attachment_'.$tbid.'')." WHERE `tid`= $_G[tid] AND `isimage`=0;");}-->
    <!--{/if}-->
    <!--{if $downfiles}-->
    <!--{loop $downfiles $downfile}-->
    <li>
    <!--{if $downfile['price']}-->
    <a href="forum.php?mod=misc&action=attachpay&aid=$downfile['aid']&tid=$_G['tid']" title="<!--{if $downfile['description']}-->$downfile['description']<!--{else}--><!--{$_G[forum_thread][subject]}--><!--{/if}-->" class="yanshil" onclick="showWindow('attachpay', this.href)"/><i class="fa fa-cloud-download fa-fw"></i>下载地址</a>
    <!--{else}-->
    <a href="http://file.cmsbj.cn/cmsbj_file/forum/<!--{$downfile['attachment']}-->" title="<!--{if $downfile['description']}-->$downfile['description']<!--{else}--><!--{$_G[forum_thread][subject]}--><!--{/if}-->" class="yanshil"/><i class="fa fa-cloud-download fa-fw"></i>下载地址</a>
    <!--{/if}-->
    <p><!--{$downfile['filename']}--></p>
    <p>下载权限:<!--{$downfile['readperm']}-->,价格:<!--{$downfile['price']}--> <!--{$_G['setting']['extcredits'][$_G['setting']['creditstransextra'][1]][unit]}{$_G['setting']['extcredits'][$_G['setting']['creditstransextra'][1]][title]}--></p>
    </li>
    <!--{/loop}-->
    <!--{else}-->
    <div class="down-warning"><i class="fa fa-warning fa-fw"></i> 附件未上传或丢失!</div>
    <!--{/if}-->

以上是一段实例,分解来说,其中,

[代码]php代码:

<!--{eval $downfiles = DB::fetch_all("SELECT * FROM ".DB::table('forum_attachment_'.$tbid.'')." WHERE `tid`= $_G[tid] AND `isimage`=0;");}-->
这一段是在获取到$tbid之后才可以使用的,与调用图片附件不同的是isimage`=0,$tbid获取方法,上面有,再贴一下:

[代码]php代码:

<!--{eval $tbid = DB::result(DB::query("SELECT tableid FROM ".DB::table('forum_attachment')." WHERE `tid`= $_G[tid]"));}-->
接下来,第一层判断开始,若存在非图附件

[代码]php代码:

<!--{if $downfiles}-->
接着,loop里做第二层判断,如果附件有价格

[代码]php代码:

    <!--{if $downfile['price']}-->
    <a
    href="forum.php?mod=misc&action=attachpay&aid=$downfile['aid']&tid=$_G['tid']"
    title="<!--{if
    $downfile['description']}-->$downfile['description']<!--{else}--><!--{$_G[forum_thread][subject]}--><!--{/if}-->"
    class="yanshil" onclick="showWindow('attachpay', this.href)"/><i
    class="fa fa-cloud-download fa-fw"></i>下载地址</a>
否则

[代码]php代码:

    <!--{else}-->
    <a href="http://file.cmsbj.cn/cmsbj_file/forum/<!--{$downfile['attachment']}-->" title="<!--{if $downfile['description']}-->$downfile['description']<!--{else}--><!--{$_G[forum_thread][subject]}--><!--{/if}-->" class="yanshil"/><i class="fa fa-cloud-download fa-fw"></i>下载地址</a>
    <!--{/if}-->
这第二层判断的是,如果有价格,使用弹出购买链接,否则直接显示附件真实地址。
接下来的下载权限什么的都是表里的字段,直接调用即可。
loop结束

[代码]php代码:

<!--{/loop}-->
到了第一层判断的否则,即若无非图附件

[代码]php代码:

    <!--{else}-->
    <div class="down-warning"><i class="fa fa-warning fa-fw"></i> 附件未上传或丢失!</div>
    <!--{/if}-->
这个else是个点缀,可以直接<!--{/if}-->,只是无非图附件时显示空白罢了。
修复了未上传任何附件时,查询不到附件分表数据导致报错无法显示页面的问题。










鲜花

握手

雷人

路过

鸡蛋
Copyright   ©2015-2016  大糖网  ( 浙ICP备17038000号-1 )

大糖网是站长们一起交流成长的平台,这里可以找到海量、优质精品的源码模板等建站资源