为主题附件添加用户已下载提示,顾名思义就是当前用户浏览到已下载过附件的主题时,主题内会提示一段可以自定义的文字。 首先,这看似是一个简单的提示,但其中包含了很多因素。比如:图片附件和附件的区别,单附件和多附件的区别。 在这里分别做出单附件的教程和多附件的教程,当然如果你的论坛不确定以往或者后期的附件数量,建议使用多附件教程。 ###单附件的用户下载提示 首先,我们要确定这个显示提示的位置。在本教程中,我们把提示放置到的位置是 主题内容区域上方(viewthread_node_body.htm)。 ```html <div class="{if !$_G[forum_thread][special]}t_fsz{else}pcbs{/if}"> ``` 盒子内。 既然确定好了位置,那么我们先需要对已下载提示做一个判断(如果你需要所有版块或者分类等进行该显示,则忽略)。我们以版块FID=2为例,即: ```html <!--{if $_G[forum_thread]['fid'] == '2'}--> <!--{/if}--> ``` 接着,由于 viewthread_node_body.htm 本身就处于在 viewthread_node.htm 的loop当中,也就意味着这里的每一行代码,将在主题内的每一个楼层显示,所以我们需要先判断是否为主题。即: ```html <!--{if $_G[forum_thread]['fid'] == '2'}--> <!--{if $post['first']}--> <!--{/if}--> <!--{/if}--> ``` 上面已经讲述过了,viewthread_node_body.htm 本身就处于在 viewthread_node.htm 的loop当中,所以我们可以直接用 $post的数组变量,来调取帖子(注意这里是贴子,不是主题)内的相关信息,这样我们就可以直接获取到附件的变量:`$post['attachlist']`。这个变量就是附件(非图片附件)变量。由于这个变量还是一个数组,我们需要先将这个变量做字符串处理,或者使用`$post['attachlist']['0']`,来调取第一个附件。即: ```html <!--{if $_G[forum_thread]['fid'] == '2'}--> <!--{if $post['first']}--> <!--{eval $post_attachlist = implode($post['attachlist']);}-->//两者二选一都可以使用,使用其中一个需要注释掉另外一个 <!--{eval $post_attachlist = $post['attachlist']['0']);}-->//两者二选一都可以使用,使用其中一个需要注释掉另外一个 <!--{/if}--> <!--{/if}--> ``` 这样我们就可以通过这个AID值,来查询表 pre_common_credit_log。 ```html <!--{if $_G[forum_thread]['fid'] == '2'}--> <!--{if $post['first']}--> <!--{eval $post_attachlist = implode($post['attachlist']);}-->//两者二选一都可以使用,使用其中一个需要注释掉另外一个 <!--{eval $post_attachlist = $post['attachlist']['0']);}-->//两者二选一都可以使用,使用其中一个需要注释掉另外一个 <!--{eval $Weblog_buy_log = DB::fetch_first("SELECT * FROM ".DB::table("common_credit_log")." WHERE operation = 'BAC' AND uid = '$_G[uid]' AND relatedid = '$post_attachlist'");}--> <!--{/if}--> <!--{/if}--> ``` 在这里需要注意条件里这3个必须的条件: 条件一:`operation = 'BAC'`,用来区分购买者和出售者。 条件二:`uid = '$_G[uid]'`,用来获取当前登录用户是否存在购买记录。 条件三:`relatedid = '$post_attachlist'"`,用来匹配当前登录用户存在购买记录中的AID是否与当前主题的AID是否一致。 当同时满足以上三个条件时,我们就可以得出一个简易的用户已下载提示了。 ```html <!--{if $_G[forum_thread]['fid'] == '2'}--> <!--{if $post['first']}--> <!--{eval $post_attachlist = implode($post['attachlist']);}-->//两者二选一都可以使用,使用其中一个需要注释掉另外一个 <!--{eval $post_attachlist = $post['attachlist']['0']);}-->//两者二选一都可以使用,使用其中一个需要注释掉另外一个 <!--{eval $buy_log = DB::fetch_first("SELECT * FROM ".DB::table("common_credit_log")." WHERE operation = 'BAC' AND uid = '$_G[uid]' AND relatedid = '$post_attachlist'");}--> <!--{if $buy_log}--> 您已与<!--{eval echo date('Y-m-d H:i:s',"$Weblog_buy_log[dateline]");}--> 花费金额 $Weblog_buy_log['extcredits2'] 元获得此附件授权。 <!--{/if}--> <!--{/if}--> <!--{/if}--> ```