首页 > 学习 文章正文

帝国cms 超级TAG管理 帮助文档

学习 2022-05-15 19:08:59
后台-插件-广告管理-内容页头部广告(手机)

-----------------------------------------------------------------------------
插件名称:超级TAG管理
插件作者:东坡网
官方网站:dp1037.com
----------------------------

-----------------------------------------------------------------------------
插件名称:超级TAG管理
插件作者:东坡网
官方网站:dp1037.com
-----------------------------------------------------------------------------
东坡网——致力于帝国cms插件和二次开发,为帝国cms加油!
-----------------------------------------------------------------------------

帮助文档:

http://dp1037.com/help/itag/

超级TAG管理 功能简介
一、TAG展示新增功能
1、TAG拼音功能,TAG的链接可以用拼音展示;

2、TAG可以生成静态文件,TAG静态链接四种方式可选;

3、TAG可以动态或伪静态展示;

4、带有TAG分类页,展示所有tag;

5、TAG动态页自带缓存功能;

6、TAG新增图片字段,上传图片,并可以在附件里管理图片;

7、TAG新增编辑器字段,可以储存更多资料。

二、管理新增功能
1、新增、修改信息,自动更新当前TAG

2、带分词功能,从标题提取TAG 和 批量提取TAG,支持火车头发布时自动提取

3、从信息列表推送信息到TAG

4、批量同步TAG到关键字替换

5、TAG可以单独设置模板

6、可以批量增加TAG

7、TAG批量关联信息

第二步:数据表安装
1、在浏览器地址栏中输入 http://你的网站地址/e/dongpo/itag/install/ 回车执行安装程序

2、选择“安装”,然后按照提示执行下一步操作

3、看到“安装数据库成功”表示安装数据库成功

4、为确保完全,将 /e/dongpo/itag/ 目录下的 install 文件夹删除或改名

可能出现的错误及处理方法:
(1)提示:安装程序已锁定

解决:将 /e/dongpo/itag/install/ 目录下的 install.off 文件删除

(2)提示:Table ... already exists

解决:先执行“卸载”,再执行“安装”

打开 e/class/userfun.php 文件,在 ?> 之前一行插入如下代码:

function dp_itagLink($tagid,$tagname=''){
    include_once(ECMS_PATH.'e/dongpo/itag/dp_funs.php');
    $url=dp_itag_url($tagid,$tagname);
    return $url;
}

function dp_itagClassLink($cid){
    include_once(ECMS_PATH.'e/dongpo/itag/dp_funs.php');
    $url=dp_itag_curl($cid);
    return $url;
}

function dp_itagHtml($classid,$id){
    global $empire,$dbtbpre,$dp_itag;
    include_once(ECMS_PATH.'e/dongpo/itag/dp_funs.php');
    if(empty($dp_itag)){
        $sr=$empire->fetch1("select * from {$dbtbpre}dp_itag_set where k='all'");
        $dp_itag=json_decode($sr['v'],true);
        if(empty($dp_itag)){
            return false;
        }
    }
    $sql=$empire->query("select tagid from {$dbtbpre}enewstagsdata where classid='$classid' and id='$id'");
    while($r=$empire->fetch($sql)){
        $add=$empire->fetch1("select * from {$dbtbpre}enewstags where tagid='$r[tagid]' limit 1");
        $addr=$empire->fetch1("select * from {$dbtbpre}dp_itag where tagid='$r[tagid]' limit 1");
        if(!$dp_itag['ishtml']){
            iTagDelCache($addr['tagid'],$addr['py']);
        }else{
            iTagHtml($add,$addr);
        }
    }
}


伪静态设置
1、只有TAG页面模式为 动态页面 时,才需要设置伪静态

2、设置步骤:

(1)在插件 参数设置 页面,设置好TAG伪静态规则

(2)根据伪静态规则,设置服务器的伪静态规则

TAG伪静态网址说明:
(1)支持三种标签,TAGID:[!--tagid--] TAG拼音:[!--tagpy--] 分页号:[!--page--]

(2)[!--tagpy--] 和 [!--tagid--] 不能同时使用

(3)以 tagid 为规则的网址,对应的网址是 e/tags/itag.php?tagid=[!--tagid--]&page=[!--page--]

(4)以 tagpy 为规则的网址,对应的网址是e/tags/itag.php?py=[!--tagpy--]&page=[!--page--]

