本文是东坡网开发的“多功能作者插件”帮助文档。
第五步是:修改文件 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); 在这个文件中有两处,这里是第一处。
另外,如果设置了会员投稿需审核,则该信息通过审核后还必须在插件处执行“信息清查”,才能让改信息在插件中正常显示。
©2013-2019 DP1037.COM东坡网,致力于帝国cms插件和二次开发,为帝国cms加油! 备案号:粤ICP备14036885号-2