WP-T-WAP URL靜態化

WP-T-WAP Version 1.9 Update:2008.06.26 發現一個錯誤.對 paged=?分頁參數只是重寫為 根目錄的分頁.而這個參數實際上還控制着category和tag頁的分頁.因此需要增加兩句RewriteRule代碼,對_get_pagenum_link函數修改也要重寫. 文中錯誤之處已經更改 WP-T-WAP是很好的Wordpress WAP插件.已經進入WP官方插件庫. 安裝WP-T-WAP後,可以通過http://yourBlogDomain.com/wap/地址WAP瀏覽/管理你的Blog. 如果綁定域名,則可以通過wap.yourBlogDomain.com 訪問。默認生成的內部鏈接地址是index.php?p= 形式。 通過修改,可以使其鏈接URL靜態化   以偶的Blog為例,WP安裝在 oogami.name 綁定wap.domain.com 域名到WP目錄下wap文件夾 編輯wap文件夾下.htaccess文件,加入下面代碼: RewriteEngine On RewriteBase / RewriteRule ^post/([0-9]+)$ index.php?p=$1 [L] RewriteRule ^comment/([0-9]+)$ comments.php?p=$1 [L] RewriteRule ^category/([0-9]+)$ index.php?cat=$1 [L] RewriteRule ^tag/(.*)$ index.php?tag=$1 [L] RewriteRule ^page/([0-9]+)$ index.php?paged=$1 [L] RewriteRule ^category/(.*)/page/([0-9]+)$ index.php?cat=$1&paged=$2 RewriteRule ^tag/(.*)/page/([0-9]+)$ index.php?tag=$1&paged=$2 然後就是修改插件文件,修改之處比較多 進入 WP安裝目錄下 /wp-content/plugins/wp-t-wap […]

Continue reading

中文(zh)語言下的Mediawiki URL靜態化問題

[未解決] 搗鼓mediawiki.發現一個繁簡共存下的偽靜態化問題。通常mediawiki的URL靜態化方法是在localsetting.php中設置 $wgArticlePath=”/wiki/$1″,然後在.htaccess中加入rewrite代碼。(當然如果是獨立服務器可以直接改httpd.conf)。然而這種方法只對安裝時選擇語言為英文的mediawiki有效;如果安裝時設置語言為『zh-中文』,那麼即使這樣修改,遊客訪問時,鏈接的地址仍然是「index?title=$1&variant=zh-cn」形式。因為『zh』是多種中文形式共存,除非已登錄用戶,mediawiki無法確定/wiki/$1形式網址應該顯示哪種語言。如果安裝時設置語言為『zh-cn简体中文』,則可以實現URL靜態化;但這時頁面上根本不會出現繁簡轉換的相關按鈕,即使手工輸入「index?title=$1&variant=zh-hk」地址也無效。中文維基沒有解決這個問題,它的默認URL地址根本沒有靜態化!。在眾多wiki網站里,貌似只有天下維客解決了這個問題;它的默認鏈接地址是/wiki/$1,但可以通過頁面上index.php&title=… &variant=zh-tw 鏈接切換到其他中文語言。 偶不知道這是如何實現的。天下維客的mediawiki專題資料里也沒提到這個問題。

Continue reading

為Aksimet添加一個白名單(Whitelist)

