Buy Reviews
Powered by MaxBlogPress  

Archive for the ‘php應用’ Category

使用SEO固定網址有較好的搜尋結果

星期二, 八月 10th, 2010點閱人數:6次

John Chow發現有一些部落格使用預設的WordPress固定網址系統,這是很多新的部落客會發生的錯誤,這樣的錯誤會降低你的Google搜尋排序,幸運地,這個錯誤可以很容易地被更正。

動態網址 vs. SEO 友善網址

WordPress預設會用動態產生的流水號來命名它的網址,這個號碼會放在網域名稱後面,看起來有點像http://job.achi.idv.tw/?p=1510這樣,對Google來說這沒有任何意義,Google必須抓到我的內容才能理解這篇文章是什麼,對比於http://job.achi.idv.tw/2008/09/23/fatal-error-allowed-memory-size-of-33554432-bytes-exhausted/這樣的網址,有這樣SEO友善的網址,Google可以很快地理解這篇文章,所以使用SEO友善網址會比動態網址讓我在搜尋引擎的結果頁上有更好的顯示機會。

開啟SEO友善網址

要開啟SEO友善網址,到WordPress的控制台->設定->固定網址裡,從那裡你有五個選擇來顯示你的網址:預設、日期與名稱、月份與名稱、數值式跟自訂結構,你會想要使用日期與名稱、月份與名稱或是自訂結構的模式因為這三個選項是比較適合搜尋引擎的,ㄚ琪是使用日期與名稱的模式 – 這樣可以顯示我的網域名稱、日期跟文章名稱,自訂結構通常預設也跟日期與名稱的模式一樣的設定/%year%/%monthnum%/%day%/%postname%/,但是你可以自行調整。

在你更新你的WordPress為SEO的固定網址前,你需要讓你的.htaccess檔案可以寫入,FTP到你的站台,在你的root資料夾找到你的.htaccess檔,然後CHMOD這個檔案為666,你可以在更新網址結構後再把檔案屬性設回來。

假如你沒有執行這個設定,現在就可以去做了!

Blogger 可以有WP-PostRating和WP-PostViews這樣的功能嗎?

星期五, 七月 23rd, 2010點閱人數:10次

網 上 賺 錢

可以的!在Blogger testing inline comments and post ratings,說有草稿版的可以用!

按這個連結draft.blogger.com,就可以進到自己的草稿畫面:

2010-07-23_142051

有沒看到”Make Blogger in Draft my default dashboard”這個核取方塊,把它勾起來就可以了!

然後你進到設計->Page Elements->Blog Posts->編輯,就有畫面了:

2010-07-23_142402

就可以有5顆星的評比了!

不過我試了沒出來,不知是不是cache的問題,晚一點再看看!

PostViews

也有人寫了blogger page views post view hit counter to count views of post/page,但是用第一種方法,感覺很怪,所以我用第二種方法!

1. 登入到 Blogspot -> Dashboard -> Layout -> Edit HTML
2. 點選 expend widget Templates
3. 找到下面這一行

<p><data:post.body/></p>

在下面貼上這一段

<b:if cond=’data:blog.pageType == &quot;item&quot;’>
<div id=’hit-counter’>
&lt;a href=&#39;http://csharpdotnetfreak.blogspot.com&#39; rel=&#39;follow&#39;&gt;
<script src=’http://www.amitjain.co.in/pageview.php’ type=’text/javascript’/> &lt;/a&gt;
</div></b:if>

4. Save your template

一樣也是看不出來,是不是草稿版本的關係?

WordPress zh-tw:使用Gravatar

星期五, 七月 16th, 2010點閱人數:24次

這是來自WorePress官方網站的備份文章,會翻譯這篇文章的靈感來自MyAvatars For MyBlogLog,ㄚ琪一直覺得工作達人的大頭貼很怪,然後使用很多的MyBlogLog的WordPress外掛很舊也很怪,有時根本沒有作用,所以好好第去瞭解目前版本的Wordpress的大頭貼是怎樣的狀況。

什麼是Gravatar全球認證頭像?

大頭貼(Gravatars)是Globally Recognized Avatars,一個頭像或大頭貼是一個使用者在虛擬實境共享的圖示或是描述,這個虛擬實境像是論壇、聊天室、網站或任何線上社群的格式,在那裡使用者想要有一些東西可以來跟其他人區別,大頭貼是由Tom Werner所創立,大頭貼讓一個人可以在整個網路上使用一個頭像,頭像通常是80*80的畫素大小,使用者必須自行建構。

