颠覆与创新

超态信息插件 Sinfo

不想变成栏目的信息不是好信息

更新时间:2016-05-02
首页 > 帝国cms插件帮助 > 多功能作者插件使用帮助

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

来源:东坡网   作者:有故事的人   发布日期:2015-05-06 19:17:23   阅读次数:1258

本文是东坡网开发的“多功能作者插件”帮助文档。

一、插件安装第五步详解

第五步是:修改文件 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); 在这个文件中有两处,这里是第一处。

另外,如果设置了会员投稿需审核,则该信息通过审核后还必须在插件处执行“信息清查”,才能让改信息在插件中正常显示。

版权说明:本文由 东坡网 原创,版权归东坡网所有,欢迎转载,但请保留来源于东坡网。署名的转载是对我们最大的支持,感谢!
相关文档
    暂无相关信息
相关插件
联系我们

技术支持:点击这里给我发消息

其它咨询:点击这里给我发消息

帝国小说QQ群:308293433

ECMS交流QQ群:318361476

©2013-2016 DP1037.COM东坡网,致力于帝国cms插件和二次开发,为帝国cms加油! 备案号:粤ICP备14036885号-2

本页采用东坡网【动态页缓存插件】,当前页面缓存时间 2017-06-23 06:15:22
本次从缓存读取页面,总耗时 0.00079798698425293 秒