自由者CG
标题:
discuz x3.2主题和标签分类伪静态教程
[打印本页]
作者:
Freeman
时间:
2016-9-12 08:50
标题:
discuz x3.2主题和标签分类伪静态教程
Discuz X3.2默认是禁止搜索引擎访问 misc.php 文件的,因此 tag 不会被收录。
我们可以将 tag 网址伪静态化,这样不仅使 tag 网址看上去更规范美观,还使 tag 页面可以被百度收录。
第一步,复制根目录下的 misc.php 文件为 misc_tag.php 文件,删除其中的
$discuz->reject_robot();
复制代码
(否则搜索引擎无法访问)。
第二步,增加伪静态规则(以Nginx为例)。
rewrite ^([^\.]*)/tag.html$ $1/misc_tag.php?mod=tag last;
rewrite ^([^\.]*)/tag-([1-9][0-9]*)-1\.html$ $1/misc_tag.php?mod=tag&id=$2 last;
rewrite ^([^\.]*)/tag-([1-9][0-9]*)-([2-9]|[1-9][0-9]+)\.html$ $1/misc_tag.php?mod=tag&id=$2&type=thread&page=$3 last;
注意:必须添加在
rewrite ^([^\.]*)/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ $1/plugin.php?id=$2:$3 last;
复制代码
此行之前的任意位置。添加后需要 重载 或 关闭后再启动 Nginx后生效(仅直接重启无效)。
该规则使 tag标签页面 支持以网址 tag-标签编号-标签页数.html 访问指定标签页面。
第三步,修改Discuz程序,使 tag链接 由原有的动态链接换为伪静态链接。
1、打开 template/default/tag/tagitem.htm 模板文件
将
<a class="xi2" href="misc.php?mod=tag&id=$id&type=thread">{lang more}...</a>
复制代码
修改为:
<a class="xi2" href="tag-$id-2.html">{lang more}...</a>
复制代码
将
<a class="xi2" href="misc.php?mod=tag&id=$id&type=blog">{lang more}...</a>
复制代码
修改为:
<a href="misc.php?mod=tag&id=$id&type=blog" class="xi2" style="font-weight: bold;">{lang more}...</a>
复制代码
将
<a href="misc.php?mod=tag">{lang tag}</a>
复制代码
修改为:
<a href="tag.html">{lang tag}</a>
复制代码
将
<a href="misc.php?mod=tag&id=$id">$tagname</a>
复制代码
修改为:
<a href="tag-$id-1.html">$tagname</a>
复制代码
将
<!--{loop $threadlist $thread}-->
复制代码
修改为
{eval $tiaoshu = 0}<!--{loop $threadlist $thread}-->{eval $tiaoshu ++;}
复制代码
将第一个
<!--{if empty($showtype)}-->
复制代码
修改为
<!--{if empty($showtype) && $tiaoshu >= 20}-->
复制代码
将
action="misc.php?mod=tag"
复制代码
修改为
action="tag.html"
复制代码
2、修改翻页按钮。
打开 source/module/misc/misc_tag.php 文件,
将
$multipage = multi($count, $tpp, $page, "misc.php?mod=tag&id=$tag[tagid]&type=thread");
复制代码
修改为
$multipage = multi_guide($count, $tpp, $page, "tag-$tag[tagid]");
复制代码
打开 source/function/function_core 文件,在
function simplepage($num, $perpage, $curpage, $mpurl) {
复制代码
前面增加一段(定义multi_guide):
function multi_guide($num, $perpage, $curpage, $mpurl, $maxpages = 0, $page = 10, $autogoto = FALSE, $simple = FALSE, $jsfunc = FALSE) { return $num > $perpage ? helper_page_guide::multi($num, $perpage, $curpage, $mpurl, $maxpages, $page, $autogoto, $simple, $jsfunc) : ''; }
进入 source/class/helper/ 目录,将 helper_page.php 复制一份命名为 helper_page_guide.php 。
并依次修改 helper_page_guide.php 文件中的以下部分:
将 helper_page 修改为 helper_page_guide (共两处,其中文件头注释中的那处无关紧要);
将
$pagevar = 'page=';
复制代码
修改为
$pagevar = '-';
复制代码
将
$jsurl = $mpurl.(strpos($mpurl, '{page}') !== false ? '\'.replace(\'{page}\', this.value == 1 ? \'\' : this.value)': $pagevar.'\'+this.value;').'; doane(event);';
复制代码
修改为
$jsurl = substr($mpurl, 0, -1).(strpos($mpurl, '{page}') !== false ? '\'.replace(\'{page}\', this.value == 1 ? \'\' : this.value)': $pagevar.'\'+this.value').'+\'.html\'; doane(event);';
复制代码
(此项操作使手动输入页码翻页时链接静态化)
将
return $mpurl.$separator.$pagevar.$page;
复制代码
修改为
return substr($mpurl, 0, -1).$separator.$pagevar.$page.'.html';
复制代码
(翻页页码链接静态化)
3、修改title。
打开 source/module/misc/misc_tag.php 文件,
将
$navtitle = $tagname ? $taglang.' - '.$tagname : $taglang;
复制代码
修改为:
$navtitle = $tagname ? $tagname.$title_page.' - '.$taglang : $taglang;
复制代码
并在其前面加入一行:
if($_GET['page']) { $title_page = '(第'.$_GET['page'].'页)'; }
复制代码
4、使tag首页列出的tag链接和搜索按钮伪静态化。
打开 template/default/tag/tag.htm 模板文件,
将
<a href="misc.php?mod=tag&id=$tag[tagid]" title="$tag[tagname]" target="_blank" class="xi2">$tag[tagname]</a>
复制代码
修改为:
<a href="tag-$tag[tagid]-1.html" target="_blank" class="xi2">$tag[tagname]</a>
复制代码
将
action="misc.php?mod=tag"
复制代码
修改为
action="tag.html"
复制代码
5、修改帖子页面上的tag链接,使其静态化。
打开 template/default/forum/viewthread_node_body.htm 模板文件(部分模板可能在 viewthread_node.htm 文件中,自行查找),
将
misc.php?mod=tag&id=$var[0]
复制代码
(部分模板可能不只一处,搜索查找确认),修改为
tag-{echo intval($var[0])}-1.html
复制代码
6、修改标签不存在时返回标签首页的链接。
打开 source/language/tag/lang_template.php 文件,
将
<a href="misc.php?mod=tag" title="返回标签首页">返回标签首页</a>
复制代码
修改为
<a href="tag.html" style="font-weight: bold;">返回标签首页</a>
复制代码
第四步(可选),附加优化。
1、打开 template/default/tag/tagitem.htm 模板文件,
删除
<h1 class="mt"><img class="vm" src="{IMGDIR}/tag.gif" alt="tag" /> {lang tag}: $tagname</h1>
复制代码
可以去掉列表上方的“标签:XXX”字样(重复,影响美观)。
将
<th><h2>{lang related_thread}</h2></th>
复制代码
修改为
<th><h2>包含关键字 $tagname 的{lang related_thread}</h2></th>
复制代码
可以将“相关帖子”替换为“包含关键字 XXX 的相关帖子”。
将
<h2>{lang related_blog}</h2>
复制代码
修改为
<h2>包含关键字 $tagname 的{lang related_blog}</h2>
复制代码
可以将“相关日志”替换为“包含关键字 XXX 的相关日志”。
将
<p class="emp">{lang no_content}</p>
复制代码
(共两处)替换为
<p class="emp" style="padding-left:30px;">{lang no_content}</p>
复制代码
可将“没有相关内容”字样右移30px,使之与存在的内容标题对齐。
将
<p class="emp">{lang empty_tags}</p>
复制代码
替换为
<p>{lang empty_tags}</p>
复制代码
2、SEO,优化TAG页面上的内容列表。自行修改 template/default/tag/tagitem.htm 模板文件,给作者链接加上 nofollow ,去除查看数、最后回帖作者、最后回帖时间上的链接。
3、让不存在的TAG页面返回404状态码。修改 source/module/misc/misc_tag.php 文件,
在
include_once template('tag/tagitem');
复制代码
前加入以下代码:
if($_GET['id'] && (!$tagname || !$threadlist) && $type != 'blog') {header("HTTP/1.1 404 Not Found");header("Status: 404 Not Found");}
复制代码
作者:
zero_abr
时间:
2021-8-14 21:14
真是难得给力的帖子啊。
欢迎光临 自由者CG (https://bbs.zhise168.com/)
Powered by Discuz! X3.4