discuz 本身已将所有版块按照父子层级写入缓存中,我们需要做的是将其遍历数来;
loadcache('forums');//获取所有版块
foreach($_G['cache']['forums'] as $fid => $forum) {//遍历版块
$settings[] = array($fid, ($forum['type'] == 'forum' ? str_repeat(' ', 4) : ($forum['type'] == 'sub' ? str_repeat(' ', 8) : '')).$forum['name']);
}
$s .= '<select name="useforum" multiple="multiple" size="5" class="ps">';
foreach($settings as $option) {//将版块写入select中
$selected = in_array($option[0], $forums) ? ' selected="selected"' : '';
$s .= '<option value="'.$option[0].'" '.$selected.'>'.$option[1].'</option>';
}
$s .= '</select>';
echo $s ;//就可以输出所有版块了