织梦cms栏目收费阅读

收费阅读概述

织梦CMS的收费阅读功能允许将栏目或文章设置为需要付费才能查看。系统支持积分消费、金币消费和会员等级消费三种模式,适用于知识付费、VIP内容和付费教程等场景。

一、启用收费阅读功能

  1. 进入 系统 > 系统基本参数 > 会员设置
  2. 开启以下功能:
启用会员系统:      是
启用消费功能:      是
消费货币类型:      金币 / 积分
默认阅读权限:      0(开放阅读)

二、栏目级收费设置

为整个栏目设置收费规则:

  1. 进入 核心 > 栏目管理
  2. 点击目标栏目的"更改"
  3. 设置"收费设置"
栏目默认消费金币:   5金币/篇
栏目默认消费积分:   10积分/篇
最低会员等级:       中级会员(50)

三、单篇文章设置收费

在发布文章时设置:

阅读权限:  10(需注册会员)
金币消费:  10(阅读本文需10金币)
积分消费:  0
免费阅读字数: 200(前200字免费预览)

四、模板中实现付费内容展示

<!-- 文章内容页判断用户是否已付费 -->
{dede:php}
$aid=$refObj->Fields['id'];
$arcrank=$refObj->Fields['arcrank'];
$money=$refObj->Fields['money']; // 消费金币数

$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($money > 0 && !$hasPaid){
    // 显示付费墙
    echo '<div class="paywall">
      <h3>?? 本文为付费内容</h3>
      <p>阅读完整内容需要支付 <strong>'.$money.'金币</strong></p>
      <p>您当前余额:<strong>'.$cfg_ml->M_Money.'</strong> 金币</p>
      <a href="/member/buy.php?aid='.$aid.'" 
         class="buy-btn">立即购买</a>
    </div>';
} else {
    // 已付费,显示完整内容
    echo $refObj->Fields['body'];
}
{/dede:php}

五、部分内容免费预览

<!-- 前300字免费,之后需付费 -->
{dede:php}
$body=$refObj->Fields['body'];
$freeLen=300;
$plainText=strip_tags($body);

if(strlen($plainText) > $freeLen && !$hasPaid){
    // 截取免费部分
    $freeContent=mb_substr($plainText, 0, $freeLen);
    echo '<div class="free-preview">'.$freeContent.'</div>';
    
    // 付费引导
    echo '<div class="paywall-blur">
      <div class="blur-content">'.mb_substr($plainText, $freeLen, 100).'</div>
      <div class="pay-prompt">
        <p>--- 以下为付费内容,需要支付 '.$money.' 金币 ---</p>
        <a href="/member/buy.php?aid='.$aid.'">购买后阅读全文</a>
      </div>
    </div>';
}
{/dede:php}

六、栏目付费统计

管理员查看栏目的付费收入:

-- 查看栏目下文章的付费收入
SELECT a.typeid, COUNT(*) as buy_count, SUM(m.money) as total_income
FROM dede_member_buys m
LEFT JOIN dede_archives a ON m.aid=a.id
WHERE a.typeid=栏目ID
GROUP BY a.typeid;

-- 查看所有栏目的付费排行
SELECT t.typename, COUNT(m.id) as counts, SUM(m.money) as income
FROM dede_member_buys m
LEFT JOIN dede_archives a ON m.aid=a.id
LEFT JOIN dede_arctype t ON a.typeid=t.id
GROUP BY a.typeid
ORDER BY income DESC;
运营建议:设置付费内容时,建议提供"免费预览"功能让用户体验内容质量后再决定是否付费。同时应提供明确的退款或售后渠道,提升用户信任度。付费内容比例建议控制在整体内容的10%-20%,避免影响网站的免费用户群体。