使用现成插件(推荐新手用户)
这是最简单、最安全的方法,不需要修改核心文件,升级织梦时也不会丢失代码,有很多优秀的插件可以实现这个功能。

(图片来源网络,侵删)
推荐插件:DedeVIP 或类似的全文阅读控制插件
操作步骤:
-
下载插件:
- 访问织梦官方论坛、DedeCMS爱好者论坛或一些可靠的资源网站。
- 搜索关键词如 “织梦全文阅读插件”、“织梦会员可见插件”、“DedeVIP” 等。
- 下载一个评价高、更新及时的插件包。
-
上传安装:
(图片来源网络,侵删)- 解压下载的插件包。
- 通过FTP工具,将插件包内的文件上传到你的网站根目录,覆盖对应文件(通常插件包会有说明)。
- 登录你的网站后台,进入“系统” -> “软件升级” -> “模块插件管理”,找到你刚刚上传的插件,点击“安装”。
-
插件设置:
- 在后台菜单中,你会找到新增的插件管理菜单(全文阅读管理”、“VIP内容控制”等)。
- 进入设置页面,通常你可以配置:
- 提示文字: 设置非会员用户看到的内容,您尚未登录,请登录后查看全文”、“此内容为会员专享,请升级会员”等。
- 权限控制: 可以设置需要会员等级、或是否需要登录即可查看。
- 应用范围: 选择在哪些内容类型(如文章、软件等)上生效。
-
使用方法:
- 在你发布文章或编辑文章时,插件通常会在编辑器上方或下方提供一个按钮。
- 你可以先输入公开的部分内容,然后点击一个类似“
[vip]”的按钮,接着输入需要会员才能查看的隐藏内容,再点击一个“[/vip]”的按钮。 - 保存文章后,前台非会员用户就只能看到
[vip]和[/vip]之间的公开部分,而会员登录后则能看到全部内容。
优点:
- 操作简单: 无需懂代码,安装配置即可。
- 安全无忧: 不修改织梦核心文件,升级网站时不会被覆盖。
- 功能丰富: 很多插件还包含会员组权限管理、收费阅读等功能。
缺点:

(图片来源网络,侵删)
- 可能产生费用: 一些功能强大的优质插件可能是付费的。
- 依赖第三方: 插件的稳定性和后续更新依赖于开发者。
手动修改代码(推荐有一定基础的用户)
这种方法完全由你掌控,不需要依赖任何插件,且代码量不大,非常灵活。
核心思路:显示的模板文件中,加入一段判断逻辑,如果当前用户是游客或非会员,就只显示文章的一部分内容,并给出提示;如果是会员,则显示全部内容。
操作步骤:
第1步:修改文章列表页模板(可选但推荐)
为了让用户在点击之前就知道文章需要会员权限,最好在列表页也加上标识。
- 找到你的列表页模板文件,通常位于
/templets/default/目录下,文件名可能是list_article.htm或你自定义的模板。 - 在循环文章
{dede:list}标签内,找到显示文章标题和简介的部分。 - 旁边或简介后面,加入判断逻辑:
{dede:list pagesize='10'}
<li>
<span class="title">
<a href="[field:arcurl/]">[field:title/]</a>
<!-- 如果文章设置了会员权限,则显示一个小图标或文字 -->
[field:id runphp='yes']
$aid = @me;
$row = $GLOBALS['dsql']->GetOne("SELECT `ismake` FROM `dede_archives` WHERE `id` = '$aid'");
if ($row['ismake'] == 1) { // 这里用 ismake=1 作为会员文章的标记,你可以换成其他字段,比如自定义的 `vip` 字段
@me = "<span class='vip-icon'>[会员]</span>";
} else {
@me = "";
}
[/field:id]
</span>
<span class="info">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
<p class="summary">[field:description function='cn_substr(@me,100)'/]...</p>
</li>
{/dede:list}
注意: 上述代码中,我用 ismake 字段作为判断依据,这只是一个示例。更好的做法是在后台文章模型里添加一个“是否会员”的单选字段,然后用这个新字段来判断。
第2步:修改文章内容页模板(核心步骤)
这是实现“查看全文”功能的关键。
- 找到你的文章内容页模板文件,通常位于
/templets/default/目录下,文件名是article_article.htm或你自定义的模板。 - 找到显示文章内容
{dede:field.body/}的地方。 - 将其替换为以下代码:
{dede:field.body/}
替换为:
{dede:php}
// 获取当前登录会员的信息
$userLogin = $GLOBALS['cfg_ml']->M_LoginInfo;
// 判断用户是否登录并且是会员(这里假设会员组ID大于1的才算会员,请根据你的实际情况修改)
if ($userLogin && $userLogin['mtype'] > 1) {
// 如果是会员,则显示全部内容
echo $this->Fields['body'];
} else {
// 如果不是会员(游客或非会员),则只显示部分内容并给出提示
// 方法A:直接截取body前N个字符作为预览
$shortcontent = cn_substr($this->Fields['body'], 300); // 例如截取前300个字符
echo $shortcontent;
// --- 或者 ---
// 方法B:使用自定义字段(推荐,更灵活)
// 假设你在后台文章模型里添加了一个名为 `description` 的字段(
// 你可以在后台编辑文章时,在摘要里填写公开的部分,在body里填写全文
// echo $this->Fields['description'];
// 无论用哪种方法,最后都要加上提示语
echo '<div class="member-notice" style="border:1px dashed #ccc; padding:10px; margin:10px 0; text-align:center; color:#666;">';
echo '<p><strong>此内容为会员专享,请登录后查看全文。</strong></p>';
echo '<p><a href="/member/index.php" style="color:#09f;">[ 立即登录 ]</a> | <a href="/member/reg.php" style="color:#09f;">[ 注册账号 ]</a></p>';
echo '</div>';
}
{/dede:php}
代码解释:
{dede:php}...{/dede:php}: 这是织梦的PHP代码块,可以执行PHP逻辑。$GLOBALS['cfg_ml']->M_LoginInfo: 这是织梦获取当前登录用户信息的核心对象。$userLogin: 如果用户未登录,$userLogin为false,如果已登录,则是一个包含用户信息的数组。$userLogin['mtype']: 这是用户的会员组ID。0代表游客,1通常是普通注册会员,2及以上可以是高级会员,你需要根据自己网站的会员组设置来修改这个判断条件($userLogin['mtype'] > 1)。$this->Fields['body']: 获取当前文章的完整内容。cn_substr(): 这是织梦自带的字符串截取函数,可以避免中文乱码问题。- 提示部分:你可以自由设计HTML和CSS样式,让它更美观。
第3步:后台设置(配合代码使用)
如果你在代码中使用了自定义字段(如方法B),请确保:
- 在后台“核心” -> “内容模型管理” -> “普通文章” -> “字段管理”中,添加一个字段(
short_desc)。 - 在发布或编辑文章时,记得填写这个新字段的内容。
总结与对比
| 特性 | 插件法 | 代码修改法 |
|---|---|---|
| 易用性 | ⭐⭐⭐⭐⭐ (非常简单) | ⭐⭐ (需要懂一些PHP和HTML) |
| 灵活性 | ⭐⭐ (取决于插件功能) | ⭐⭐⭐⭐⭐ (完全自定义) |
| 安全性 | ⭐⭐⭐⭐ (不修改核心) | ⭐⭐⭐⭐ (修改模板,风险低) |
| 维护成本 | ⭐⭐ (依赖开发者) | ⭐⭐⭐⭐⭐ (代码在自己手中) |
| 推荐人群 | 新手、不想折腾代码的用户 | 有一定开发基础、追求个性化定制的用户 |
给你的建议:
- 如果你是个人站长或新手,想快速实现功能,强烈推荐方法一,找一个好用的插件能省去你大量时间和精力。
- 如果你是开发者,或者网站功能有特殊要求,希望完全掌控代码,并且不介意花点时间调试,方法二会让你获得更大的自由度和成就感。
希望这个详细的教程能帮到你!如果你在操作过程中遇到任何问题,可以随时追问。