分类伪静态网址说明:
(1)支持两种标签,TAG分类ID:[!--cid--] 分页号:[!--page--]

(2)对应的网址是 e/tags/itaglist.php?cid=[!--cid--]&page=[!--page--]

例子:
(1)一个网站的TAG网址伪静态规则设置如下:

TAG不含分页网址:/
tag/[!--tagpy--].html

TAG含有分页网址:/
tag/[!--tagpy--]_[!--page--].html

分类不含分页网址:/
tag/list_[!--cid--]

分类含有分页网址:/
tag/list_[!--cid--]_[!--page--]

(2)那么根据不同WEB服务器,服务器伪静态规则不同,如下:

.htaccess

RewriteEngine On

#tag拼音网址规则 (如果以tagid为网址,则将py改成tagid)
RewriteRule ^tag/([a-z0-9]+)_([0-9]+).html$ e/tags/itag.php?py=$1&page=$2
RewriteRule ^tag/([a-z0-9]+).html$ e/tags/itag.php?py=$1

#tag分类网址规则
RewriteRule ^tag/list_([0-9]+)_([0-9]+)$ e/tags/itaglist.php?cid=$1&page=$2
RewriteRule ^tag/list_([0-9]+)$ e/tags/itaglist.php?cid=$1

Nginx

#tag拼音网址规则 (如果以tagid为网址,则将py改成tagid)
rewrite ^([^\.]*)/tag/([a-z0-9]+)_([0-9]+).html$ $1/e/tags/itag.php?py=$2&page=$3 last;
rewrite ^([^\.]*)/tag/([a-z0-9]+).html$ $1/e/tags/itag.php?py=$2 last;

#tag分类网址规则
rewrite ^([^\.]*)/tag/list_([0-9]+)_([0-9]+)$ $1/e/tags/itaglist.php?cid=$1&page=$2 last;
rewrite ^([^\.]*)/tag/list_([0-9]+)$ $1/e/tags/itaglist.php?cid=$1 last;

httpd.ini

[ISAPI_Rewrite]
CacheClockRate 3600
RepeatLimit 32

#tag拼音网址规则 (如果以tagid为网址,则将py改成tagid)
RewriteRule ^tag/([a-z0-9]+)_([0-9]+).html$ e/tags/itag.php?py=$1&page=$2
RewriteRule ^tag/([a-z0-9]+).html$ e/tags/itag.php?py=$1

#tag分类网址规则
RewriteRule ^tag/list_([0-9]+)_([0-9]+)$ e/tags/itaglist.php?cid=$1&page=$2
RewriteRule ^tag/list_([0-9]+)$ e/tags/itaglist.php?cid=$1

web.config

<rules>
    <rule name="itagpage">
        <match url="^(.*/)*tag/([a-z0-9]+)_([0-9]+)\.html\?*(.*)$" />
        <action type="Rewrite" url="{R:1}/e/tags/itag.php\?py={R:2}&page={R:3}" />
    </rule>
    <rule name="itag">
        <match url="^(.*/)*tag/([a-z0-9]+)\.html\?*(.*)$" />
        <action type="Rewrite" url="{R:1}/e/tags/itag.php\?py={R:2}" />
    </rule>
    <rule name="listtagpage">
        <match url="^(.*/)*tag/list_([0-9]+)_([0-9]+)\?*(.*)$" />
        <action type="Rewrite" url="{R:1}/e/tags/itaglist.php\?cid={R:2}&page={R:3}" />
    </rule>
    <rule name="listtag">
        <match url="^(.*/)*tag/list_([0-9]+)\?*(.*)$" />
        <action type="Rewrite" url="{R:1}/e/tags/itaglist.php\?cid={R:2}" />
    </rule>
</rules>

动态页缓存设置
1、默认没有开启缓存功能,只有设置TAG为动态页面,才需要使用缓存功能

2、缓存功能开启,以及配置,需要修改配置文件 e/dongpo/itag/cache_config.php

3、网站目录一定要以“/”结尾,填写示例:

windows系统填写格式:  G:/web/website/

linux系统填写格式:    /data/wwwroot/demo/

如何快速查看网站目录?
打开页面:系统 》网站多访问端 》管理网站访问端 》增加访问端

在页面展示的表单中,可以看到 访问端目录 ,就是这里需要填写的网站目录