可島可薇同學在偶Blog留言很不順利;幾乎每次都被Aksimet判定為Spam … 對於偶們這些使用國外空間的Wordpresser, Aksimet是最佳的垃圾評論攔截工具,由於是國外虛擬主機,Aksimet可以連接到服務器(不會受到GFW阻礙),Spam識別率很高.(偶Blog自去年3月創建共攔截了1500個Spam) Aksimet不得不用,但索可島可薇同學無法留言問題又必須解決.我考慮為Aksimet添加一個白名單(Whitelist).研究了一下,如下 WordPress後台插件編輯器,打開Aksimet插件目錄下akismet.php文件. 首先在php文件最上面創建一個白名單: $comments_mail_whitelist = array(“[email protected]”,”[email protected]”); 為了省事,創建一個數組而已. 存儲評論者的Email 看一下這個php文件,關鍵這句: add_action(‘preprocess_comment’, ‘akismet_auto_check_comment’, 1); 添加了一個preprocess_comment的鉤子,用於提交評論時進行審核. 遂定位到 akismet_auto_check_comment 函數 function akismet_auto_check_comment( $comment ) { $comment[‘user_ip’] = preg_replace( ‘/[^0-9., ]/’, ”, $_SERVER[‘REMOTE_ADDR’] ); $comment[‘user_agent’] = $_SERVER[‘HTTP_USER_AGENT’]; $comment[‘referrer’] = $_SERVER[‘HTTP_REFERER’]; $comment[‘blog’] = get_option(‘home’); $ignore = array( ‘HTTP_COOKIE’ ); foreach ( $_SERVER as $key => $value ) […]

Continue reading

WordPress Search Permalink

WP的Permalink(永久鏈接)做的相當完善,我見過所有php程序最好的 1.高度可自定義.單篇文章頁,日期存檔,分類存檔,Tag存檔頁的永久鏈接形式都可以自定義. 2.根據Host自動重定向.例如把www.abc.com/$1 重定向到abc.com/$1 3.末尾自動去除或添加”/” .例如你永久鏈接是 /%post_id%形式 .當有人訪問 your-blog.com/34/時會被重定向到 your-blog.com/34 骨頭裡挑刺的話,還是有不足.就是搜索結果頁的永久鏈接. WordPress默認通過表單提交的搜索,結果頁地址是 http://blog.name/?s=keyword 形式 . 但實際上WP已經內置了Search permalink .通過直接在地址欄輸入http://blog.name/search/keyword ,也能訪問搜索結果 .其中 “search”這個字段由 wp-includes/rewrite.php 中的 $search_base變量定義,可自行修改. 通過Search Permalink這個插件,可以使默認表單提交的搜索地址變成 http://blog.name/search/keyword/ 形式.這個插件很簡單,客戶端使用JS監控表單submit,服務器端重定向/?s=keyword地址到 /search/keywords/形式. 現在我想做的是 1.把安裝Search Permalink後的搜索頁面地址由 /search/keyword/ 變為 /search/keyword 形式 2.當有人輸入/search/keyword/時,自動重定向到/search/keyword (去掉末尾 /) 前者很容易做到,事實上只要修改Search permalink插件的兩個地方即可.但是我始終找不到如何做到第二點.事實上這是WordPress內部設置,與Search Permalink插件無關.即無論你永久鏈接設置如何.訪問 http://your-blog.com/search/keyword 和 http://your-blog.com/search/keyword/都會返回 Http 200 OK.而不會發生301重定向. SEO的首要原則是URL唯一化.網站的任何頁面在正式發佈時只能有一個標準URL,其他所有別名地址都應該被重定向到標準URL.我仔細看了 wp-includes/rewrite.php 文件,沒有找到可以解決這個問題的地方.最後,不得不使用.htaccess大神 : <IfModule mod_rewrite.c> RewriteEngine […]

Continue reading

CSS & Javascript學習記錄

一些雜記. li列表默認display:block .塊級元素,每個後換行.若使列表不換行.可以給li加 display:inline ; 或者加 float屬性使其脫離文檔流.推薦後者特別是在li裏面是a 鏈接時候,可能需要把a元素設為display:block.這樣如果把li設為display:inline後仍然會換行 貌似還有一種是給li加 white-space: nowrap .也可以不換行. CSS配合JS的下拉菜單.經典布局是 <ul> <li><a>…</a><ul><li></li><li></li>….</ul></li> <li><a>…</a><ul><li></li><li></li>….</ul></li> </ul> 即ul裏面的li套ul,存放隱藏區塊(Visibility: hidden) .這個ul塊必須採用絕對定位(position: absolute) position:absolute如果沒有配合top left bottom right ,就相對父標籤定位 Javascript實現快捷鍵代碼: document.onkeypress=function hotkey(e) { var code= String.fromCharCode(e.which); switch( code) { case ‘s’ : ….. break; ……….. default: break; } }

Continue reading

Ajax入門學習筆記

今天下午,隨便翻了幾本Ajax的書籍 .包括Lee Babin的 Beginning Ajax with PHP ; Ajax Hack 等。算是曉得Ajax是啥東西了。 Ajax依賴於Javascript和XML,實現異步的數據傳輸,在Web客戶端的表現就是頁面無需刷新。這玩意最早是、Microsoft提出來的,貌似現在還沒有國際標準,但所有主流瀏覽器都支持。Ajax核心是Javascript的 windows.XMLHttpRequest對象 (IE6以下版本是ActiveXObject) 要創建一個 Ajax實例,只需創建 XMLHttpRequest對象即可。但是IE6及以下版本必須用完全不同的ActiveXObject方式創建。所幸的是除了初始化外兩種方式創建的對象屬性和方法幾乎完全相同 .而且 IE7也開始支持標準XMLHttpRequest 對象.但現在貌似IE6還有人用..   XMLHttpRequest對象使用極其簡單,基本的用法如下: function ajax(uri,id) { var content=document.getElementById(id); xmlhttp.open(“GET”,uri); //xmlhttp是創建的XMLHttpRequest對象 xmlhttp.onreadystatechange=function() { if( xmlhttp.readystate=4 && xmlhttp.status=200) { content.innerHTML=xmlhttp.responseText; } xmlhttp.send(null); }   所有複雜的Ajax運用,基本原理都是這樣 .XMLHttprequest的 open方法向服務器提交請求,GET是請求方式,也可以是POST.uri是目標文件URL,例如”abc.htm” ,” abc.php&a=1″之類,也可以是絕對路徑. XMLHttprequest 的 readystate有四種狀態: 0,1,2,3,4 分別表示 初始化,載入中,正在載入,交互中和完成. 用onreadystatechange監控這一值改變,當完成後 如果 服務器返回狀態碼是200 […]

Continue reading

DIV +CSS區塊自適應高度

做主題遇到這個問題.假設下面區塊: 經典的二欄+Footer欄布局.content /sidebar區塊分別設置為 向左/右float即可.如果三列則兩列浮左,一列浮右. 通常這樣沒有問題.但如果給區塊加上background-color:(背景顏色),例如: 默認背景(page)白色 content 列,背景紅色 sidebar列: 背景黑色. 通常情況下,content 和sidebar的高度塊不會相等,那麼結果就會出現其中一列背景正常,而另一列上面是背景色,下面是白色!. 這個貌似是DOV+CSS下經典的自適應高度問題.我嘗試給 sidebar /content列加上 height: 100% ;和 min-height:100%,均無效. (不知道原因,手冊上說min-height百分比單位為參照父元素寬度) . 有看到一種方法: page塊背景色:設為黑色 content 列,背景 紅色 sidebar列: 背景 黑色.. 但這樣只有在Sidebar列高度超過 content列時才有效!!,如果反過來呢? 我從現在使用的主題里找到了解決方法 #page { background: url(“images/back.jpg”) repeat-y top right; } 把 back.jpg這個圖片顏色設為Sidebar背景色,寬度設為和Sidebar寬度相等(sidebar有margin的話相應減去),從右上方開始填充!,那麼就正好覆蓋Sidebar塊所在的整個列. 這應該是最佳方案了

Continue reading

自製WordPress主題 La-Lune 測試

本人對CSS一竅不通,但還是決定自己做一款WP主題…因為用別人的Theme終究不爽,看到別人和偶用一樣主題更加不爽 …..要想保證使用主題唯一性,只有自己做一個. 主題名字叫La lune ,之所以叫這個名字是因為其配色參考了一款同名Discuz模板. 偶CSS很爛…所以基本上沒用啥花樣.參考WP默認模板框架,二欄,使用一些Icon裝飾.一些地方設計參考了許多WP主題… 昨天做了一天時間,大致上做好了.現在放在本人的英文博客上測試並完善. 配色還得改改,總覺得太淡 PS:測試主題暫時不能留言,因為偶還沒做 comments.php – –

Continue reading

2007年12月日語考試證書在線製作程序

這是偶今天無聊寫的東西.php實現 Version 1.0 純屬娛樂,技術含量是沒有滴.. (要不怎麼說我無聊呢….) 在線演示地址: http://test.sakura-paris.org/jp/1/jpdiplema.htm 本程序根據用戶輸入的姓名,出生日期,考試級別和准考證號,在線生成2007年12月日本語等級考試的證書圖片.證書樣圖來源於咖啡日語論壇杜亮提供 具體的過程是 表單提交數據 -> php程序接受數據 -> 用 GD庫的 imagettftext函數把文字寫入證書樣圖的對應位置 -> 瀏覽器輸出生成圖片(imagejpeg函數).   說明: 1.為了省事,服務器端沒有對用戶輸入的內容做任何過濾 ,本程序並沒有任何SQL查詢/文件上傳等代碼,所以不會造成安全問題. 而如果php程序涉及SQL查詢/文件上傳等過程,則必須對從客戶端接受數據進行嚴格的過濾,通常過濾流程如下: 首先判斷是否為空 : if(!$_GET[‘variable’]) ….. -> 判斷字符串長度是否超標: if (length($_GET[‘variable’]) >10 ….. ->使用正則表達式對數據格式進行嚴格審查: if(!ereg(“^[a-zA-Z0-9]*$”,$_GET[‘variable’]) …. (這個正則式子將確保客戶端傳來的數據只含有英文字母和數字,不含有任何 ‘ ” ; 等危險的特殊符號) WEB開發的首要原則是:所有客戶端傳來的數據都是不可信賴的 2.imagettftext函數要求指定TrueType字體文件,而這個與平台相關,比較頭疼.所以我乾脆上傳了一個ARIAL.TTF文件到程序目錄下 .直接用這個Arial字體 3.請不要輸入中文字符,否則出錯 (因為使用的Arial字體沒有中文字符) 4.整個過程最頭疼的就是確定寫入文字在樣圖上像素的位置,這個偶是本地用Photoshop的標尺+windows計算器手工計算出來的…汗…. 5.需要GD2庫. (GD1不行,因為兩個版本字體大小不同) 最終的東西有下面幾個文件(位於同一文件夾下) jp.jpg —– >用於生成證書的樣圖(移除了文字) original.jpg ——>真實的原始證書圖片(咖啡日語論壇杜亮提供) […]

Continue reading

WordPress2.5 發佈

7個小時以前,全球最著名的Blog程序WordPress正式發佈了2.5版本 .同時WP官網改版,新版首頁類似於WP2.5後台樣式. 這是WP自2.0版本以來最重大的版本更新.在Blog界可以說萬眾矚目.本Blog將立刻更新到2.5版本.升級期間本Blog可能暫時無法訪問.請稍後 PS: Dreamhost 的 One Click Install/Update剛剛也升級到了 WP 2.5 .所以可以輕鬆一鍵升級Blog到WordPress 2.5版,但還需要做好備份. Update: 08:02 升級文件和數據庫完成,沒有遇到任何問題,Blog顯示正常.正在熟悉新版後台.稍後將修改Theme Update: 關於新版附帶的插件自動升級功能 ,對託管在WordPress官方插件庫插件可以實現後台一鍵升級,非常方便!,如下圖 . (我沒有修改任何設置,直接嘗試用其升級插件成功) .     有了這個就不用怕 All in One SEO 這種一天到晚升級的插件了 – – .畢竟每次 手工升級插件要先 reactivate 插件 -> ,刪除舊插件文件 -> wget 下來新版插件 -> unzip解壓縮 -> 後台激活 ,還是很麻煩滴 (要是沒有SSH,用FTP更麻煩)   我在使用這個功能時發現, 要能夠通過 WordPress 2.5 後台自動升級插件,除了插件必須託管在官方插件庫外 ,插件壓縮包文件必須符合規範 ,即解壓縮後 […]

Continue reading