1. 首页
  2. 帝国cms

东坡帝国CMS 多功能作者插件使用方法介绍

一、插件安装第五步详解
第五步是:修改文件 e\class\hinfofun.php ,修改 新增信息函数 和 修改信息函数。以下代码,蓝色部分是插件新增的。

(1)AddNews函数修改。

查找 function AddNews 找到此函数。修改后函数的第一行变成:

global $empire,$class_r,$class_zr,$bclassid,$public_r,$dbtbpre,$emod_r,$writer_r;
此函数的 //TAGS 判断语句附近代码变成:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//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 找到此函数。修改后函数的第一行变成:

1
2
global $empire,$class_r,$class_zr,$bclassid,$public_r,$dbtbpre,$emod_r,$writer_r;
此函数的 //TAGS 判断语句附近代码变成:
1
2
3
4
5
6
7
8
9
10
11
12
13
//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伪静态规则:

1
2
3
4
5
6
7
8
#文集首页
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伪静态规则:

1
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

1
2
3
4
5
6
7
8
9
10
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 文件中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//作者链接
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 class="c1" title="'.$tt['wname'].'" href="'.$writerurl.'" target="_blank" rel="noopener">'.$tt['wname'].'</a>';
}
}
}
}
return $writerstr;
}

在本函数中,$num 参数表示:如果作者信息数小于此值时不显示出来,默认为0表示不限制。

在信息页中的调用方法:

1
<!--?=user_ReturnWriterStr($navinfor['id'],$navinfor['classid'],$navinfor['writers'],2)? &gt;&lt;br ?--> 在列表页中开启程序代码,调用方法:

$tagstr=user_ReturnWriterStr($r[‘id’],$r[‘classid’],$r[‘writers’]);
在灵动标签中的调用方法:

1
2
3
4
[e:loop={灵动标签调用语句}]
&lt;? $thistagstr=user_ReturnWriterStr($bqr['id'],$bqr['classid'],$bqr['writers'],1); echo $thistagstr; ?&gt;
[/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);
?>

<? } ?>
在以上代码中,蓝色部分控制了显示作者的分类,可以自由修改。classid>0 表示已分类的作者,classid=3 表示分类id为3的作者

红色部分控制了每个分类下TAG显示的数量,数字部分可以自由修改。若限制显示数量,则可删除红色部分。

(3)常规的批量调用作者

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<ul>
    <li style="list-style-type: none;">
<ul>&lt;? $tsql=$empire-&gt;query("select * from {$dbtbpre}dp_write order by wid desc limit 10");</ul>
</li>
</ul>
&nbsp;
<ul>
    <li style="list-style-type: none;">
<ul>while($tr=$empire-&gt;fetch($tsql)){</ul>
</li>
</ul>
&nbsp;
<ul>
    <li style="list-style-type: none;">
<ul>$wurl=user_hWriterLink($tr['wid']);</ul>
</li>
</ul>
&nbsp;
<ul>
    <li style="list-style-type: none;">
<ul>?&gt;</ul>
</li>
</ul>
&nbsp;
<ul>
    <li style="list-style-type: none;">
<ul><!-- 显示模板开始 -->
    <li><a href="&lt;?=$wurl?&gt;"><!--?=$tr['wname']? &gt;&lt;/a&gt;(&lt;?=$tr['num']?-->)</a></li>
</ul>
</li>
</ul>
<!-- 显示模板结束 -->
&lt;? } ?&gt;

在以上代码中,绿色部分控制了作者显示排序,常用方式有三种:wid desc 最后加入作者在最前,wid 最先加入作者在最前,num desc 文集信息数最多在最前

五、其它说明
(1)作者文集页模板可以的标签

[!–pagetitle–]——作者名

[!–pagekey–]——作者别名

[!–pagedes–]——作者介绍

(2)作者列表模板可以的标签

[!–title–]——作者名

[!–oldtitle–]——作者别名

[!–titleurl–]——作者链接

[!–intro–]——作者介绍

[!–num–]——作者信息数

[!–isgood–]——作者推荐等级

(3)发布信息时,填写作者的方法同填写关键词,多个作者用英文逗号隔开

六、前台投稿也能使用插件的修改方法
先确认writers字段的投稿表单html代码是不是正确:

1
2
3
4
5
6
7
8
9
10
11
12
<input id="writers" name="writers" type="text" value="&lt;?=$ecmsfirstpost==1?" />" size="20"&gt;
<input id="
oldwriters" name="oldwriters" type="hidden" value="&lt;?=ehtmlspecialchars(stripSlashes($r[writers]))?&gt;" /></code>
修改文件 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); 在其下一行插入代码:
<blockquote>//作者文集
if($add[writers]&amp;&amp;$add[writers]&lt;&gt;$add[oldwriters])
{
include_once ECMS_PATH.'e/dongpo/writer/dp_funs.php';
hwriter_eInsert($add[writers],$classid,$id,$newstime,$checked);
}

提醒:esetcookie(“qeditinfo”,””,0); 在这个文件中有两处,这里是第一处。
另外,如果设置了会员投稿需审核,则该信息通过审核后还必须在插件处执行“信息清查”,才能让改信息在插件中正常显示。

原创文章,作者:懒咪WP,如若转载,请注明出处:https://www.lanmit.com/2326.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据