下面我将为你提供两种最主流的实现方法,一种是使用DedeCMS自带的“会员级别”功能(最推荐、最规范),另一种是使用自定义字段+PHP判断(更灵活,但需要手动修改代码)。

(图片来源网络,侵删)
使用DedeCMS自带的“会员级别”功能(推荐)
这是最标准、最安全的方法,利用了DedeCMS内置的会员和权限体系,通过设置文章的“会员级别”属性,实现精准控制。
操作步骤:
第一步:设置会员级别(如果尚未设置)
- 登录DedeCMS后台。
- 进入 “会员” -> “会员管理” -> “会员级别”。
- 你会看到默认的“普通会员”,你可以直接使用它,也可以点击“增加新级别”来创建更精细的等级。
创建一个“VIP会员”级别,设置好所需的积分或消费金额。
- 记录下你想要使用的会员级别的 “级别ID”,普通会员的ID通常是
10。
第二步:发布或编辑文章,设置访问权限

(图片来源网络,侵删)
- 在后台发布新文章,或者编辑一篇已有的文章。
- 在文章编辑页面,向下滚动,找到 “高级选项” 并展开它。
- 在“高级选项”中,你会看到一个名为 “需会员级别” 的下拉菜单。
- 从下拉菜单中选择你希望只有哪个级别的会员才能查看这篇文章(选择“普通会员”或你自定义的级别)。
- 重要:确保文章的 “发布状态” 是“仅动态浏览”(即文章属性为“动态”),如果设置为“仅静态浏览”,这个权限设置将不起作用,因为静态页面是直接生成的,不会经过PHP判断。
- 保存文章。
第三步:前台效果验证
- 清除网站缓存(后台 -> 系统 -> 清除缓存)。
- 以未登录的访客身份访问这篇文章的页面,你会发现,文章标题和摘要可能显示,但正文内容被隐藏了,通常会显示类似“请登录后查看”或“您所在的会员级别,无法查看此内容”的提示。
- 以已登录的普通会员身份访问这篇文章,现在应该可以正常看到全文内容了。
优点:
- 官方功能:稳定、可靠,无需修改核心文件。
- 管理方便:在后台直接设置,非常直观。
- 权限清晰:可以针对不同级别的文章设置不同的阅读权限。
使用自定义字段 + PHP判断(灵活但需修改代码)
当你需要更复杂的隐藏逻辑,只有付费VIP会员才能看”或者隐藏文章中的某个特定部分时,可以使用这种方法。
操作步骤:
第一步:创建自定义字段

(图片来源网络,侵删)
- 在后台发布文章的页面,切换到 模型”。
- 找到 “自定义字段” 管理,增加一个新的字段。
- 字段名:建议使用英文,如
is_hidden。 - :如“是否隐藏内容”。
- 字段类型:选择“单选”,选项值设为
是和否,默认值为否。 - 保存并更新内容模型。
- 字段名:建议使用英文,如
第二步:修改文章内容模板
这是最关键的一步,你需要修改文章内容模板(通常是 article_article.htm),让它在渲染内容前进行判断。
-
在DedeCMS后台,进入 “模板” -> “默认模板管理”。
-
找到你当前使用的模板文件夹,打开 页模板” (
article_article.htm)。 -
用文本编辑器打开这个文件,找到显示文章正文内容的地方,通常是这样的代码:
{dede:field.body/} -
将其替换为以下PHP代码块:
{dede:php} // 获取当前文章的自定义字段值 $isHidden = $this->Fields['is_hidden']; // 获取当前登录会员的级别ID,如果未登录则为0 $mtypeid = ($cfg_ml->M_ID > 0) ? $cfg_ml->M_TypeID : 0; // 判断逻辑:如果字段值为“是” AND (用户未登录 OR 用户级别不满足要求) // 这里我们设定,只有当字段为“是”且用户登录时才能看到 if ($isHidden == '是' && $mtypeid == 0) { // 如果条件满足,显示给访客的提示信息 echo '<div class="hidden-tip">此内容仅对会员开放,请<a href="/member/index.php">登录</a>后查看。</div>'; } else { // 如果不满足(即内容未隐藏或用户已登录),则正常显示文章内容 echo $this->Fields['body']; } {/dede:php}
代码解释:
$this->Fields['is_hidden']:获取当前文章is_hidden这个自定义字段的值。$cfg_ml->M_ID:获取当前登录会员的ID,如果未登录,值为0。$cfg_ml->M_TypeID:获取当前登录会员的级别ID。if ($isHidden == '是' && $mtypeid == 0):这是判断的核心,意思是“如果文章被标记为隐藏,并且当前用户没有登录(mtypeid == 0)”。echo ...:如果条件为真,就输出提示信息。echo $this->Fields['body']:如果条件为假(即用户已登录或文章未隐藏),就正常输出文章正文。
第三步:发布文章并测试
- 发布一篇文章,在“是否隐藏内容”字段中选择“是”。
- 以访客身份访问,会看到提示信息。
- 以会员身份登录后再次访问,会看到完整内容。
总结与建议
| 特性 | 方法一 (会员级别) | 方法二 (自定义字段) |
|---|---|---|
| 易用性 | 非常高,后台点点即可 | 较低,需要修改代码 |
| 规范性 | 高,符合DedeCMS设计逻辑 | 较低,属于二次开发 |
| 灵活性 | 较低,只能按会员级别控制 | 非常高,可以自定义任意逻辑 |
| 维护性 | 好,升级DedeCMS不受影响 | 差,升级后可能需要重新修改模板 |
| 适用场景 | 大多数常规的会员阅读权限控制 | 需要复杂权限逻辑,如按用户组、按付费状态等隐藏 |
对于绝大多数用户,我强烈推荐使用【方法一】,它简单、安全且符合DedeCMS的架构,只有在【方法一】无法满足你特殊业务需求时,才考虑使用【方法二】。