TAG页自动更新
1、TAG页自动更新是指,新增、修改信息时,可以更新信息的TAG页。更新包含静态tag生成和动态tag缓存更新。

2、修改方法

(1)打开文件 e/class/hinfofun.php

(2)查找 
GetHtml($add['classid'],$id,'',0);
,在其下一行插入代码:

dp_itagHtml($add['classid'],$id);
修改后的代码如图1:


(3)查找 
GetHtml($add['classid'],$add['id'],'',0);
,共有两处,在其下一行插入代码:

dp_itagHtml($add['classid'],$add['id']);
修改后的代码如图2:

从标题提取TAG和批量提取
一、从标题提取TAG
1、当信息标题存在且关键字为空时,鼠标点击一下 关键字 输入框,程序会将标题分词,提取词语,填充到 关键字 和 TAGS 里。


2、实现此功能:

(1)进入页面:系统 》 数据表与系统模型 》管理数据表,点击需要使用本功能的数据表后的 管理字段

(2)修改 title 字段,在 输入表单替换html代码 中,第一行加入代码:

<?php include_once("../dongpo/itag/getword.php");?>
修改后变成如图所示:


二、批量提取TAG
1、在本插件管理菜单中,点击“批量操作”,就可以看到“批量提取TAG”界面


2、建议提取到临时表,可以避免将提取到的垃圾词入库成tag

3、提取到临时表后,需要在“临时TAG”页面中对临时tag执行“入库”操作,才能临时tag真正变成tag

4、“一键入库”功能,是将所有信息数大于1的临时tag入库

自动提取TAG设置
自动提取标题中的词语作为tag和关键字
打开 e/class/hinfofun.php, 找到

$add['infotags']=hRepPostStr($add['infotags'],1);

在其下一行插入代码:

    if(empty($add['infotags'])){
        include_once(ECMS_PATH.'e/dongpo/itag/pscws/tiqu2.php');
        $add['infotags'] = itag_tiqu($add[title]);
        if(empty($add[keyboard])){
            $add[keyboard] = $add['infotags'];
        }
    }

说明
只有当信息的infotags字段为空时,才会执行此程序

从信息列表推送信息到TAG
1、在信息列表页,增加一个推送至TAG按钮,方便信息推送到tag。


2、实现此功能:

(1)打开信息列表模板文件 e/data/html/list/listinfo.php

(2)找到代码 </script> 在其上一行插入代码:

function PushInfoToTag(form){
  var id='';
  id=GetSelectId(form);
  if(id==''){
    alert('请选择要推送的信息');
    return false;
  }
  window.open('../dongpo/itag/push.php?<?=$ecms_hashur['ehref']?>&classid=<?=$classid?>&id='+id,'PushToTag','width=600,height=600,scrollbars=yes,left=300,top=150,resizable=yes');
}

(3)找到代码 <input type="button" name="Submit112" value="推送 在其上一行插入代码:

<input type="button" name="Submit52" value="推送至TAG" onClick="PushInfoToTag(this.form);">
(4)刚才找到的“推送”是推送的碎片,不需要此功能的可以顺手将此行删除,或者修改为“推送至碎片”以方便区分

同步功能详解
重要问题:同步到哪里?
执行“同步”操作后,TAG将写入内容关键字数据表,具体位置:其它 》 新闻模型相关 》 内容关键字 ,如图:


“内容关键字”是用来替换文章内容词语,给词语加链接的。如果不详细了解“替换关键字”,请勿使用本插件的同步功能。

TAG图片功能详解
1、tag图片可以通过三处上传:输入框图片上传、编辑器图片上传、编辑器多图上传。支持生成缩略图、加水印功能。如图:


2、图片会统一上传到 d/file/p/ 目录

3、图片会写入公共附件数据表 phome_enewsfile_public ,表中字段 id 表示 tagid

4、可以通过后台附件管理功能,管理tag图片


5、删除tag时,tag所属图片会被同步删除

TAG模板自定义
有三处可以设置TAG模板:

(1)TAG新增/修改 页面,tag所属模板,优先级最高


(2)分类管理中,此分类下tag使用的模板,优先级居中


(3)插件管理的 参数设置 ,设置TAG默认列表模板,优先级最低

TAG页模板内的调用
1、当前tag的所有相关字段数组名:$navinfor,可以用 <?=$navinfor[字段名]?>获取相关值