在部落格文章迴響中的Gravatars

大頭貼本質上是一樣的東西,只是他們全都放在一個單一的伺服器上並且透過MD5演算法則將使用者的email位址編碼來呼叫,所以取代你拜訪的論壇有一個頭像,在另一個你拜訪的部落格又是另一個頭像,現在你在這兩個地方都會有相同的頭像了。

大頭貼可以很容易地在WordPress用Gravatar WordPress外掛或是手動在index.phpcomments.phpcomments-popup.php樣板檔案中做修改。

大頭貼是如何建構的

大頭貼是從伺服器請求來的動態影像資源,請求URL在這裡分段來表示,URL總是這樣開始:

http://www.gravatar.com/avatar/

接下來是使用者email位址的雜湊版本,email位址在md5雜湊前,首先要先小寫化,接下來移除所有的空格。

279aa12c3326f87c460aa4f31d18a065

另外rating (或r)分級的選項參數有[ G | PG | R | X ] 這些值,可以決定傳回的最高分級。

?r=R

選項size (或s)參數可以指定想要的大頭貼寬度跟高度,有效值從1到512(包含),任何超過80的尺寸再輸出前會讓原始的大頭貼影像重新使用雙三次採樣來處理。

&s=120

選項default (或d)參數指定要傳回的GIF、JPEG或PNG影像完整的URL、編碼的URL、包含的協定,不論請求的email位址沒有相關的大頭貼又或是大頭貼有高於rating參數的分級,他也包含下列其中的一個:

  • ’404′ (傳回404)
  • ‘mm’ (謎樣人物)
  • ‘identicon’ (獨一自動產生的影像)
  • ‘monsterid’ (獨一自動產生的影像)
  • ‘wavatar’ (獨一自動產生的影像)
&d=http%3A%2F%2Fwww.somesite.com%2Fsomeimage.jpg

在WordPress中使用大頭貼

大頭貼的一個例子

對很多人來說,要用MD5將email位址給編碼不是件容易事,這種編碼需要PHP或其他種的指令碼,有幾個WordPress外掛可以幫助解決這個工作,像是Gravatar.com外掛Gravatars2 Enhanced Caching Plugin,可以參閱外掛的說明文件有使用跟安裝這些WordPress外掛的資訊。

在WordPress 2.5之後,大頭貼已經內建了,對於基本的使用跟管理不再需要其它的外掛來做。

WordPress 2.5將佈景主題的作者跟臨時的WordPress使用者結合在WordPress控制抬來支援大頭貼的設定,佈景主題的作者有選項可以將大頭貼包含在他們的設計中,並且也被建議這樣做,WordPress使用者可以在控制台的設定 > 討論中容易地控制他們的大頭貼的使用。

WordPress使用者可以做這樣的改變:

  • 大頭貼顯示與否。
  • 哪種分級的大頭貼可以顯示。

WordPress 2.5佈景主題支援

要新增大頭貼到你的佈景主題可以這樣呼叫:get_avatar,這個函式傳回完整的頭像影像HTML標籤。

函式可以像下列這樣的方式呼叫:

  <?php
   echo get_avatar( $id_or_email, $size = '96', $default = '<path_to_url>' );
   ?>

參數:

  • id_or_email (必須):作者的使用者ID (一個整數或字串)、E-mail位址或是評論迴圈的評論物件。 注意:為了顯示評論者的大頭貼你可以在大多數的評論樣板中使用$comment,在其他的樣板的Loop裡 (針對WordPress 2.7以前的版本),你可以使用get_the_author_id() (這在WordPress 2.8已停用),針對WordPress 2.8,請使用get_the_author_meta('user_email')
  • size (選項):大頭貼顯示的尺寸(最大是512)。
  • default (選項):預設的大頭貼使用絕對位置(這在使用者沒有email位址時使用),假如保留空白那麼你會看到這裡的大頭貼作為預設用。

這裡有一些事項要注意:

  • 假如你沒使用size設定尺寸大頭貼的預設尺寸是96×96。
  • 預設的大頭貼是Gravatar全球認證頭像
  • 假如使用者在WP控制台允許使用,那麼大頭貼就會顯示(預設是啟用)。
  • 假如使用在在WordPress控制台沒有選擇分級,那麼大頭貼就不會分級顯示。

