织梦cms栏目会员权限

栏目会员权限概述

织梦CMS的会员权限系统允许管理员为不同栏目设置不同的会员访问级别。通过配置 arcrank 字段和会员等级(M_MbRank),可以实现精细化的栏目内容权限控制。

一、会员等级体系

等级rank值说明
游客0未登录用户
注册会员10注册后默认等级
中级会员50活跃用户/付费用户
高级会员100VIP/年费会员

二、设置栏目的会员访问权限

  1. 进入 核心 > 栏目管理
  2. 点击目标栏目的"更改"
  3. "访问权限"设置:
允许访问的最低会员等级:
  ○ 所有用户(含游客)  → arcrank=0
  ○ 注册会员            → arcrank=10
  ○ 中级会员            → arcrank=50
  ○ 高级会员            → arcrank=100

三、模板中判断会员权限

<!-- 判断用户是否有权访问当前栏目 -->
{dede:php}
// 获取当前栏目所需的最低权限
$typeid=$refObj->TypeLink->TypeInfos['id'];
$arcrank=$refObj->TypeLink->TypeInfos['arcrank'] ?? 0;

// 获取当前会员等级
$memberRank=$cfg_ml->IsLogin() ? $cfg_ml->M_MbRank : 0;

if($memberRank < $arcrank){
    // 权限不足
    if(!$cfg_ml->IsLogin()){
        echo '<div class="login-tip">
          <p>本栏目需要登录后才能访问</p>
          <a href="/member/login.php">立即登录</a>
          <a href="/member/reg.php">注册账号</a>
        </div>';
    } else {
        echo '<div class="vip-tip">
          <p>您当前等级不足以访问本栏目</p>
          <p>当前等级:'.$memberRank.',需要等级:'.$arcrank.'</p>
          <a href="/member/upgrade.php">升级会员</a>
        </div>';
    }
} else {
    // 权限足够,显示正常内容
}
{/dede:php}

四、不同栏目不同会员策略

<!-- 根据栏目类型设置不同的访问策略 -->
{dede:php}
$typeid=$refObj->TypeLink->TypeInfos['id'];

// 不同栏目的权限策略
$typePolicies=array(
    3=> array('name'=>'免费栏目', 'min_rank'=>0),
    5=> array('name'=>'会员栏目', 'min_rank'=>10),
    8=> array('name'=>'VIP栏目', 'min_rank'=>50),
    10=> array('name'=>'高级VIP', 'min_rank'=>100),
);

$policy=$typePolicies[$typeid] ?? $typePolicies[3];
$memberRank=$cfg_ml->IsLogin() ? $cfg_ml->M_MbRank : 0;

if($memberRank >=$policy['min_rank']){
    echo '<span class="badge">'.$policy['name'].'</span>';
}
{/dede:php}

五、通过SQL批量设置栏目权限

-- 批量设置所有子栏目为会员可见
UPDATE dede_arctype SET arcrank=10 WHERE reid=父栏目ID;

-- 将指定栏目设为VIP可见
UPDATE dede_arctype SET arcrank=100 WHERE id IN(5,8,10);

-- 恢复所有栏目为公开访问
UPDATE dede_arctype SET arcrank=0;

六、会员到期自动降权

<?php
// 定时检查VIP会员是否到期
require_once(dirname(__FILE__)."/include/common.inc.php");

$now=time();
// 查找过期的VIP会员并降级
$dsql->ExecuteNoneQuery(
    "UPDATE dede_member 
     SET mrank=10 
     WHERE mrank >=50 AND exptime > 0 AND exptime < {$now}"
);

echo "已处理过期会员";
?>
权限设计建议:建议采用"金字塔"权限模型:大部分栏目对游客开放(吸引流量),部分优质栏目对注册会员开放(促注册),少量核心内容对VIP开放(变现)。这种梯度权限策略能兼顾流量获取和商业变现。