Discuz! X3.* 隐藏帖子年份,仅VIP会员和持有“显年特权勋章”的用户可查看
分类 网站技术/村民张先生 发布于 2016-02-28 08:26
为何要隐藏年份?
如果你的论坛中具有较多无时效性且优质的帖子,可以考虑隐藏真实的发帖时间。可以想象,一个标明2008年发布的帖子,可能很难引起人的关注。建议采用“最近”“不久前”“较早前”等模糊描述来替代。
同时,我们可以将“帖子年份显示”作为一项增值服务提供给VIP会员或购买“显年特权勋章”的用户。
修改方法:
1、首先后台的时间设置中必须启用了“人性化时间”;
2、打开 source/class/discuz/discuz_application.php 文件,
查找:
if($this->var['member']['newprompt']) { $this->var['member']['newprompt_num'] = C::t('common_member_newprompt')->fetch($this->var['member']['uid']); $this->var['member']['newprompt_num'] = unserialize($this->var['member']['newprompt_num']['data']); $this->var['member']['category_num'] = helper_notification::get_categorynum($this->var['member']['newprompt_num']); }
在其下方新增:
$dygroup = in_array($this->var['member']['groupid'], array(1,2,3,33,29,40,43,44,45)) ? 1 : 0; //全站显示年份的用户组 setglobal('dygroup', $dygroup); if(!$dygroup) { $cmffu = C::t('common_member_field_forum')->fetch($this->var['member']['uid']); $cmffum = explode("\t", $cmffu['medals']); foreach($cmffum as $k => $r) { list($cmffumid) = explode("|", $r); if($cmffumid == '13') { $dycard = '2'; } if($cmffumid == '14') { $dycard = '1'; break; } $dycard = $dycard ? $dycard : '0'; } unset($cmffum[$k]); setglobal('dycard', $dycard); }
这一步是定义两个全局变量 $_G['dygroup'] (全站显示年份的用户组,不受有无显年勋章的影响,建议加入所有版主组和高等级VIP组)和 $_G['dycard'] (当前持有“显年勋章”的状态)。
需要根据自己网站的情况,修改全站显示年份的用户组,以及其中的 $cmffumid (其中的13替换为低级显年勋章编号,14替换为高级显年勋章编号)。
欢迎谈谈你的看法(无须登录) *正文中请勿包含"http://"否则将被拦截