程式碼輸出:

當使用上述的函式時預設的輸出列於下,不同的類別用在img元素來幫你使用元素樣式。

<img alt='' src='http://gravatarurl_or_default'
class='avatar avatar-$size' height='$size' width='$size' />

假如因為缺乏e-mail位址大頭貼回復為預設的影像(例如,pingback或trackback),不論你是否有指定預設值,img元素也會給定一個avatar-default的CSS類別。

回溯相容

假如你想要開發2.5版以前有大頭貼的WordPress佈景主題,要新增檢查Gravatar函式的程式碼:

   if (function_exists('get_avatar')) {
      echo get_avatar($email);
   } else {
      //alternate gravatar code for < 2.5
      $grav_url = "http://www.gravatar.com/avatar/" .
         md5(strtolower($email)) . "?d=" . urlencode($default) . "&s=" . $size;
      echo "<img src='$grav_url'/>";
   }

檢查大頭貼的存在

假如你請求一個大頭貼影像但是你在Gravatar系統裡沒有你的email帳號,那它會傳回預設的影像給你。

有時候這可能不是你想要的,你可能就會想知道你是否可以得到一個真正的大頭貼或者它只能是預設的。

案例狀況:

  • 假如使用者沒有大頭貼你想要顯示當地的頭像來使用
  • 你想要警告沒有大頭貼的使用者他們應該去註冊一個,但是你也不想要打擾到已經註冊的使用者。

警告:你需要瞭解PHP來使用下面的資訊。

這樣做的技倆就是將”404″指定為預設,在這裡假如大頭貼不存在大頭貼服務會傳回404錯誤,而不是傳回一些預設的影像,真正的影像會傳回200的程式碼,最好是檢查傳回值是否為200、以及其他錯誤的傳回值。

這裡有一個驗證的函式使用HTTP headers,你會需要修改它來符合你的需求:

function validate_gravatar($email) {
	// Craft a potential url and test its headers
	$hash = md5($email);
	$uri = 'http://www.gravatar.com/avatar/' . $hash . '?d=404';
	$headers = @get_headers($uri);
	if (!preg_match("|200|", $headers[0])) {
		$has_valid_avatar = FALSE;
	} else {
		$has_valid_avatar = TRUE;
	}
	return $has_valid_avatar;
}

資源

ㄚ琪最近對WordPress的貢獻

星期五, 七月 16th, 2010點閱人數:6次

首先是為了幫忙寫外掛程式做翻譯,主因是因為自己開發了wp-buzz的外掛程式,在看了之後順便翻譯造福華人,但是後來它的繁體中文的連結又有問題一直連到WordPress 中文指南,但是「2010年初,階段性任務暫告一段落,原有內容移轉至tw.wordpress.org,往後有最新的相關訊息也會發佈在該網站」有這樣的聲明。

由於考量到 WordPress 正體中文的教學文件不足且零散,龐大的英文參考文件也尚未中文化,Wptw.org 將以撰寫 WordPress 中文說明及相關資訊為主,期待能為正體中文的用戶提供完整且詳細的 WordPress 文件。」

我感到好奇的是那個網站並不允許其他人一齊來貢獻WordPress的繁體中文,好像只是該站的負責人自己在做,所以文件相當的少,所以後來也沒翻,只是增加了中文(繁體)的連結讓大家進去翻!

之後的Using Gravatars也是如此。

但是之後我從簡體中文那來的靈感,覺得Codex:Multilingual ‎這裡的樣板設定有玄機,所以我做了變動:

2010-07-16_142044

我把http://codex.wptw.org改成http://codex.wordpress.org/zh-tw

然後Template:zh-tw 這個樣板,也做變動,這樣子以後我們就可以在要翻譯的頁面上增加中文(繁體)的連結到官方的網站,而不是轉到不能翻譯的外連網站。變動如下:

2010-07-16_142639

之後終於可以翻譯了,最新的一篇使用大頭貼,就誕生了,另外為免以後又有人改回來,造成翻譯的文章不見,我自己留一篇備份在工作達人上!

[WordPress.org Plugins] Request Approved: wp-buzzed