tagid:                  <?=$navinfor[tagid]?>

tag名:                  <?=$navinfor[tagname]?>

信息数:                 <?=$navinfor[num]?>

推荐等级:               <?=$navinfor[isgood]?>

tag分类id:              <?=$navinfor[cid]?>

tag网页标题:            <?=$navinfor[tagtitle]?>

tag网页关键词:          <?=$navinfor[tagkey]?>

tag网页描述:            <?=$navinfor[tagdes]?>

最后修改时间(时间戳):    <?=$navinfor[fclast]?>

设置的tag模板id:         <?=$navinfor[tempid]?>

tag拼音:                 <?=$navinfor[py]?>

tag图片:                 <?=$navinfor[tagpic]?>

tag单页内容:             <?=$navinfor[tagtext]?>

tag链接:                 <?=$navinfor[tagurl]?>

2、上一个TAG

[e:loop={"select * from {$dbtbpre}enewstags where tagid<$navinfor[tagid] order by tagid desc limit 1",0,24,0}]
<a href=" <?=dp_itagLink($bqr[tagid])?>" target="_blank"> <?=$bqr['tagname']?></a>
[/e:loop]

3、下一个TAG

[e:loop={"select * from {$dbtbpre}enewstags where tagid>$navinfor[tagid] order by tagid limit 1",0,24,0}]
<a href=" <?=dp_itagLink($bqr[tagid])?>" target="_blank"> <?=$bqr['tagname']?></a>
[/e:loop]

4、同分类下的其它TAG 10个,没有分类id时返回空

<?php
if($navinfor['cid']){
?>
[e:loop={"select * from {$dbtbpre}enewstags where cid=$navinfor[cid] and tagid!=$navinfor[tagid] order by tagid limit 10",0,24,0}]
<a href=" <?=dp_itagLink($bqr[tagid])?>" target="_blank"> <?=$bqr['tagname']?></a>
[/e:loop]
<?}?>
分类页模板内的调用
分类页模板 的 列表内容模板(list.var) 使用的标签:

//以下几项,在代码模式中,用$r数组可以调用出来 

tagid:                  [!--tagid--]

tag名:                  [!--tagname--]

信息数:                 [!--num--]

推荐等级:               [!--isgood--]

tag分类id:              [!--cid--]

tag网页标题:            [!--tagtitle--]

tag网页关键词:          [!--tagkey--]

tag网页描述:            [!--tagdes--]

最后修改时间(时间戳):    [!--fclast--]

//以下三项,也可以在代码模式中,用$ta数组调用出来 

tag链接:                 [!--tagurl--]

tag拼音:                 [!--py--]

tag图片:                 [!--tagpic--]



调用信息的TAG
1、调用信息TAG的函数,放进 e/class/userfun.php 文件 ?> 代码之前,方便在模板中调用

/***
$classid   信息栏目id
$id        信息id
$exp       包裹每一个tag的前后标签,用|分割,默认是<li><a href="">TAG</a></li>
$limit     调用tag数量,默认10个
***/
function dp_InfoTag($classid,$id,$exp="<li>|</li>",$limit=10){
    global $dbtbpre,$empire,$public_r;
    $tagstr='';
    $i=0;
    $q=explode("|",$exp);
    $tsql=$empire->query("select tagid from {$dbtbpre}enewstagsdata where id=".$id." and classid=".$classid."");
    while($tr=$empire->fetch($tsql)){
        $tt=$empire->fetch1("select * from {$dbtbpre}enewstags where tagid=".$tr['tagid']." limit 1");
        if($tt['tagid']){
            if($i>$limit&&$limit){
                break;
            }
            $tagurl=dp_itagLink($tr['tagid']);
             $tagstr.=$q[0].'<a href="'.$tagurl.'" title="'.$tt['tagname'].'" class="c1" target="_blank">'.$tt['tagname'].'</a>'.$q[1];
            $i+=1;
        }
    }
    return $tagstr;
}

2、在内容页模板中使用上述dp_InfoTag函数,调用当前信息的tag

<?=dp_InfoTag($navinfor['classid'],$navinfor['id'],'|<br>',8)?>
3、在列表页中,列表内容模板(list.var) 使用dp_InfoTag函数的例子:

$tagstr=dp_InfoTag($r['classid'],$r['id'],'| ',5);

