在使用Dedecms CMS时,如果希望未登录会员只能查看文章的一部分内容,可以通过修改Dedecms的核心文件来实现这一功能。以下是一个详细的教程,帮助您完成这项设置。

首先,我们需要了解两个全局变量:$cfg_ckbodyopen 和 $cfg_ckbodynum。这些变量可以在后台系统设置中添加,用于控制代码是否生效以及未登录用户可查看的文章字数。

$cfg_ckbodyopen 的值为 Y 表示启用该功能,其他任何字符则表示不启用,默认情况下是开启的。而 $cfg_ckbodynum 则决定了未登录用户可以查看的文章字数,默认为 500 个字符(约等于 250 个中文字符)。

接下来,打开 include 文件夹下的 arc.archives.class.php 文件。

找到注释“//End foreach”所在的行,在其下方添加以下代码:


global $cfg_ckbodyopen, $cfg_ckbodynum;
$this->Fields['cfg_ckbodyopen'] = (empty($cfg_ckbodyopen) ? "Y" : "$cfg_ckbodyopen" );
$this->Fields['cfg_ckbodynum'] = (empty($cfg_ckbodynum) ? "500" : "$cfg_ckbodynum" );

if(($this->Fields['cfg_ckbodyopen'] == "Y" || $this->Fields['cfg_ckbodyopen'] == "y") && $this->Fields['ismake']==-1){
    require_once(DEDEINC.'/memberlogin.class.php');
    $this->MemberLogin = new MemberLogin();
    $this->Fields['ckbodyhtml'] = " 
您尚未登录,无法阅读全文内容,请点击此处登录
"; if($this->MemberLogin->IsLogin()){ $this->Fields['ckbody'] = $this->Fields['body']; }else{ $this->Fields['ckbody'] = cn_substr(Html2Text($this->Fields['body']),$this->Fields['cfg_ckbodynum']); $this->Fields['ckbody'] .= $this->Fields['ckbodyhtml']; } }else{ $this->Fields['ckbody'] = $this->Fields['body']; }

此外,在 //php5构造函数 前面加上以下代码:


var $MemberLogin;

完成上述步骤后,保存文件并上传到服务器。最后一步是在模板中用 {dede:field.ckbody/} 替代原来的 {dede:field.body/}。

这样,当访问者未登录时,他们将只能看到文章的一部分内容,并会看到一个提示信息,引导他们登录以查看完整内容。

注意:在进行任何核心文件修改前,请务必备份原始文件,以防出现问题时可以快速恢复。