会员人非会员,何以窥织梦之秘?

99ANYc3cd6
预计阅读时长 16 分钟
位置: 首页 织梦建站 正文
  1. 通用方法:适用于所有内容(文章、图集、软件等),通过修改模板文件实现。
  2. 专用方法:为特定内容(如文章)创建一个自定义字段,在后台勾选即可控制,更灵活。

下面我将详细介绍这两种方法。


通用模板修改法(最常用)

这种方法的核心思想是:在内容详情页的模板文件中,加入一段PHP判断代码,如果用户未登录,就显示登录提示或跳转到登录页;如果已登录,则正常显示内容。

操作步骤:

  1. 找到模板文件 登录你的织梦后台,进入【模板】->【默认模板管理】。 找到你当前使用的内容详情页模板,通常文章模板文件名为 article_article.htm,位于 /templets/default/ 目录下。

  2. 编辑模板文件 点击 article_article.htm 后面的【修改】按钮,进入模板编辑界面。

  3. 插入判断代码 在模板中,找到你希望被保护的内容区域(例如文章的正文部分,通常由 {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}
  4. 保存并更新 点击模板编辑界面的【保存】按钮。 为了让修改生效,你需要去【生成】->【更新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":这是织梦默认的登录和注册页面路径,如果你的路径不同,请自行修改。

自定义字段控制法(更灵活)

这种方法适合需要精细化控制的场景,比如你只想让一部分文章设置为“会员可见”,而其他文章正常开放,它不需要修改模板文件,只需在后台操作。

操作步骤:

  1. 添加自定义字段

    • 登录织梦后台,进入【核心】->【内容模型管理】。
    • 点击你文章所在模型(通常是“普通文章”)后面的【字段管理】。
    • 点击【添加新字段】。
    • 字段名称:输入 ismember (或你喜欢的名字,建议用英文)。
    • 字段类型:选择 布尔(Boolean) 值(即“是/否”或“真/假”)。
    • 字段提示:输入“是否仅会员可见”。
    • 显示在发布页:选择“是”。
    • 显示方式:选择“不显示”。
    • 保存
  2. 为文章设置字段

    • 发布】->【添加文章】(或编辑已有文章)。
    • 在文章编辑界面的下方,你会看到刚刚添加的自定义字段“是否仅会员可见”,后面会有一个复选框。
    • 勾选这个复选框,表示这篇文章只有会员才能看到,不勾选则对所有用户可见。
    • 正常填写并发布/更新文章。
  3. 修改模板文件

    • 和方法一一样,打开你的内容详情页模板 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>
  4. 保存并更新 保存模板,并到【生成】->【更新HTML】中更新相关页面。

代码解释:

  • $this->Fields['ismember']:这句代码获取了当前文章的 ismember 自定义字段的值,对于布尔型字段,勾选后值为 1,未勾选为空 。
  • if($isMember == 1 && $cfg_ml->IsLogin()==0):这个判断条件更复杂,它同时满足“文章设置了会员可见”并且“用户未登录”时,才显示提示。

总结与建议

特性 方法一(通用模板修改) 方法二(自定义字段)
适用性 所有文章统一设置,或需要快速实现。 需要灵活控制,部分文章开放,部分文章限制。
修改方式 修改模板文件。 添加字段 + 修改模板文件。
灵活性 低,要么全部限制,要么全部开放。 高,可以在后台对每篇文章独立设置。
推荐度 ⭐⭐⭐ (适合简单需求) ⭐⭐⭐⭐⭐ (适合大多数网站,更专业)

给你的建议:

  • 如果你的网站所有都要求会员登录,使用方法一最简单快捷。
  • 如果你的网站只有一部分内容是会员专享,其他内容对所有人开放,强烈推荐使用方法二,它管理起来非常方便。

希望这个详细的教程能帮到你!如果在操作过程中遇到任何问题,欢迎随时提问。

-- 展开阅读全文 --
头像
dede wap源码如何获取与使用?
« 上一篇 03-26
织梦手机模板调用标签
下一篇 » 03-26

相关文章

取消
微信二维码
支付宝二维码

目录[+]