Archive for the 'BlogMaintain' Category

Wordpress Category

之前為了讓 categories 能夠用中文顯示出來,必須參考 zonble 的「Wordpress 中文分類名稱」 裡面自己 patch 才有。而在 muwp 不適合這樣子直接改的狀況,就得自己想辦法看是寫 plugin 或是更動程式碼。因為如果是一般直接取名就取成中文,會發現當他變成網址的時候會被加工過,然後變成一堆由 % 所組成的奇怪符號,而無法辨識。這問題其實在 permalink 的時候也會出現,因為我們的 title 通常也都由中文組成,被加工過後也就看不懂。所幸 wordpress 有提供 customize 的選項,所以通常都會把他設定成:

/%year%/%monthnum%/%day%/%post_id%/

讓 原本的 title 變成數字,就比較不會那麼醜。不過在 category 上面就沒有這絕招可以放,因此呢得稍微想點辦法。無意間發現其實他在 table 裡面有一個欄位叫做 nicename ,應該是拿來作這檔事用的,只是沒有選項可以填阿?本來已經自己刻好程式來塞,才發現根本是多此一舉。因為呢,其實只要建立的時候先以英文的名稱建立,然 後進去 category 的管理選項裡面用修改的方式改成中文,就會發現他顯示的時候會用 nicename,也就是 rename過的中文名稱顯示,而實際上的 link 卻還是原來的英文名稱,真是太美妙啦。

不過呢,這些隱藏秘技,還真是一整個令人無法捉摸阿,如果沒去研究 source code 應該也很難曉得這些設計吧。

只是現在還有個問題,這邊怎麼玩都玩不出來,不知道為什麼我這邊的 category 都不會用樹狀的方式排列,永遠都是平平的一排,如果有有空的好心人恰巧路過,麻煩指點一下吧。先謝過了!

為了部落,噢不,為了PR!

這次回家過中秋,看到某粉紅會會長(CPU 他妹)一直在宣傳他們家工會台灣排行多少,然後整天黏著筆電,就想到前一陣子這附近在瘋的時候 BBS 上三兩篇文章就會看到「為了部落!」,其實還蠻有意思的。好,最近垃圾新聞看多了,學會很多廢話的技巧,其實我只是要說,我又把網址換回來了。

因為之前換成 muwp ,沒有力氣去看看到底該怎麼改,然後再加上胸毛男提到的我們都被神秘人物加進「部落格觀察」的名單之中,然後我又手賤把另外一個 DN 給加了進去,於是就 Duplicated 了 XD。再加上前一陣子Google 更新 pagerank ,RW 上這幾隻比較熟的除了胸毛男放大絕招,衝到五了之外,其他也都爬到三或四。為了這難得(以前的暴走不算的話),不好棄 PageRANK 於不顧啊!

於是,為了 PR ,所以所幸研究一下怎樣換回來吧 XD ,長期放 302 redirect 也不是啥方法。

於 是乎進去把 muwp 的架構稍微晃了一下,發現其實他原先是有設計 multi-sites ,可是對我而言不合用啊。因為我只有這個 blog.cookys.org 要拿出來,而並不是提供兩個 dns wildcard 變成兩個 site 給人申請(而且雖然說有寫,可是其實是寫一半吧 XD)。然後本來要從那個地方改程式,結果剛開始改,看到他送 database 的 query 的時候就覺得其實好像可以惡搞。反正他是送進來之後由 php 抓 _SERVER[”REQUEST_URI”] 來分辨,然後填進去查 database 裡面有沒有 match 的 record ,有的話拿出 blog_id 當成 index 繼續後面的動作,所以那我只要偷偷進 database 裡面亂改搞不好就可以了。沒想到果真如此,而且其實 MUWP 本身就在 Site Admin 裡邊的 blog 那個 tab 裡, Editing 選項中可以直接改。把對應的 Url、Siteurl、Home、FileUpload URL 給改一改後就可以正常過去了。

不 過就當功能正常很高興的時候發現,疑,怎麼沒辦法 Login 了。他會變成一直不斷的 Redirect_to ,我原本以為是 Browser 錯亂,結果清掉所有 cookies 後發現,根本就不會新增 cookies 進來啊,難怪會不斷 redirect 。請教了 Whatup 大師之後,他說可能是因為 domain 不同 ,發的 cookies 被 browser deny 了。測了一下,果真如此。所以就用骯髒的方式 patch 一下:

