栏目访问权限概述
织梦CMS支持为栏目设置访问权限控制,可以限制特定栏目的访问需要登录、需要会员等级、需要积分或需要金币才能浏览。这对于VIP内容区、付费阅读、内部资料等场景非常实用。
一、栏目级权限设置
在栏目管理中设置访问权限:
- 进入
核心 > 栏目管理 - 点击目标栏目的"更改"
- 找到"栏目权限"相关设置:
访问权限: □ 开放浏览(所有用户可访问) □ 限制浏览(仅限特定等级以上会员) 会员等级限制: □ 普通会员 □ 中级会员 □ 高级会员 消费限制: □ 免费 □ 消耗积分:XX分 □ 消耗金币:XX个
二、文章级权限设置
单篇文章也可以设置独立的访问权限,优先级高于栏目级设置:
阅读权限: 0=开放 / 10=普通会员 / 50=中级会员 / 100=高级会员 金币消费: 设置阅读该文章需要消耗的金币数量 积分限制: 设置阅读该文章所需的最低积分
三、模板中判断权限并显示
在栏目模板中根据用户权限显示不同内容:
<!-- 判断用户是否登录 -->
{dede:php}
if($cfg_ml->IsLogin()){
// 已登录,显示完整内容
echo '欢迎回来,'.$cfg_ml->M_UserName;
} else {
// 未登录,显示提示
echo '<div class="login-tip">请<a href="/member/login.php">登录</a>后查看</div>';
}
{/dede:php}
<!-- 判断会员等级 -->
{dede:php}
$rank=$cfg_ml->M_MbRank;
if($rank >=50){ // 中级会员以上
// 显示VIP内容
} else {
echo '<div class="vip-tip">您当前等级不足,需中级会员以上才能查看</div>';
}
{/dede:php}
四、栏目列表页的权限过滤
<!-- 按权限过滤显示文章 -->
{dede:php}
$memberRank=isset($cfg_ml->M_MbRank) ? $cfg_ml->M_MbRank : 0;
// 根据会员等级设置可查看的文章权限范围
$arcrank=$memberRank >=100 ? 100 : ($memberRank >=50 ? 50 : 0);
{/dede:php}
{dede:list pagesize='20' orderby='pubdate'}
[field:array runphp='yes']
if($memberRank < @me['arcrank']){
@me='<div class="locked-item">
<span class="lock-icon">??</span>
<h3>'.@me['title'].'</h3>
<p class="tip">需要更高等级才能查看</p>
</div>';
} else {
@me='<a href="'.@me['arcurl'].'">'.@me['title'].'</a>';
}
[/field:array]
{/dede:list}
五、未登录用户跳转登录页
在栏目模板头部添加判断代码:
<!-- 栏目模板头部 -->
{dede:php}
$needLogin=1; // 1=需要登录 0=不需要
if($needLogin && !$cfg_ml->IsLogin()){
header('Location: /member/login.php?goto='.urlencode(GetCurUrl()));
exit();
}
{/dede:php}
六、付费阅读栏目实现
<!-- 文章内容页判断是否已购买 -->
{dede:php}
$aid=$refObj->Fields['id'];
$arcrank=$refObj->Fields['arcrank'];
// 检查用户是否已购买该文章
$hasPaid=false;
if($cfg_ml->IsLogin()){
$uid=$cfg_ml->M_ID;
$check=$dsql->GetOne("SELECT id FROM dede_member_buys
WHERE mid={$uid} AND aid={$aid}");
if($check) $hasPaid=true;
}
if($arcrank > 0 && !$hasPaid){
// 显示摘要和购买按钮
echo '<div class="paywall">';
echo '<p>本文为付费内容,需要支付10金币</p>';
echo '<a href="/member/buy.php?aid='.$aid.'">立即购买</a>';
echo '</div>';
}
{/dede:php}
权限设置建议:栏目权限应遵循"由松到紧"的原则。先对所有用户开放,再逐步对特定栏目加权限。定期检查权限设置是否合理,避免因权限过严导致内容无法被搜索引擎收录(搜索引擎无法模拟登录)。