vBSEO:功能最强大,维护最简单的插件,成熟大气,但是商业程序,价格也不菲
Zoints SEO:是开源且免费,但是功能和vBSEO相距甚远,又不能友好的设置改写规则(至少我没找到)
vRewrite:VBORG的Premium Modifications,也是纯hook实现的插件,同时又有了规则的选择支持,不过预设的规则很少,不修改这个规则的话,中文论坛虽然使用上没问题,但总给人感觉是有垃圾存在URL中。大概是以apache作基准平台吧,因为rewrite的语法不同,默认的规则只有手动修改才能在IIS下工作。
vB_Ranking:这款插件可以说是现在四个插件中最简单最简单的一个,纯hook实现,不需要修改模板,没有其他杂七杂八的功能,朴实无华但很实用,我个人很喜欢,缺点是rewrite的规则千篇一律,对于修改规则来说,我还没有进行尝试。由于开发于3.5.0 rc3阶段,兼容性也需要测试。
但是以插件的形式来实现的这4个插件,似乎存在一个共同的问题,就是性能问题。以vBSEO来说,他的rewrite规则是将页面改写到vbseo.php,再由vbseo.php根据设置的规则查找对应的页面并输出内容,因为他是加密不开源的,所以细节的东西无法知道,也不好多说。剩下的三个插件主要是是通过在hook的相应位置执行str_replace之类的语句,将输出的html内容进行替换,最终输出在浏览器上。要想知道细节方面的东西,就需要有丰富PHP开发经验的高手研究一下程序的工作机制,比如有没将某些东西进行缓存来减少程序的运算,还需要大量的用户测试和对比才能得到具体结论,我这里只是一种猜测。
所以简单来说,就是把输出的html中特定的连接url换了一下,而修改模板中输出的内容是最直接也最节能的办法。因为修改起来特别麻烦,所以这种办法不适合安装有大量模板的人使用,下面我就说下我的总结。
这个办法我用了两天两宿才基本完成了修改和测试等工作,在模板方面,可以通过搜索forumdisplay.php、showthread.php、showpost.php等文件名的方法获取哪些模板需要修改,这个静态化的程度也可以完全自己掌握,像“快速链接、上一主题、下一主题、转到首个未读回复”这样的地方要不要作完全可以自己选择,灵活度很高。但最好事先规划好要修改的地方,设计好URL规则和ISAPI_Rewrite的规则,不然很可能越搞头越大。同时我放弃了一些论坛上原有的不常用功能,比如搜索以后的highlightwords。
模板方面比较容易,值得一提的是,这里我用到了一个hook和三个分页的相关模板,不然在各种分页时候会混乱,为确保forumdisplay.php中各种排序的正常工作,也不得不用到这个hook。
PHP 代码:
<?xml version="1.0" encoding="UTF-8"?>
<plugins>
<plugin active="1" executionorder="5" product="ad184">
<title>伪静态_pagenav</title>
<hookname>pagenav_page</hookname>
<phpcode><![CDATA[global $foruminfo,$threadid;
$sort = $_GET[sort];
$page = $_GET[page];
$pp = $_GET[pp];
$order = $_GET[order];
//这里是为了识别,是伪静态的URL还是forumdisplay.php中的排序
if (!$sort and !$page and !$pp and !$order)
{
$address3 = "forum$foruminfo[forumid]";
$address4 = ".html";
$address5 = "thread".$threadid;
$prefix_temp = "-";
} else {
$address3 = $address;
$address4 = $address2;
$address5 = $address;
$prefix_temp = "&page";
}]]></phpcode>
</plugin>
</plugins>
有两个模板的修改要特别一提,分别是pagenav_pagelink、pagenav_pagelinkrel用来控制翻页的页数的。这里我主要修改的就是$address和$address2分别改为$address3、$address4、$address5,并且把连接符号换成了$prefix_temp,他们的值取决于上面的hook
PHP 代码:
<if condition="THIS_SCRIPT=='forumdisplay'">
<td class="alt1"><a class="smallfont" href="$address3<if condition="$curpage != 1">$prefix_temp$curpage</if>$address4" title="<phrase 1="$pagenumbers[first]" 2="$pagenumbers[last]" 3="$total">$vbphrase[show_results_x_to_y_of_z]</phrase>">$curpage</a></td>
</if>
<if condition="THIS_SCRIPT=='showthread' || THIS_SCRIPT=='showpost'">
<td class="alt1"><a class="smallfont" href="$address5<if condition="$curpage != 1">$prefix_temp$curpage</if>$address4" title="<phrase 1="$pagenumbers[first]" 2="$pagenumbers[last]" 3="$total">$vbphrase[show_results_x_to_y_of_z]</phrase>">$curpage</a></td>
</if>
<if condition="THIS_SCRIPT!='forumdisplay' AND THIS_SCRIPT!='showthread' AND THIS_SCRIPT!='showpost'">
<td class="alt1"><a class="smallfont" href="$address<if condition="$curpage != 1">&page=$curpage</if>$address2" title="<phrase 1="$pagenumbers[first]" 2="$pagenumbers[last]" 3="$total">$vbphrase[show_results_x_to_y_of_z]</phrase>">$curpage</a></td>
</if>








【原创】壮举!修改模板实现vBB伪静态!










平板模式