Index: wp-settings.php
===================================================================
— wp-settings.php (revision 802)
+++ wp-settings.php (working copy)
@@ -244,8 +244,9 @@
if ( !defined(’SITECOOKIEPATH’) )
define(’SITECOOKIEPATH’, $current_site->path );
if ( !defined(’COOKIE_DOMAIN’) )
- define(’COOKIE_DOMAIN’, ‘.’ . $current_site->domain);
-
+ if( strstr($_SERVER[’REQUEST_URI’],$current_site->domain) )
+ define(’COOKIE_DOMAIN’, ‘.’ . $current_site->domain);
+ else define(’COOKIE_DOMAIN’, ‘.’ . $_SERVER[’HTTP_HOST’]);
require (ABSPATH . WPINC . ‘/vars.php’);

if ( get_option(’active_plugins’) ) {

然後就可以過著幸福快樂的生活。可是其實並沒有,我這邊在 K2 的 SideBarModule 顯示那頁,又出現很詭異的問題,該顯示的東西跑不出來。本來以為是我移站的後遺症,後來才發現是因為我上了「歷史的今天」的 plugin ,然後在貼 code 的時候多按了一下 enter (鴨子說這個我很久以前也有發生過,其實我好像還有印象),所以多了一個空白行,就爛在很莫名其妙的地方。

不過總算,看起來順利的弄好了。順便還附帶送了新的 301 ,因為偉大的百度蜘蛛,來砍站的時候是用舊的網址(我一直沒發現舊網址原來照日期的話中間還會跑出一個 ‘date’ ,然後 CPU 就被吃滿,於是就順手送了 301 :

RedirectMatch 301 ^date/(.*) /$1

load 瞬間就輕下來了,百度的蜘蛛真的是超級無敵暴力。

題外話,跟大頭還有把妹揚出去吃飯走回實驗室的路上,我喃喃自語說,我還真是無聊,為了 PR 搞真久(那時還沒搞定),實在很沒意義。然後就出現了以下的對話:

大頭:不會啊,還好吧,反正你又沒啥事。
餅乾:哪還好,這樣很廢耶,都沒做到什麼。
大頭:沒差吧,放假又不用做啥。
餅乾:要啊,還很多程式還沒寫啊。
大頭:哎呀那不重要啦,如果說有更重要的事等你那就算了。
餅乾:最好是不重要啦,寫不出來不能畢業 ….~!@#$ …
把妹揚:(沉默~露出標準招牌呆滯笑容)
大頭:(打斷餅乾的話)唉優拜託,寫程式哪有啥重要的 ….
餅乾:(最好是資訊系寫程式不重要,正想反擊)很重要好嗎,不然 …
大頭:(繼續插話)不信你問把妹揚,把妹比較重要,最好是你能寫程式一輩子啦,把妹比較讚啦!
餅乾:(無言ing…)最好是你把妹把一輩子,靠把妹就能吃飯。
大頭:(露出輕蔑的表情)哎喲你不懂,啦你問把妹揚,把一個妹可以陪你一輩子,啊寫程式幹麻,又不能寫一輩子,快去把妹別寫程式啦。
餅乾:(…..)
把妹揚:(臉上露出欣然同意的表情)中肯!
餅乾:(ㄍㄢˋ)……

最好是這樣子吼,聯合起來,一整個無法反擊。

mysql5.1 + SK2

離上一篇 post 有很長的一段時間了,這一段時間裡面發生很多故事,只是真的沒空寫。
前一陣子這台機器出了點問題,現在好像恢復了,放著看看還有沒有問題。

由於 File System 的大爆炸於是索性重裝了一台,反正意外發現我買了顆跟之前一模一樣的 HDD 。

ad4: 238474MB <WDC WD2500KS-00MJB0 02.01C03> at ata2-master SATA150
ad6: 238475MB <WDC WD2500KS-00MJB0 02.01C03> at ata3-master SATA150
測試結果似乎是爛了一顆(時好時壞?),管他的。先能動再說。

不過看到這邊被 spam 打的落花流水,只好跑去裝 Spam Karma 2 ,但是裝的時候被唉唉叫

Could not create SQL table: wp_sk2_spams.
SQL error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM' at line 11
Could not create SQL table: wp_sk2_logs.
SQL error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM' at line 8

找了一下 google 似乎沒有看到類似的問題,於是我就想到會不會是我手賤裝了 mysql51-server 造成的,於是跑去翻 mysql51的 doc ,翻到這個,看起來很像,於是嘗試性的把 TYPE=MyISM 拿掉,果然就好了。

改過的 code 大概像這樣:

    457                         $query = "CREATE TABLE IF NOT EXISTS `" . sk2_kSpamTable . "` (
    458          `id` int(11) NOT NULL auto_increment,
    459          `comment_ID` int(11) NOT NULL default '0',
    460          `karma` float(2) NOT NULL default '0',
    461          `karma_cmts` text NOT NULL,
    462          `last_mod` datetime NOT NULL default '0000-00-00 00:00:00',
    463          `unlock_keys` tinytext NOT NULL,
    464          `remaining_attempts` INT NOT NULL,
    465                 PRIMARY KEY (`id`),
    466                 KEY `comment_ID` (`comment_ID`));";
    467         //) TYPE=MyISAM;";

 很單純的 mark 掉就好了?(希望不要爆炸)。

Wordpress Plugin: Category Visibility

前兩天在跟鹿人聊到 Wordpress 的 plugins 的時候,跑到 wordpress codexplugins 區看到 restriction 這分類裡好像有些符合我之前想要的需求,於是抓了 Category Visibility 這個 plugin 下來。他的簡介中說他能夠控制特定的 categories 要不要在 frontpage/rss feed/categoriez list/search result 中出現,甚至還能夠依據 user level 來做判斷。

和一般的 plugin 一樣,只要去這裡把他的原始檔抓下來,rename 成 .php 丟到 wordpress 的 plugin 目錄裡就可以使用了。不過好像一開始至少要去 Category Visibility 的地方勾一勾 submit 一次,因為他的 table 在那邊才會建立。

不幸的是我的 categories list 裝了他之後就爛掉了。剛剛花點時間找了一下發現,爛在兩個地方:

一個是他沒有處理好 nested categories,不會正確的把標籤給 close,在他 plugin 的 code 當中會看到原來 alter_vis_catlist 裡面有:

<?php
if (preg_match(“/href/”, $thelist)) {
$newlist = “”;
$children = 0;
$linklist = preg_split(‘/\t/’, $thelist);
foreach ($linklist as $link) {
if(preg_match(“/class.*children/”, $link)) {
//$children = 1;
$children += 1; // fix nested cat
$newlist .= $link;
} elseif(preg_match(“//”, $link) && $children) {
//$children = 0;
$children -= 1; // fix nested cat
$newlist .= $link;
} else {
$thiscatname = strip_tags($link);
$thiscatname = preg_replace(“/\s+\(\d+\)\s+/”, “”, $thiscatname);
$thiscatname = trim($thiscatname);
if(!empty($thiscatname)) {
$cats = $wpdb->get_results(“SELECT cat_ID from $wpdb->categories WHERE cat_name=’$thiscatname’ LIMIT 1″);
if ($cats) {
foreach ($cats as $cat) {
$thiscat = $cat->cat_ID;
}
if($wpdb->query(“SELECT cat_ID FROM $cat_visibility WHERE cat_ID=$thiscat AND list=1 AND user_level

照上面的方式修改一般人應該就沒有問題了。可是因為我還有手動改讓分類顯示成 category 的 description ,所以底下這段得修改:
get_results(“SELECT cat_ID from $wpdb->categories WHERE cat_name=’$thiscatname’ LIMIT 1″); ?>
把他改成

get_results(“SELECT cat_ID from $wpdb->categories WHERE category_description=’$thiscatname’ LIMIT 1″); ?>
就正常了。

clode 是好人

剛剛睡醒發現有好心人幫我修了 blog 上 IE 會發生很有趣的現象的 bug:

漫雲端 說:
要不要我幫你修一下 blog 的 style.css
漫雲端 說:
stare
漫雲端 說:
blockquote{
background: #EEE /*url(img/blockquote.png)*/ no-repeat bottom left;
/*border: 1px solid #E0E0E0;*/
padding: 10px;
padding-bottom: 10px;
margin: 1em;

margin: 15px 30px 0 10px;
padding-left: 20px;
border-left: 5px solid #ddd;
/*Font-family: monospace;*/
}
漫雲端 說:
把 padding-left:20px; mark 掉再試試用 IE 看大概就正常了

真是個好心人,好心有好報,這禮拜約會一定會順利 XD。

11/29 UPDATE: 我發現他還是爛的阿 @_@



About

You are currently browsing the 餅乾隨筆 weblog archives for the BlogMaintain category.

 

September 2010
M T W T F S S
« May    
 12345
6789101112
13141516171819
20212223242526
27282930