最新公告
  • 新添加WordPress仿站助手小工具,方便大家开发制作WP模板的利器 . Wordpress标签生成器
  • 帝国cms MoreTags插件 使用文档

    正文概述 仿站吧   2024-08-27 08:26:53  

    MoreTags功能简介

    在帝国CMS默认情况下,一篇文章只有一个默认的tag字段,但在很多情况下,需要多个tag字段进行分类和关联。比如一部电视剧,按照演员需要tag字段,按照作品类型还需要一个tag字段。为了解决这个问题,东坡网开发了MoreTags插件。

    MoreTags插件主要功能

    1、允许一个信息有多个TAG字段

    2、TAG信息保存于一般的信息表,因此,TAG同时具有一般信息的各种属性

    MoreTags 与 Sinfo 插件的对比

    功能 MoreTags Sinfo
    动态、静态都支持
    无限层级关联信息
    按模型聚合信息
    父信息列表页静态生成
    按模型聚合静态生成
    按子类聚合信息
    一条信息允许多个聚合字段
    上手难易程度 一般 非常难

    安装方法

    第一步:文件上传及菜单安装

    1、将插件压缩包解压,得到 e文件夹,将 e文件夹 上传到 网站根目录

    2、在浏览器执行  ,安装插件菜单

    3、如果是linux系统,请将 e/dongpo/moretags/config.php 文件设置为 0777 权限

    注意:(1)插件必须位于e/dongpo/目录下,不能修改为别的名字(2)如果使用ftp软件上传,请用二进制方式

    第二步:新建moretags数据表

    一、新建moretags数据表

    • 数据表名:moretags
    • 数据表标识:moretags(可自由填写)

    二、为moretags数据表增加特殊字段tmd5

    项目 取值
    字段名 tmd5
    字段标识 tmd5
    字段类型 CHAR
    字段长度 32
    存放表 主表
    加索引
    后台增加信息处理函数 Moretags_TitleMd5
    后台修改信息处理函数 Moretags_TitleMd5
    显示顺序 999
    其它 默认即可

    三、新建moretags表的系统模型

    (1)系统模型的规则与帝国CMS一样,无特殊

    (2)tmd5字段在系统模型设置为:录入项、可增加、可修改、列表模板、内容模板

    注意:

    moretags表中title 为必须字段,其它字段可以按照帝国CMS一般的方法增减

    第三步:修改系统文件

    一、修改 e/class/connect.php 文件

    1、搜索 ,在其上一行插入代码,插入后如下:

    require_once ECMS_PATH.'e/dongpo/moretags/dp_funs.php'; 
    
    //--------------- 数据库 ---------------

    二、修改 e/class/hinfofun.php 文件

    1、搜索,在其上一行插入代码:

    Moretags_Insert($add['classid'],$id,$newstime,$add['checked']);

    2、搜索,在其上一行插入代码:

    Moretags_Insert($add['classid'],$add['id'],$newstime,$newchecked);

    3、搜索(共有 3 处,都需要修改),在其上一行插入代码:

    Moretags_Clear($r);

    三、修改  moretags数据表模型的信息列表  文件

    moretags表默认模型信息列表文件位置是e/data/html/list/listinfo.php,如果有自定义模型文件,也按照下列方法修改。

    搜索 ,在其后紧跟着插入代码:

    <?=MoreTags_ShowInfos($r['classid'],$r['id'])?>

    注意:

    修改文件时不用使用记事本,否则可能会改变文档编码,产生未知错误。

    插件的使用

    几个基本概念

    为了用户更好理解和使用MoreTags插件,有几个概念需要详细说明一下。

    一、父信息和子信息

    • 信息:在帝国CMS的栏目里,发布的一条记录,就叫做一条信息。
    • 父信息:包含其他信息的信息。
    • 子信息:被其它信息包含的信息。

    例如:

    一个帝国CMS栏目里四条信息:学校、班级、学生A、学生B,存在以下关系:

    (1)学校 是班级的父信息,班级 是学生A和学生B的父信息

    (2)班级 是学校的子信息,学生A和学生B是班级的子信息

    (3)班级 担当了父信息的角色,同时也担当子信息角色

    二、关联

    • 关联:将一条信息推送给另一条信息,使之产生父子关系的过程。
    • 关联字段:在子信息数据表中,用于关联父信息的字段。
    • 关联数据表:记录信息父子关系的数据表。

    三、关联数据表

    (1)关联数据表名

    数据表前缀moretags_子信息所在数据表名_关联字段名

    (2)关联数据表结构

    字段 类型 说明
    tid int(10) 自增字段
    tagid int(10) 父信息id
    classid smallint(5) 子信息栏目id
    id int(10) 子信息id
    newstime int(10) 子信息索引时间,用于排序
    mid smallint(5) 子信息模型id

    为数据表添加关联字段

    关联字段,是子信息所在的数据表中建立的一个特殊字段,用于与父信息关联。关联字段的名称不固定,可以自行确定。

    添加关联字段有两个步骤,不仅要在系统数据表中添加字段,还要在插件设置中添加相应的记录。

    步骤一、在子信息所在数据表中建立关联字段,并修改系统模型

    项目 取值 补充说明
    字段名: xxxxx  
    字段标识: XXXXX  
    字段类型: VARCHAR 长度:255
    存放表: 主表  
    输入表单替换html代码:
    <input name="xxxxx" type="text" value="<?=$ecmsfirstpost==1?ehtmlspecialchars(stripSlashes($_GET[xxxxx])):ehtmlspecialchars(stripSlashes($r[xxxxx]))?>" size="60">
    <input name="oldxxxxx" type="hidden"  value="<?=$ecmsfirstpost==1?"":ehtmlspecialchars(stripSlashes($r[xxxxx]))?>">
    
    其它选项默认即可

    注意:

    (1)输入表单替换html代码在新建字段时无法设置的,只有在修改字段时才能更改。

    (2)上述html代码,其中的xxxxx是刚加的字段名,必须用这个字段名替换掉。

    新增并修改好这个字段后,还要修改对应的数据模型,使整个字段为:录入项、可增加、可修改、列表模板、内容模板。

    步骤二、在插件设置中添加关联字段记录

    完成上述步骤一后,还须在插件设置中添加关联字段记录,才能使用关联字段功能。添加记录方法如下:

    在帝国CMS后台,打开网页:插件 》 MoreTags插件 》 设置 》 增加字段,按照以下说明,将步骤一中的字段记录在插件设置中。

    项目 说明
    字段名 就是在上述步骤一中增加的关联字段名
    所属数据表 上述字段所在的数据表名
    父信息默认栏目 父信息如果不存在,将新建一个父信息,此父信息默认的栏目

    父信息页列表式显示方法

    因为父信息是也帝国CMS的内容页,所以不能按照分页列表的方式显示子信息。如果子信息很多,且需要分页显示,可以按照以下方法,用动态页的方式实现此功能。

    一条父信息,根据子信息所在数据表不同、关联字段不同,可以有不同的分页链接。

    第一步:选定一个列表模板

    因为链接的参数中必须用到列表模板ID,因此必须先确定好列表模板ID.

    第二步:确定好伪静态链接格式,并在模板中使用

    例如:想用这个做tag,父信息位于栏目id是19的栏目,栏目目录是tags,那么伪静态链接确定为:

    不带分页的链接格式:
    /tags/[!--id--]/
    
    带分页的链接格式:
    /tags/[!--id--]/[!--page--].html

    此功能要求必须确定好这两种链接格式。然后,在刚选定的模板顶部插入php代码:

    <?
    $url='/tags/[!--id--].html';
    $url_page='/tags/[!--id--]-[!--page--].html';
    ?>

    接着在模版正文合适的位置插入代码来调用分页条,如下代码所示:

    <div class="epages"><?=MoreTags_FanYe($url,$url_page)?></div>

    第三步:确定好动态链接

    分页式父信息的动态链接的格式如下:

    网址/e/dongpo/moretags/liebiao.php?classid=栏目ID&id=信息ID&ztbname=子信息所在数据表&zf=子信息表中用于关联父信息的字段&listtempid=列表模板ID&page=分页号&lenth=每页显示信息数
    
     lenth 表示每页显示信息数,可以不设置,默认20条
     page  表示分页号,首页时可以不设置
    

    第四步:设置服务器伪静态规则

    伪静态规则也必须是2条,一条是无分页的链接格式,一条是有分页的链接格式

    伪静态规则请自行书写,我这里举个 .htaccess 的例子:

    RewriteRule ^tags/([0-9]+).html e/dongpo/moretags/liebiao.php?classid=19&id=$1&ztbname=article&zf=zhuanti&listtempid=3 [L]
    RewriteRule ^tags/([0-9]+)/([0-9]+).html e/dongpo/moretags/liebiao.php?classid=19&id=$1&ztbname=article&zf=zhuanti&listtempid=3&page=$2 [L]

    第五步:为分页的html添加一个css样式

    参考样式如下:

    /*翻页*/
    .epages{margin:20px 0; text-align:center}
    .epages a{border:1px solid #ccc; background:#fff; padding:3px 6px; text-decoration:none; color:#333; border-radius:4px; margin:0 4px 0 0;}
    .epages a:hover,.epages a.current-page{background:#dfdfdf; border-color:#dfdfdf; font-weight:bold;}
    .epages a.no-link:hover{background:#fff; border-color:#ccc; font-weight:normal;}

    模板中的调用

    子信息调用父信息

    这里演示的调用代码,都是直接用php代码书写。这种调用方式更灵活,效率更高。

    1、典型的应用例子

    (1)小说网站中:章节页 调用 书籍信息

    (2)剧情网站中:剧情页 调用 电视剧信息

    (3)游戏网站中:攻略页 调用 游戏信息

    (4)新闻网站中:内容页 调用 多个TAG

    2、调用代码

    (1)一般将此段代码放在模板顶部,在模板中间相应位置用 <?=$astr?> 显示父信息

    (2)代码中 limit 100 表示最多调用100个,数字范围0~999999。在明确只有1个父信息时,写为1,可以提高效率。

    (3)子信息id 和 子信息classid 在不同页面中取值方法不同,下面是在内容页中的取值方法。可以根据实际应用来修改。

    <?php
    
    //子信息id
    $zi_id=$navinfor[id];
    
    //子信息classid
    $zi_classid=$navinfor[classid];
    
    $astr='';
    $sqlb=$empire->query("select tagid from {$dbtbpre}moretags_子信息所在数据表名_关联字段名 where classid='$zi_classid' and id='$zi_id' limit 100");
    while($rb=$empire->fetch($sqlb)){
    	$rr=$empire->fetch1("select id,classid,title,titleurl from {$dbtbpre}ecms_moretags where id='$rb[tagid]' limit 1");
    	if($rr['id']){
    		$astr.='<a href="'.$rr['titleurl'].'" title="'.$rr['title'].'" target="_blank">'.$rr['title'].'</a> ';
    	}
    }
    
    ?>

    父信息调用子信息

    这里演示的调用代码,都是直接用php代码书写。这种调用方式更灵活,效率更高。

    1、典型的应用例子

    (1)小说网站中:小说页 调用 章节

    (2)剧情网站中:电视剧页 调用 剧情

    (3)新闻网站中:tag 调用 子信息

    2、调用代码

    此段代码放在模板顶部,在模板中间相应位置用 <?=$bstr?> 显示多个父信息。下面代码中 100 表示最多调用100个,可以自行修改别的数字0~99999。

    <?php
    
    //父信息id
    $fuid=$navinfor['id'];
    
    $ccstr='';
    $sqlcc=$empire->query("select id,classid from {$dbtbpre}moretags_子信息所在数据表名_关联字段名 where tagid='$fuid' order by newstime limit 99999");
    while($ccr=$empire->fetch($sqlcc)){
    	$rr=$empire->fetch1("select id,title,titleurl from {$dbtbpre}ecms_".$class_r[$ccr['classid']]['tbname']." where id='$ccr[id]' limit 1");
    	if($rr['id']){
    		$ccstr.='<a href="'.$rr['titleurl'].'" title="'.$rr['title'].'">'.$rr['title'].'</a> ';
    	}
    }
    
    
    ?>

    子信息调用父信息的全部子信息

    子信息调用父信息的全部子信息,就是将 子信息调用父信息 和 父信息调用子信息 代码结合起来。

    <?php
    
    //子信息id
    $zi_id=$navinfor[id];
    
    //子信息classid
    $zi_classid=$navinfor[classid];
    
    $allstr='';
    $sqlb=$empire->query("select tagid from {$dbtbpre}moretags_子信息所在数据表名_关联字段名 where classid='$zi_classid' and id='$zi_id' limit 100");
    while($rb=$empire->fetch($sqlb)){
        $rrb=$empire->fetch1("select id,classid,title,titleurl from {$dbtbpre}ecms_moretags where id='$rb[tagid]' limit 1");
        if($rrb['id']){
            //第一层循环 至此调用出来了父信息id
    
            //父信息id
            $fuid=$rrb['id'];
            $sqlcc=$empire->query("select id,classid from {$dbtbpre}moretags_子信息所在数据表名_关联字段名 where tagid='$fuid' order by newstime limit 99999");
            while($ccr=$empire->fetch($sqlcc)){
                //第二层循环 调用当前父信息下的其它子信息
                $rr2=$empire->fetch1("select id,title,titleurl from {$dbtbpre}ecms_".$class_r[$ccr['classid']]['tbname']." where id='$ccr[id]' limit 1");
                if($rr2['id']){
                    $allstr.='<a href="'.$rr2['titleurl'].'" title="'.$rr2['title'].'">'.$rr2['title'].'</a> ';
                }
            }
        }
    }
    
    echo $allstr;
    ?>

    综合使用教程

    用MoreTags插件仿7猫影视网

    教程地址:https://www.bilibili.com/video/BV1mK4y1m7yy

    仿站吧,一个优质的源码资源平台!
    仿站吧 » 帝国cms MoreTags插件 使用文档