“学会接受并欣赏命运发给我们的牌,也许会有意想不到的乐趣。
我总认为,坦然的心境就是感受到幸福的理由。”

关于f2blog内容过滤器无效的问题代码

这篇文章接续上次弄出来的补丁。
http://www.rainboww.net/home/read-157.html
说起来上次还卖关子,实在羞愧,胡乱发出来个补丁包却不对问题的症结进行解释。
如今f2官网也无法访问,感觉很是凄凉,先不论f2前途会如何,作为热爱这个程式的用户,希望能有些许的贡献。

正题。
出问题文件是 /include/function.php
内容过滤器无效的原因在这个replace_filter function, 代码如下:
function replace_filter($content){
	include_once("cache/cache_filters.php");
	if (!empty($filtercache1) && is_array($filtercache1)){
		foreach($filtercache1 as $value){
			if (strpos(";$content",$value)>0){
				return $value;
			}
		}
	}
	if (!empty($filtercache4) && is_array($filtercache4)){
		foreach($filtercache4 as $value){
			if (strpos(";$content",$value)>0){
				return $value;
			}
		}
	}
	return "";
}

这个function写的并没有问题,当时为此也纳闷了半天。问题其实只是出在这一行:
include_once("cache/cache_filters.php");

这个include_once会导致实际运行时候并不加载cache下面的cache_filters.php文件。所以等于没有任何filter,自然会无效了。
这就是问题的症结了。不过值得一提的是引号里面的写法也不够好,相对路径可能会造成问题。最好写全,其实程序里很多地方是写全路径了的,但也有很多地方没有,因为不同的作者在维护吧。其实就我测试过程中,并未遇到问题。
所以改成如下,就好了:
include(F2BLOG_ROOT."./cache/cache_filters.php");

然后上次那个补丁包里还有其他文件,只是修改了相对路径去完整写法。可以不必理会。
虽然只是一行,其实当时寻找问题的过程很是有趣。
尤其是最终察觉无论怎么改那个function,都没有filter的内容被加载,才恍然大悟是include出了问题。
Trackback: Click to get trackback URL
Tags: f2blog 程序 补丁
Comments: 8 | Trackbacks: 0 | Read: 327
Dicky [ 2008-11-06 18:27 Home | Reply | Edit/Del ]
謝謝你。我也被這個問題困擾了很久。
wnjo [ 2008-11-01 17:48 Home | Reply | Edit/Del ]
請問一下,那我修改時,是只要改include_once那一行就好
還是把補丁裡的檔案全部覆蓋在include資料夾?
謝謝!
风之逸 [ Replied on 2008-11-01 23:31 Home | Edit/Del ]
理论上修改那一行就有效。
你可以修改后以游客身份去测试一下过滤器是否生效了。
wnjo [ Replied on 2008-11-02 12:40 | Edit/Del ]
目前為止算是成功攔截,謝謝!
nono [ 2008-10-19 16:17 | Reply | Edit/Del ]
Secret Message
风之逸 [ Replied on 2008-10-19 19:38 Home | Edit/Del ]
请添加我的msn: wind(at)rainboww.net,电邮给我也可以~
我正有意寻找一起使用空间的blogger.
Sun [ 2008-10-08 17:28 Home | Reply | Edit/Del ]
受益良多。谢谢博主的提醒。
回头我也修改一下。
再次表示感谢。
风之逸 [ Replied on 2008-10-08 18:14 Home | Edit/Del ]
太客气了。虽说f2的前途不明朗,但也要先把自己的blog武装好啊~呵呵
  • 1 
Write New Comment
Nickname(*): Password:
Website: Email:
Verify(*): Validation Image Option:
Avatar:
Content(*):