星期一, 七月 12th, 2010點閱人數:3次

ㄚ琪自寫的Wordpress Buzzed外掛,比WP AutoBuzz還要auto,今天收到mail通知說我申請的wp-buzzed外掛已經核准,真是令人快樂阿!

achi,

Your plugin hosting request has been aproved.

Within one hour, you will have access to your SVN repository at

http://plugins.svn.wordpress.org/wp-buzzed/

with your WordPress.org/bbPress.org username and password (the same one you use on the forums).

Here’s some handy links to help you get started.

Using Subversion with the WordPress Plugins Directory
http://wordpress.org/extend/plugins/about/svn/

FAQ about the WordPress Plugins Directory
http://wordpress.org/extend/plugins/about/faq/

WordPress Plugins Directory readme.txt standard
http://wordpress.org/extend/plugins/about/readme.txt

readme.txt validator:
http://wordpress.org/extend/plugins/about/validator/

Enjoy!

Operator 0.9.5.1

星期四, 七月 8th, 2010點閱人數:8次

自從翻了一些微格式關於hCard的文章後,ㄚ琪也想試試看Wordpress可以用嗎?看到了Operator這個Firefox的外掛可以「讓微格式 (microformats) 與其他網頁上既有的語意資料「活」過來,創造與其他網路服務嶄新的互動方式。」

Operator 也協助您將網頁上的片段資訊與其他網站以各種方式「拼」起來,好比 Flickr + Google 地圖、Upcoming + Google 日曆等等,創造更多有趣有用的資訊應用模式。這些全拜活用 HTML 語意屬性的 Microformats (微格式) 所賜,您可至 http://microformats.org 查詢相關資訊。

Operator 由 IBM 的 Michael Kaply 開發,並成為 Mozilla Labs 的特色專案之一。

Michael Kaply留言說:「你可以使用Operator來偵錯你的微格式,當你啟用偵錯模式並在選項中啟用除錯模式時,你會看到一個新的處理器叫做”除錯”用不同的方式來顯示微格式。

2010-07-08_111158

2010-07-08_111357

假如微格式沒有顯示,而你又相信有,那它可能因為微格式錯誤,你可以開啟除錯模式來看看錯誤的微格式。

安裝很簡單,就像Firefox安裝外掛一樣,安裝後會出現一些選項:

2010-07-08_110731

我會把Location Bar Icon給勾選!

2010-07-08_111227

WP 2.7 fun: complete hcards提到了Wordpress 2.7以後就有支援這種微格式了,我卻一點不知道,看來我孤陋寡聞了!

Joost de Valk提到hCards沒有包含email addresses,這是相當的好,因為你不會想分享所有人的email在你的部落格上,但是你自己的email卻想分享在你自己的部落格上不是嗎?

所以他寫了一個外掛,假如你可以編輯文章及評論,那麼你就可以將你的email加到評論的部份,如果你使用hCrad,而他們也在那,那你就可以將名字、網站、email跟相片給使用者,這很酷吧!

好,下載這個外掛試試,Download the plugin here.

測試自寫的WordPress Buzzed 外掛

星期二, 七月 6th, 2010點閱人數:11次

WP AutoBuzz我發現這個外掛也不能貼在Buzz!所以自行撰寫外掛了!

這個需要有自己的Domain,

不過應該可以滿足我post文章到部落格時,也貼到Buzz!

試試看!第一版外掛釋出:wp-buzzed

WP AutoBuzz

星期一, 七月 5th, 2010點閱人數:1次

上週的Test Google Buzz應該失敗了!今天看到 WP AutoBuzz這個外掛,希望可以測試成功,這樣我就不用自己寫程式來Buzz了!

Update Drupal Theme CSS and Clear Cache

星期五, 七月 2nd, 2010點閱人數:8次

1.管理->網站設定->效能->清除快取資料

2.管理->網站建置->版型->選定所要的主題->設定->儲存設定

我常忘記第2個要做,感謝網友的提供!

Hack Remind Me

星期一, 六月 28th, 2010點閱人數:3次

