要实现这一功能,首先需要找到 `source/module/forum/forum_viewthread.php` 文件。
在该文件中,搜索以下代码片段:
function viewthread_updateviews($tableid)
找到上述代码后,您会看到一个完整的函数定义,如下所示:
function viewthread_updateviews($tableid) {
global $_G;
if(!$_G['setting']['preventrefresh'] || $_G['cookie']['viewid'] != 'tid_'.$_G['tid']) {
if(!$tableid && $_G['setting']['optimizeviews']) {
if($_G['forum_thread']['addviews']) {
if($_G['forum_thread']['addviews'] < 100) {
C::t('forum_threadaddviews')->update_by_tid($_G['tid']);
} else {
if(!discuz_process::islocked('update_thread_view')) {
$row = C::t('forum_threadaddviews')->fetch($_G['tid']);
C::t('forum_threadaddviews')->update($_G['tid'], array('addviews' => 0));
C::t('forum_thread')->increase($_G['tid'], array('views' => $row['addviews']+1), true);
discuz_process::unlock('update_thread_view');
}
}
} else {
C::t('forum_threadaddviews')->insert(array('tid' => $_G['tid'], 'addviews' => 1), false, true);
}
} else {
C::t('forum_thread')->increase($_G['tid'], array('views' => 1), true, $tableid);
}
}
dsetcookie('viewid', 'tid_'.$_G['tid']);
}
接下来,我们需要对这段代码进行修改,以实现随机增加阅读数的功能。以下是修改后的代码:
function viewthread_updateviews($tableid) {
global $_G;
$viewrand = rand(2,10);
if(!$_G['setting']['preventrefresh'] || $_G['cookie']['viewid'] != 'tid_'.$_G['tid']) {
if(!$tableid && $_G['setting']['optimizeviews']) {
if($_G['forum_thread']['addviews']) {
if($_G['forum_thread']['addviews'] < 100) {
C::t('forum_threadaddviews')->update_by_tid($_G['tid']);
} else {
if(!discuz_process::islocked('update_thread_view')) {
$row = C::t('forum_threadaddviews')->fetch($_G['tid']);
C::t('forum_threadaddviews')->update($_G['tid'], array('addviews' => $viewrand));
C::t('forum_thread')->increase($_G['tid'], array('views' => $row['addviews']+$viewrand), true);
discuz_process::unlock('update_thread_view');
}
}
} else {
C::t('forum_threadaddviews')->insert(array('tid' => $_G['tid'], 'addviews' => $viewrand), false, true);
}
} else {
C::t('forum_thread')->increase($_G['tid'], array('views' => $viewrand), true, $tableid);
}
}
dsetcookie('viewid', 'tid_'.$_G['tid']);
}
### 修改的主要内容 1. **创建随机数变量**
在代码开头新增了一行,用于生成 2 到 10 之间的随机数:
$viewrand = rand(2,10);
原始代码中,每次增加阅读数时使用的固定值为 `1`。我们将其替换为 `$viewrand`,从而实现动态调整。以下是具体的修改位置:
- 替换以下代码中的 `+1`:
C::t('forum_thread')->increase($_G['tid'], array('views' => $row['addviews']+1), true);
C::t('forum_thread')->increase($_G['tid'], array('views' => $row['addviews']+$viewrand), true);
C::t('forum_threadaddviews')->insert(array('tid' => $_G['tid'], 'addviews' => 1), false, true);
C::t('forum_threadaddviews')->insert(array('tid' => $_G['tid'], 'addviews' => $viewrand), false, true);
C::t('forum_thread')->increase($_G['tid'], array('views' => 1), true, $tableid);
C::t('forum_thread')->increase($_G['tid'], array('views' => $viewrand), true, $tableid);
如果您希望进一步优化或调整随机范围,请根据实际需求修改 `rand(2,10)` 的参数值。