$listtemp='
<li>
    <h3><a href="[!--titleurl--]">[!--title--]</a></h3>
    <p>[!--smalltext--]</p>
    TAG:'.$tagstr.'
</li>
';

注意需要勾选使用程序代码。帝国CMS官网:list.var使用程序代码说明

4、灵动标签中使用dp_InfoTag函数的例子:

[e:loop={灵动标签调用语句}]
<?
$thistagstr=dp_InfoTag($bqr['classid'],$bqr['id'],'| ',10);
?>
<a href="" target="_blank"></a>
TAG: <?=$thistagstr?>
[/e:loop]


调用多个TAG
1、调用最新10个tag

<?
$tsql=$empire->query("select * from {$dbtbpre}enewstags order by tagid desc limit 10");
while($tr=$empire->fetch($tsql)){
    $tagurl=dp_itagLink($tr['tagid']);
?>
    <li><a href=""><?=$tr['tagname']?></a>(<?=$tr['num']?>)</li>
<?}?>

2、按分类调用TAG

<?
$tcsql=$empire->query("select * from {$dbtbpre}enewstagsclass where classid>0 order by classid desc");
while($tcr=$empire->fetch($tcsql)){
    $tagclassurl=dp_itagClassLink($tcr['classid']);
?>
   <div class="showtag">
    <h3><a href="<?=$tagclassurl?>"><?=$tcr['classname']?></a></h3>
         <ul>
    <?
    $tsql=$empire->query("select * from {$dbtbpre}enewstags where cid=".$tcr['classid']." order by tagid desc limit 10");
    while($tr=$empire->fetch($tsql)){
        $tagurl=dp_itagLink($tr['tagid']);
    ?>
        <li><a href="<?=$tagurl?>"><?=$tr['tagname']?></a>(<?=$tr['num']?>)</li>
    <?
    }
    ?>
        </ul>
  </div>
<?
}
?>

3、按照tag拼音字母顺序调用

<?php
$zm_r=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
?>
<div class="zmlist">
    字母:
    <?
    foreach($zm_r as $zm){
    ?>
        <a href="#<?=$zm?>"><?=strtoupper($zm)?></a>
    <?
    }
    ?>
</div>
<div class="taglist">
<?
foreach($zm_r as $zm){
?>
<h3><a name="<?=$zm?>"><?=strtoupper($zm)?></a></h3>
<ul>
    <?
        $zsql=$empire->query("select tagid from {$dbtbpre}dp_itag where py like '".$zm."%' order by tagid desc");
        while($zr=$empire->fetch($zsql)){
            $t=$empire->fetch1("select * from {$dbtbpre}enewstags where tagid='$zr[tagid]' limit 1");
            $tagurl=dp_itagLink($zr[tagid]);
            ?>
            <li><a href="<?=$tagurl?>"><?=$t['tagname']?></a></li>
            <?
        }
    ?>
</ul>
<?
}
?>
</div>

4、在栏目页模板,根据tag分类绑定的栏目,调用此栏目下的TAG

<?php
$bdsql=$empire->query("select * from {$dbtbpre}dp_itag_class where modid='$navclassid'");
while($bdr=$empire->fetch($bdsql)){
    $cid=$bdr['classid'];
    $tcsql=$empire->query("select * from {$dbtbpre}enewstagsclass where classid='$cid' order by classid desc");
    while($tcr=$empire->fetch($tcsql)){
        $tagclassurl=dp_itagClassLink($tcr['classid']);
    ?>
       <div class="showtag">
        <h3><a href="<?=$tagclassurl?>"><?=$tcr['classname']?></a></h3>
             <ul>
        <?
        $tsql=$empire->query("select * from {$dbtbpre}enewstags where cid=".$tcr['classid']." order by tagid desc limit 10");
        while($tr=$empire->fetch($tsql)){
            $tagurl=dp_itagLink($tr['tagid']);
        ?>
            <li><a href="<?=$tagurl?>"><?=$tr['tagname']?></a>(<?=$tr['num']?>)</li>
        <?
        }
        ?>
            </ul>
      </div>
    <?
    }
}
?>




 
后台-插件-广告管理-内容页尾部广告(手机)

标签: 帝国CMS 

帝国cms 超级TAG管理 帮助文档Copyright @ 2022 All Rights Reserved. 版权所有 备案号:辽ICP备10018320号-18 帝国CMS强力驱动 站长微信:jiangeseo