這是自從寫度連結的重要性開始,經過WordPress 3.0下WikiStyle Autolinks不work的測試,後來我感覺有點不對,WikiStyle的外掛,它的程式是針對文章內容做搜尋,當你舊文章的標題有跟目前顯示文章的內容有吻合的時候,就將舊文章的標題轉成連結放在目前顯示的文章內來作到深度連結的功能,但是這會造成如果你的網站小又或者你的文章數超多的話,那麼這個搜尋會造來嚴重的後果,那就是讀者看文章會變得很慢很慢…慢到他睡著了,文章還沒顯示完,原本在測試平台下測試還滿順利的,後來移到這個頻寬小文章數以到了1491篇的工作達人來說,這是很大的搜尋負荷,我們不可以慢待我們的讀者,作者自己倒是可以慢待才對。

經過這樣的思考,ㄚ琪又再一次地搜尋Wordpress的外掛有沒適合我的想法的,我找到了Remind Me這個外掛,這也是有5顆星的外掛,在Wordpress 3.0下使用沒有問題,它可以很容易地將這一篇文章的連結放到另一篇的文章內,這是深層連結的一個滿不錯的外掛,當你啟用這個外掛後,你會看到在內容編輯欄位下,有相關文章的列表(如下圖)。

2010-06-28_113241

這些列表是根據你目前文章的標題、內容、標籤、分類來搜尋以前的舊文章,但是內容是依據你把它用滑鼠選取之後,按Refresh List更新時比對舊文章的內容來當作搜尋結果的,或許這個邏輯沒什麼問題,但是對ㄚ琪的用意是不吻合的,因為在WikiStyle Autolinks下是用舊文章的標題來比對目前文章的內容,而這也是我比較接受的邏輯,因為一般我在寫文章的時候可能舊的文章標題我記不得,所以如果編輯的文章內有一段話是我常用的,那麼它就可以提醒我以前有這麼一篇文章喔!那時我就把這個連結加入文章內,你看雖然在編輯的時候它要去搜尋,但是應該不會很多次,這將比起讀者每次看文章就要搜尋的WikiStyle Autolinks,確實這是省力多了!

好了Remind Me這個功能沒有,我想就把WikiStyle Autolinks這個功能移入好了,但是程式碼的寫成有差異,好像不相容吧,我在想在SQL命令產生的時候應該有正規表示式吧!

哈哈,果真沒錯,先試了全文索引的功能,不對,而且要改變Wordpress的資料結構,這個很實在不妥,繼續找,後來找到有REGEXP的語法,這正是我要的命令語法!

好了,開始改造我的Remind Me吧!

第一個是先針對wp-content\plugins\remind-me-deep-linking-seo-plugin\template\js的remind-me-metabox.js做改造

var selString = tinyMCE.activeEditor.selection.getContent();

這一行就是針對選取內容比對舊文張的標題來做搜尋結果,我不想這樣所以改成

var selString = tinyMCE.activeEditor.getContent();

這樣是為了讓舊文章的標題比對目前文章內所有文字做搜尋結果!

接著改wp-content\plugins\remind-me-deep-linking-seo-plugin下的model.php

// add the search text
if (!empty($params["highlight"])){
$params["highlight"] = jtUtility::cleanTxt($params["highlight"], “”);
$searchWhere->addLike(“post_title”, $params["highlight"],”p”, true);
$searchWhere->addLike(“post_excerpt”, $params["highlight"],”p”, true);
$searchWhere->addLike(“post_content”, $params["highlight"],”p”, true);
$searchWhere->addLike(“post_name”, $params["highlight"],”p”, true);
}

上面這一塊是原來的程式碼主要就是產生用滑鼠選取部份文章內容來做搜尋的SQL語法,我不要這樣的搜尋,所以改成這樣:

// add the search text
if (!empty($params["highlight"])){
$params["highlight"] = jtUtility::cleanTxt($params["highlight"], “”);
//加hack,使用hightlight為所有content
//註解下面四行
//$searchWhere->addLike(“post_title”, $params["highlight"],”p”, true);
//searchWhere->addLike(“post_excerpt”, $params["highlight"],”p”, true);
//$searchWhere->addLike(“post_content”, $params["highlight"],”p”, true);
//$searchWhere->addLike(“post_name”, $params["highlight"],”p”, true);
$searchWhere->add(“‘”.$params["highlight"].”‘ REGEXP p.post_title”);
}

這一行就是精髓: $searchWhere->add(“‘”.$params["highlight"].”‘ REGEXP p.post_title”);

好了,這樣就完成任務了,真是過癮!