使用 DedeCMS 自带的 [field:login/] 标签(最简单)
这是 DedeCMS 内置的最直接的方法,适用于文章内容页(article_article.htm)。

(图片来源网络,侵删)
适用场景: 保护文章正文内容。
操作步骤:
-
登录后台,进入“核心” -> “内容模型管理” -> 选择你的文章模型(文章”) -> “更改”。
-
在打开的页面中,找到“字段管理”,点击“增加新字段”。
(图片来源网络,侵删) -
创建一个新字段:
- 字段名:
logincontent(不能是中文,建议用英文) - 字段类型:
大文本 - 字段长度:
65535 - 字段说明: (这个是后台显示的名称,可以随便填)
- 显示在发布页: 是
- 是否为必填项: 否
- 其他选项保持默认即可。
- 字段名:
-
保存,系统会提示你同步数据库,点击“是”。
-
发布文章时:在后台发布文章时,你会看到多出一个“会员内容”的编辑框,把只有会员才能看到的内容填写到这里,文章正文里可以写一些引导语,请登录后查看完整内容...”。
-
修改文章模板文件:
(图片来源网络,侵删)- 找到并打开你当前使用的文章模板文件,通常是
/templets/default/article_article.htm。 - 在文章正文显示的地方(通常类似
[field:body/]),用以下代码替换它:
{dede:field.body/} <!-- 会员内容开始 --> [field:login/] {dede:field.logincontent/} <!-- 会员内容结束 --> - 找到并打开你当前使用的文章模板文件,通常是
-
刷新网站,你会发现:
- 未登录用户:只能看到
[field:body/]里的内容,[field:login/]标签及其后面的内容会直接被忽略,不显示。 - 已登录会员:可以看到完整的文章正文和
{dede:field.logincontent/}里的内容。
- 未登录用户:只能看到
优点:
- 无需修改核心文件,非常安全。
- 操作简单,符合 DedeCMS 的原生机制。
缺点:
- 需要为每篇文章单独填写一个字段,如果只想保护一小部分内容,有点“重”。
使用 PHP 判断 + 自定义模板(最灵活)
这种方法更灵活,可以保护页面上的任何一部分内容,比如下载链接、图片、特定段落等。
适用场景: 保护下载链接、图片、页面上的某个特定模块。
操作步骤:
-
修改模板文件:
- 打开你想要设置会员权限的模板文件,比如列表页(
list_article.htm)、文章页(article_article.htm)或者一个自定义的页面模板。 - 在你需要保护的内容前后,加上 PHP 判断代码。
- 打开你想要设置会员权限的模板文件,比如列表页(
-
判断代码示例:
<h2>这篇文章的公开部分</h2> <p>这部分所有访客都可以看到。</p> <!-- 以下是会员专属内容 --> <?php if($cfg_ml->IsLogin()) { // 如果用户已登录,则显示下面的内容 ?> <div class="member-only"> <h3>会员专属内容</h3> <p>恭喜你,登录会员才能看到这个下载链接!</p> <a href="/downloads/file.zip">点击下载</a> <img src="/images/member-only.jpg" alt="会员专享图片"> </div> <?php } else { // 如果用户未登录,则显示下面的提示信息 ?> <div class="login-prompt"> <p>此内容仅对会员开放,请<a href="/member/index.php?jumpurl={dede:global.cfg_cmsurl/}/article.php?id={dede:field.id/}" target="_blank">登录</a>后查看。</p> </div> <?php } ?> <!-- 会员专属内容结束 --> <h2>文章的结尾部分</h2> <p>这部分所有访客也都可以看到。</p>
代码解释:
$cfg_ml->IsLogin(): 这是 DedeCMS 判断会员是否登录的核心函数,如果返回true,表示已登录;false表示未登录。if (...) { ... } else { ... }: 这是标准的 PHP 条件判断语句。<?php ... ?>: PHP 代码的标记。{dede:global.cfg_cmsurl/}和{dede:field.id/}: 这里使用了 DedeCMS 的全局变量和字段变量,用于生成登录后跳转回当前页面的链接,用户体验更好。
优点:
- 极其灵活,可以精确控制页面上任何元素的显示和隐藏。
- 无需创建新字段,直接在模板里操作。
缺点:
- 需要用户具备基础的 PHP 和 HTML 知识。
- 修改模板后需要更新HTML缓存才能看到效果(后台 -> 系统 -> 站点缓存 -> 更新HTML)。
使用 DedeCMS 的“待审核内容”机制(变通方法)
这是一种巧妙的“曲线救国”方法,利用了 DedeCMS 的审核机制。
适用场景: 临时或非正式地保护内容。
操作步骤:
-
发布文章时:将需要保护的文章设置为“审核通过”状态。
-
修改模型:
- 进入“核心” -> “内容模型管理” -> 选择你的模型 -> “更改”。
- 在“字段管理”中,找到“审核状态”这个字段(通常是
ischeck)。 - 将其“前台投稿”设置为“是”,并确保在发布页可以修改状态(通常默认就是)。
-
修改模板:
- 在文章模板
article_article.htm中,在需要判断的地方加入以下代码:
{dede:field.ischeck runphp='yes'} if(@me == 1) { @me = "<!-- 会员内容 -->"; // 审核通过,正常显示,这里留空或写正常内容 } else { @me = "<div class='login-prompt'>内容正在审核中,请稍后再试。</div>"; // 未审核,显示提示 } {/dede:field.ischeck} <!-- 然后正常显示你的内容 --> [field:body/] - 在文章模板
-
操作流程:
- 未登录用户:看到的是提示信息。
- 管理员/编辑:登录后台后,可以将文章状态改为“审核通过”,所有人就都能看到了。
优点:
- 利用现有功能,无需额外代码。
缺点:
- 逻辑上不够严谨,因为“审核”和“会员权限”是两个概念。
- 管理起来比较麻烦,不适合作为常规的会员权限解决方案。
总结与推荐
| 方法 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
方法一 [field:login/] |
简单、安全、原生 | 不够灵活,需创建新字段 | 保护整篇文章内容,特别是文章正文。 |
| 方法二 PHP 判断 | 极其灵活、精确控制 | 需要PHP知识,需更新缓存 | 保护页面上的特定部分,如下载链接、图片、模块等。 |
| 方法三 审核机制 | 利用现有功能 | 逻辑不严谨,管理麻烦 | 临时或非正式的内容保护,不推荐常规使用。 |
对于大多数用户,我强烈推荐:
- 如果你想保护整篇文章的正文,使用 方法一。
- 如果你想保护文章中的某个下载链接或图片,或者想在列表页就显示部分内容,使用 方法二。
希望这些详细的步骤能帮助您解决问题!
