请选择 进入手机版 | 继续访问电脑版

编程365

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 158|回复: 0

Discuz中的DIY显示付费主题内容的解决办法

[复制链接]

67

主题

78

帖子

2347

积分

管理员

硬汉工作室创始人

Rank: 9Rank: 9Rank: 9

积分
2347
QQ
发表于 2019-3-22 14:59:55 | 显示全部楼层 |阅读模式
一位站长找到我,他的问题是DIY的页面内容里有帖子简介,有个帖子是付费主题,按理说付费主题的内容不能显示简介的,但是diy里却显示出来了。

于是,研究diy内容的生成原理。

diy里的数据是保存在common_block_item表里的,其中summary字段是记录的帖子简介,当然帖子表里没有简介字段,这个summary内容是直接截取的帖子内容。

然后就是找到获取帖子数据的代码,是在source/class/block/forum/block_thread.php文件里,这个是根据你选择的条件筛选出帖子。找到getthread方法 ,这个方法是根据tid数组返回简介内容的,里面还根据不同的特殊主题做了不同的处理,其中最关键的也就是$message = messagecutstr($var, $messagelength, '')这行代码了,这直接是截取的帖子内容,其中也屏蔽了[hide]等特殊内容。找到这里就好处理了,无非是判断下是否是付费主题,如果是,则不返回简介,直接上代码吧。
if($_G['block_thread'][$tid]['price'] > 0) { // 这个是上面已经获取到的帖子信息
       $message = '**付费内容**'; // 如果是付费内容,简介返回这个。
}

把这代码写到$message = messagecutstr($var, $messagelength, '')下一行就齐活了。

效果如图:
222.jpg

题外话:插件里的discuzcode函数可以处理messagecutstr函数调用的,本来以为可以用插件来修补这个问题,但是没tid信息啊,无法确定帖子是否付费,只好作罢。
Discuz插件商店:http://addon.discuz.com/?@56030.developer
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|编程365 ( 冀ICP备13021567号-9 )

GMT+8, 2019-6-19 15:51 , Processed in 0.267929 second(s), 29 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表