- 通用方法:适用于所有内容(文章、图集、软件等),通过修改模板文件实现。
- 专用方法:为特定内容(如文章)创建一个自定义字段,在后台勾选即可控制,更灵活。
下面我将详细介绍这两种方法。
通用模板修改法(最常用)
这种方法的核心思想是:在内容详情页的模板文件中,加入一段PHP判断代码,如果用户未登录,就显示登录提示或跳转到登录页;如果已登录,则正常显示内容。
操作步骤:
-
找到模板文件 登录你的织梦后台,进入【模板】->【默认模板管理】。 找到你当前使用的内容详情页模板,通常文章模板文件名为
article_article.htm,位于/templets/default/目录下。 -
编辑模板文件 点击
article_article.htm后面的【修改】按钮,进入模板编辑界面。 -
插入判断代码 在模板中,找到你希望被保护的内容区域(例如文章的正文部分,通常由
{dede:field.body/}标签调用)。 在这个区域的前后,分别加入以下PHP代码:<!-- 在内容区域之前加入 --> {dede:php} if($cfg_ml->IsLogin()==0) { // 如果用户未登录,则显示以下内容 echo '<div style="text-align:center; padding:50px 0; background:#f8f8f8; border:1px dashed #ccc; margin:20px 0;"> <h3>此内容仅对会员开放</h3> <p>请先<a href="/member/index.php">登录</a>,如果您还不是我们的会员,可以立即<a href="/member/reg.php">注册</a>。</p> </div>'; // 并且不显示正文内容 $this->Fields['body'] = ''; } {/dede:php} <!-- 原有的内容调用标签 --> <div class="article-content"> {dede:field.body/} </div> <!-- 或者,如果你想完全替换掉整个文章区域,可以这样写 --> {dede:php} if($cfg_ml->IsLogin()==0) { // 如果用户未登录,则显示登录提示,并终止后续内容的显示 echo '<div style="text-align:center; padding:50px 0; background:#f8f8f8; border:1px dashed #ccc; margin:20px 0;"> <h3>此内容仅对会员开放</h3> <p>请先<a href="/member/index.php">登录</a>,如果您还不是我们的会员,可以立即<a href="/member/reg.php">注册</a>。</p> </div>'; } else { // 如果用户已登录,则正常显示文章内容 echo '<div class="article-content">'.$this->Fields['body'].'</div>'; } {/dede:php} -
保存并更新 点击模板编辑界面的【保存】按钮。 为了让修改生效,你需要去【生成】->【更新HTML】,选择“更新所有内容页”或仅更新你修改过的文章。
代码解释:
{dede:php}...{/dede:php}:这是织梦的PHP代码块,允许在模板中直接写PHP逻辑。$cfg_ml->IsLogin()==0:这是织梦判断会员是否登录的核心函数,返回0表示未登录,返回1表示已登录。echo '...':直接输出HTML代码到页面上,这里就是我们给未登录用户看的提示信息。$this->Fields['body'] = '':这是一种更“强硬”的方式,直接清空文章正文内容,确保用户看不到任何东西。href="/member/index.php"和href="/member/reg.php":这是织梦默认的登录和注册页面路径,如果你的路径不同,请自行修改。
自定义字段控制法(更灵活)
这种方法适合需要精细化控制的场景,比如你只想让一部分文章设置为“会员可见”,而其他文章正常开放,它不需要修改模板文件,只需在后台操作。
操作步骤:
-
添加自定义字段
- 登录织梦后台,进入【核心】->【内容模型管理】。
- 点击你文章所在模型(通常是“普通文章”)后面的【字段管理】。
- 点击【添加新字段】。
- 字段名称:输入
ismember(或你喜欢的名字,建议用英文)。 - 字段类型:选择
布尔(Boolean)值(即“是/否”或“真/假”)。 - 字段提示:输入“是否仅会员可见”。
- 显示在发布页:选择“是”。
- 显示方式:选择“不显示”。
- 保存。
-
为文章设置字段
- 发布】->【添加文章】(或编辑已有文章)。
- 在文章编辑界面的下方,你会看到刚刚添加的自定义字段“是否仅会员可见”,后面会有一个复选框。
- 勾选这个复选框,表示这篇文章只有会员才能看到,不勾选则对所有用户可见。
- 正常填写并发布/更新文章。
-
修改模板文件
- 和方法一一样,打开你的内容详情页模板
article_article.htm。 - 在
{dede:field.body/}的前后,加入判断逻辑,但这次的判断条件是基于我们刚刚添加的自定义字段。
{dede:php} // 获取当前文章的 "ismember" 字段值 $isMember = $this->Fields['ismember']; // 如果字段值为 "1" (表示是/真) 且用户未登录 if($isMember == 1 && $cfg_ml->IsLogin()==0) { // 显示登录提示 echo '<div style="text-align:center; padding:50px 0; background:#f8f8f8; border:1px dashed #ccc; margin:20px 0;"> <h3>此内容仅对会员开放</h3> <p>请先<a href="/member/index.php">登录</a>,如果您还不是我们的会员,可以立即<a href="/member/reg.php">注册</a>。</p> </div>'; // 清空正文内容 $this->Fields['body'] = ''; } {/dede:php} <!-- 原有的内容调用标签 --> <div class="article-content"> {dede:field.body/} </div> - 和方法一一样,打开你的内容详情页模板
-
保存并更新 保存模板,并到【生成】->【更新HTML】中更新相关页面。
代码解释:
$this->Fields['ismember']:这句代码获取了当前文章的ismember自定义字段的值,对于布尔型字段,勾选后值为1,未勾选为空 。if($isMember == 1 && $cfg_ml->IsLogin()==0):这个判断条件更复杂,它同时满足“文章设置了会员可见”并且“用户未登录”时,才显示提示。
总结与建议
| 特性 | 方法一(通用模板修改) | 方法二(自定义字段) |
|---|---|---|
| 适用性 | 所有文章统一设置,或需要快速实现。 | 需要灵活控制,部分文章开放,部分文章限制。 |
| 修改方式 | 修改模板文件。 | 添加字段 + 修改模板文件。 |
| 灵活性 | 低,要么全部限制,要么全部开放。 | 高,可以在后台对每篇文章独立设置。 |
| 推荐度 | ⭐⭐⭐ (适合简单需求) | ⭐⭐⭐⭐⭐ (适合大多数网站,更专业) |
给你的建议:
- 如果你的网站所有都要求会员登录,使用方法一最简单快捷。
- 如果你的网站只有一部分内容是会员专享,其他内容对所有人开放,强烈推荐使用方法二,它管理起来非常方便。
希望这个详细的教程能帮到你!如果在操作过程中遇到任何问题,欢迎随时提问。
