详情页

帝国CMS 多功能作者插件使用帮助

时间:2023年06月10日

编辑:佚名

本文是开发的帝国cms插件“多功能作者插件”帮助文档。
一、插件安装第五步详解
第五步是:修改文件 e\class\hinfofun.php ,修改 新增信息函数 和 修改信息函数。以下代码,蓝色部分是插件新增的。
(1)AddNews函数修改。
查找 function AddNews 找到此函数。修改后函数的第一行变成:
global $empire,$class_r,$class_zr,$bclassid,$public_r,$dbtbpre,$emod_r,$writer_r;
 此函数的 //TAGS 判断语句附近代码变成:
//TAGS
if($add[infotags]&&$add[infotags]<>$add[oldinfotags])
{
    eInsertTags($add[infotags],$add['classid'],$id,$newstime);
}
//作者文集
if($add[writers]&&$add[writers]<>$add[oldwriters])
{
    include_once ECMS_PATH.'e/dongpo/writer/dp_funs.php';
    hwriter_eInsert($add[writers],$add['classid'],$id,$newstime,$add['checked']);
}
//增加信息是否生成文件
if($ccr['addreinfo']&&$add['checked'])
{
    GetHtml($add['classid'],$id,'',0);
}
(2)EditNews函数修改。
查找 function EditNews 找到此函数。修改后函数的第一行变成:
global $empire,$class_r,$class_zr,$bclassid,$public_r,$dbtbpre,$emod_r,$writer_r;
 此函数的 //TAGS 判断语句附近代码变成:
//TAGS
if($add[infotags]&&$add[infotags]<>$add[oldinfotags])
{
    eInsertTags($add[infotags],$add['classid'],$add['id'],$newstime);
}
//作者文集
if(($add[writers]&&$add[writers]<>$add[oldwriters])||$index_checkr['checked']!=$newchecked)
{
    include_once ECMS_PATH.'e/dongpo/writer/dp_funs.php';
    hwriter_eInsert($add[writers],$add['classid'],$add['id'],$newstime,$add['checked']);
}
//是否改变审核状态
if($index_checkr['checked']!=$newchecked)
二、插件设置示例

