织梦DEDECMS网站标签Tag静态化,生成静态页面

时间:2020-02-15 22:21 / 来源:未知 / 作者:酱油 / 点击:

织梦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行

$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,在底部空白处增加代码:

请点击打开代码

三、使用说明:

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有超过一页以上,静态分页就会出问题

1:修改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;
}
          
?>

点击下载织梦标签静态化代码

猜你喜欢

推荐栏目

DEDECMS
DEDECMS

DEDE使用经验和技巧

WordPress
Wordpress

WP使用经验和技巧

Zblog
Zblog

Zblog使用经验和技巧

CSS
CSS

CSS使用经验和技巧

网络资料
网络资料

转载实用网络资料

按键伤人
按键伤人

转载乱七八糟的网络资源

我是酱油
我是酱油

随笔札记 记录生活点滴

本站推荐

百度站内搜索

专业博客主机