织梦tag标签静态化

简要:
1.执行sql语句

ALTER TABLE `dede_tagindex` ADD `maketime` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0';

2.替换文件,提前备份
3.修改tag长度问题

ALTER TABLE `dede_tagindex` CHANGE `tag` `tag` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '';
ALTER TABLE `dede_taglist` CHANGE `tag` `tag` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '';

执行完SQL命令以后,再到源文件当中修改/include/helpers/archive.helper.php路径文件中的参数。

按快捷键CTRL+F查找:if(isset($tag[12])if(isset($tag[20])
然后再修改替换成:if(isset($tag[255]) ||
$tag!=stripslashes($tag))

4.修改tag首页,列表页
5.给本站head,foot加上热门标签,给文章页加上热门标签组;
6.全部生成;
**内容页随机调用标签组

{dede:tag row='40' sort='rand' getall='1'} 
<a href="[field:link/]">[field:tag /]</a></li>
{/dede:tag}

**内容页调用本页标签

 {dede:tag type='current'/}

**手机端内容页调用本页标签

{dede:field.id runphp='yes'}
global $cfg_cmspath;
$tags = GetTags(@me);
$revalue = '';
$tags = explode(',', $tags);
foreach($tags as $key => $value){
            if($value){
                $revalue .= '<a href="'.$cfg_cmspath.'/tags.php?/'.$value.'/">'.$value.'</a>, ';
   }
  }
@me = $revalue;
{/dede:field.id}

织梦TAGS标签静态化,相信很多朋友都需要这个功能,且都在网上了解过伪静态等,而本文主要讲解的是如果修改成静态的TAGS,而不是伪静态,资料均来自网上,且测试完毕,完全可以生成静态化标签,但是因为资料本身比较凌乱,所以在此整理下,方便自己也方便大家使用。(目前已经测试5.6和5.7版本,均可)

1:如果标签数量特别多,不建议使用。

2:如果网站数据特别庞大,同样不建议使用。

不建议使用的原因是因为数据太大,生成时间比较多(其实也就是几分钟而已,3万数据的站),每次更新都需生成一次,比较麻烦,不介意以上两点的朋友就继续往下看。

第一步:下载压缩包,压缩包含了UTF8和GBK两个版本,根据自己的需要进行操作,修改前,请备份相关的原始文件。

二、修改步骤:

1、在DEDE网站根目录,建立"tag"目录(小写)

2、在DEDE后台SQL运行器里,执行以下一条SQL:

ALTER TABLE `dede_tagindex` ADD `maketime` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0';

3、拷贝对应的文件到对应的目录中:

templets/default/list_tag.htm //可从文章列表页复制修改,举例为默认目录,可自行修改目录和样式

templets/default/index_tag.htm //可从tag.htm复制,举例为默认目录,可自行修改目录和样式

dede/makehtml_tag_action_list.php //后台目录,根据自己目录进行操作,举例为默认目录

dede/makehtml_tag_action_index.php //后台目录,根据自己目录进行操作,举例为默认目录

dede/makehtml_tag.php //后台目录,根据自己目录进行操作,举例为默认目录

dede/templets/makehtml_tag.htm //后台目录,根据自己目录进行操作,举例为默认目录

include/arc.taghtml.class.php

4、修改后台菜单文件dede/inc/inc_menu.php 143行,插入:

<m:item name='更新TAG静态' link='makehtml_tag.php' rank='sys_MakeHtml' target='main' />

5、修改相应文件,也可以直接用压缩包的对应文件进行覆盖

打开文件:include/taglib/tag.lib.php,找到代码,大概87行

1

$row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['keyword'])."/";

替换为:

//$row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['keyword'])."/";  //原DEDE代码,屏蔽
$row['link'] =  nic_tag_url($row['id']);    //新加代码,TAG静态化, by NIC

打开文件include/extend.func.php,在底部空白处增加代码:

//获取TAG静态地址,  by NIC
function nic_tag_url($tid)
{
    global $dsql;
    $sql = "select * from dede_tagindex  where id='$tid' ";
    if ($arcRow = $dsql->GetOne($sql)){    
            
       //$str = $GLOBALS['cfg_cmspath']."/tag/".ceil($tid/100)."/".Getpinyin($arcRow["tag"])."_".$tid."_1.html";  //目录结构为:每100个ID为一个目录,从 /tag/1/ 开始
            
       $pinyin_title = GetPinyin(stripslashes($arcRow["tag"]));
       $pinyin_title = str_replace("?","",$pinyin_title);
       $pinyin_title = str_replace(":","",$pinyin_title);
       $str = $GLOBALS['cfg_cmspath']."/tag/".$pinyin_title."_".$tid."_1.html";  //目录结构为:/tag/拼音_ID_1.html 开始
    }else $str="ID为$tid的TAG已被删除!";
     
    return $str;
}
     
     
//获取指定文章的TAG到相关TAG列表页的地址,  by NIC
function nic_arc_tag_link($aid)
{
    global $dsql;
    $sql = "select tid from dede_taglist  where aid='$aid' group by tid ";
    $dsql->Execute('ala',$sql);
    while($row=$dsql->GetObject('ala')){
       $url=nic_tag_url($row->tid);
       if ($arcRow = $dsql->GetOne("select * from dede_tagindex  where id='".$row->tid."' ")) $tag=$arcRow["tag"];
       else $tag="";
       $str.=" <a href='".$url."' target=_blank><b>".$tag."</b></a> ";
    }
    return $str;
}

三、使用说明:

1、进入后台"生成",即可看到左边的"更新TAG静态"(就在更新主页、栏目、文档等功能的下方)

2、自行编辑TAG列表页模板list_tag.htm、TAG首页模板index_tag.htm,都放在你站点模板所在目录即可(和首页模板、列表页模板、内容页模板等在一起)

3、生成有个选项"是否强制全部生成",它是为了节约资源设计的

如果是"重新生成全部TAG列表",它会更新所有的TAG的列表页;

如果是"仅更新上次生成后有变化的TAG",它则会只更新上次更新之后有变化及新增加的TAG的列表页,这个比较节约时间

4、生成的TAG首页,放在根目录,叫做tags.html

5、如果你的模板里,还有TAG需要指向到它的静态地址,则用参考这个函数去处理其标签即可:

{dede:tag type='current'}[field:id function="nic_tag_url(@me)" /]{/dede:tag}

其中的id就是这个TAG的ID号

在内容页如果想调用当前面页的URL,直接使用代码{dede:field.id function=‘nic_tag_url(@me)’/}即可

6、在内容页模板,如果想指向该文TAG的列表页,用以下标签即可:

{dede:field.id function='nic_arc_tag_link(@me)'/}

在文章列表页、arclist标签等,使用一下代码调用文章TAG列表

[field:id function='nic_arc_tag_link(@me)'/]

高级补充说明:

1、TAG这个目录可以改,修改arc.taghtml.class.php的146行和extend.func.php的15行,里面的tag/字样

2、文件名里的id号不能去掉,举例说因为"作业"和"昨夜"的拼音都一样,如果没有ID,他们的文件名就重复了。

(如果非要去掉ID,请按如下步骤修改:如果某个TAG有超过一页以上,静态分页就会出问题

`修改include/arc.taghtml.class.php,去掉    _".$this->Fields['id']."_".$this->PageNo."`
$makeFile = $this->Fields['typedir']."/".$pinyin_title."_".$this->Fields['id']."_".$this->PageNo.".html";

2:打开include/extend.func.php,去掉 _".$tid."_1

$str = $GLOBALS['cfg_cmspath']."/tag/".$pinyin_title."_".$tid."_1.html";


附:如果只需要去掉tag的tid数字,除此修改以上2点之外,以下代码需要修改一下(arc.taghtml.class.php中)

$tnamerule = $this->Fields['typedir']."/".Getpinyin($this->Fields['title'])."_".$this->Fields['id']."_{page}.html";

去掉

".$this->Fields['id']."_

这里还一个小问题,如果用了翻页,生成的翻页代码和栏目的翻页代码顺序是不一致的,这使得需要重新设置CSS,所以请在该页面搜索$plist = “”;,然后把下面的代码更换顺序即可。

3、生成速度和普通列表页一致的,因为是从哪里修改过来的。 你有1万个TAG,假定你每个TAG对应有30个文章吧,列表页10篇为一页,那就有3万篇了。

你可以到后台的sql运行工具里,执行这一句看看,就知道TAG对应文章之后,数量就远大于TAG数量本身:

select count(*) as c from dede_taglist

4、如果需要在发布新文章的时候,同时更新相关的TAG列表页,可以参考附带的inc_archives_functions.php,修改你DEDE后台目录dede/inc/inc_archives_functions.php

找到最后的代码

        $revalue = '';
    }
    return $revalue;
}
修改为

        $revalue = '';
    }
    //add by nic
    $sql="select tid from dede_taglist where aid=".$arcID;
    $dsql->Execute('al',$sql);
    while($row=$dsql->GetObject('al')){    
        $revalue .= "\r\n<iframe name='stafrm' frameborder='0' id='stafrm' width='100%' height='40px' src='makehtml_tag_action_list.php?typeid=".$row->tid."'></iframe><br>";     
    }              
    $revalue .= "\r\n<iframe name='stafrm' frameborder='0' id='stafrm' width='100%' height='100px' src='makehtml_tag_action_index.php'></iframe><br>";
    //add by nic
    return $revalue;
}
           
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值