插件设置示例
三、伪静态说明
作者伪静态可用的标记:[!--writer--]、[!--page--]
作者首页伪静态可用的标记:[!--cid--]、[!--page--]
如上图设置,apache伪静态规则:
#文集首页
RewriteRule ^writer/(.*)/$ e/writer/writer.php?writer=$1
#信息列表
RewriteRule ^writer/(.*)_(.*)$ e/writer/writer.php?writer=$1&page=$2
#全部作者
RewriteRule ^writer/$ e/writer/index.php
#作者cid
RewriteRule ^writer-(.*)-(.*)/$ e/writer/index.php?cid=$1&page=$2
如上图设置,nginx伪静态规则:
rewrite ^([^\.]*)/writer/(.*)/$  $1/e/writer/writer.php?writer=$2 last;
rewrite ^([^\.]*)/writer/(.*)_(.*)$  $1/e/writer/writer.php?writer=$2&page=$3 last;
rewrite ^([^\.]*)/writer/$  $1/e/writer/index.php last;
rewrite ^([^\.]*)/writer-(.*)-(.*)/$  $1/e/writer/index.php?cid=$2&page=$3 last;
四、调用代码
将获取作者链接和作者分类链接的代码插入文件 e\class\userfun.php
function user_hWriterLink($wid,$dp=0){
    global $writer_r;
    include_once ECMS_PATH.'e/dongpo/writer/dp_funs.php';
    if($dp==0){
        $url=hwriter_WriterUrl($wid); //作者链接
    }elseif($dp==1){
        $url=hwriter_ClassUrl($wid); //作者分类链接,当$wid=0时是作者首页链接
    }
    return $url;
}
(1)当前信息的作者
将以下函数放入e/class/userfun.php 文件中
//作者链接
function user_ReturnWriterStr($id,$classid,$writers,$num=0){
    global $dbtbpre,$empire,$public_r;
    $writerstr='';
    if($writers){
        $tsql=$empire->query("select wid from {$dbtbpre}dp_writerdata where id=".$id." and classid=".$classid."");
        while($tr=$empire->fetch($tsql)){
            $tt=$empire->fetch1("select * from {$dbtbpre}dp_writer where wid=".$tr['wid']."");
            if($tt['wid']){
                if($num&&$tt['num']<$num){
                     $writerstr.=$tt['wname'];
                }else{
                    $writerurl=user_hWriterLink($tt['wid']);
                     $writerstr.='<a href="'.$writerurl.'" title="'.$tt['wname'].'" class="c1" target="_blank">'.$tt['wname'].'</a>';
                }
            }
        }
    }
    return $writerstr;
}
在本函数中,$num 参数表示:如果作者信息数小于此值时不显示出来,默认为0表示不限制。
在信息页中的调用方法:
<?=user_ReturnWriterStr($navinfor['id'],$navinfor['classid'],$navinfor['writers'],2)?>
在列表页中开启程序代码,调用方法:
$tagstr=user_ReturnWriterStr($r['id'],$r['classid'],$r['writers']);
在灵动标签中的调用方法:
[e:loop={灵动标签调用语句}]
<?
$thistagstr=user_ReturnWriterStr($bqr['id'],$bqr['classid'],$bqr['writers'],1);
echo $thistagstr;
?>
[/e:loop]
(2)按分类调用作者
<?
$tcsql=$empire->query("select * from {$dbtbpre}dp_writeclass where classid>0 order by classid desc");
while($tcr=$empire->fetch($tcsql)){
    //作者分类链接
    $wclassurl=user_hWriterLink($tcr['classid'],1);
?>
    <!-- 显示分类名称 -->
   <div class="showtag">
    <h3><a href="<?=$wclassurl?>"><?=$tcr['classname']?></a></h3>
         <ul>
    <?
    $tsql=$empire->query("select * from {$dbtbpre}dp_write where cid=".$tcr['classid']." order by wid desc limit 10");
    while($tr=$empire->fetch($tsql)){
        $wurl=user_hWriterLink($tr['wid']);
    ?>
        <!-- 显示模板开始 -->
        <li><a href="<?=$wurl?>"><?=$tr['wname']?></a>(<?=$tr['num']?>)</li>
        <!-- 显示模板结束 -->
    <?
    }
    ?>
        </ul>
  </div>
<?
}
?>
在以上代码中,蓝色部分控制了显示作者的分类,可以自由修改。classid>0 表示已分类的作者,classid=3 表示分类id为3的作者
红色部分控制了每个分类下TAG显示的数量,数字部分可以自由修改。若限制显示数量,则可删除红色部分。
(3)常规的批量调用作者
<ul>
<?
$tsql=$empire->query("select * from {$dbtbpre}dp_write order by wid desc limit 10");
while($tr=$empire->fetch($tsql)){
    $wurl=user_hWriterLink($tr['wid']);
?>
        <!-- 显示模板开始 -->
        <li><a href="<?=$wurl?>"><?=$tr['wname']?></a>(<?=$tr['num']?>)</li>
        <!-- 显示模板结束 -->
<?
}
?>
</ul>
在以上代码中,绿色部分控制了作者显示排序,常用方式有三种:wid desc 最后加入作者在最前,wid 最先加入作者在最前,num desc 文集信息数最多在最前
五、其它说明
(1)作者文集页模板可以的标签
[!--pagetitle--]——作者名
[!--pagekey--]——作者别名
[!--pagedes--]——作者介绍
(2)作者列表模板可以的标签
[!--title--]——作者名
[!--oldtitle--]——作者别名
[!--titleurl--]——作者链接
[!--intro--]——作者介绍
[!--num--]——作者信息数
[!--isgood--]——作者推荐等级
(3)发布信息时,填写作者的方法同填写关键词,多个作者用英文逗号隔开
六、前台投稿也能使用插件的修改方法
先确认writers字段的投稿表单html代码是不是正确:
<input name="writers" type="text" id="writers" value="<?=$ecmsfirstpost==1?"":ehtmlspecialchars(stripSlashes($r[writers]))?>" size="20">
<input name="oldwriters" type="hidden" id="oldwriters" value="<?=ehtmlspecialchars(stripSlashes($r[writers]))?>">
修改文件 e\class\qinfofun.php ,在761行左右找到 DodoInfo 函数,在函数的第一行加入全局变量 $writer_r ,修改后这个函数的第一行变成
global $empire,$public_r,$emod_r,$level_r,$class_r,$dbtbpre,$fun_r,$writer_r;
在 932 行左右找到 esetcookie("qeditinfo","",0); 在其下一行插入代码:
        //作者文集
        if($add[writers]&&$add[writers]<>$add[oldwriters])
        {
            include_once ECMS_PATH.'e/dongpo/writer/dp_funs.php';
            hwriter_eInsert($add[writers],$classid,$id,$newstime,$checked);
        }
提醒:esetcookie("qeditinfo","",0); 在这个文件中有两处,这里是第一处。
另外,如果设置了会员投稿需审核,则该信息通过审核后还必须在插件处执行“信息清查”,才能让改信息在插件中正常显示。
相关文章
猜你需要