PHP读取栏目评论开关需根据CMS类型查询对应数据库字段:ThinkPHP用Db::name(‘category’)->where(‘id’,$cat_id)->value(‘is_comment’),Discuz!查forum_forum表allowcomment字段并校验$_G’setting’,Dedecms查arctype表enablecomments字段(Y/N转布尔),无通用getCommentStatus()函数,模板中应组合栏目、文章、全局三级开关判断并彻底不输出HTML。
怎么读取栏目配置里的评论开关字段
PHP 获取栏目评论开关,本质是读取该栏目在数据库中对应的配置字段(比如 is_comment、allow_comment 或 comment_status),而不是调用某个现成函数。具体字段名取决于你用的 CMS 或自定义系统结构。
常见做法是:根据栏目 ID 查询栏目表,取出控制评论的布尔型字段值。
- 如果用的是 ThinkPHP,可写:
Db::name('category')->where('id', $cat_id)->value('is_comment') - 如果是原生 PDO,SQL 类似:
SELECT is_comment FROM category WHERE id = ? - 字段返回值通常为
1/0、'open'/'close'或true/false,注意类型转换
Discuz! 和 Dedecms 里怎么判断栏目评论状态
不同系统存储逻辑差异大,不能套用统一代码。
Discuz! 的栏目(版块)评论开关实际由 forum_forum 表的 allowcomment 字段控制,值为 1 表示开启,0 表示关闭;而评论本身是否启用还受站点总开关 $_G['setting']['commentstatus'] 影响,必须两个条件同时满足。
立即学习“PHP免费学习笔记(深入)”;
Dedecms(织梦)则要看 arctype 表的 ismake 和 defaultpic 并不相关——真正字段是 enablecomments(DedeCMS v5.7+),值为 Y 或 N,读取后需手动转为布尔:$enabled = ($row['enablecomments'] === 'Y');