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://"否则将被拦截