<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>J Solutions Blog</title>
	<atom:link href="http://www.jsolutions.biz/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jsolutions.biz/blog</link>
	<description>J Solutions 是一間香港網頁設計公司，是少數提倡遵照網頁標準，及把 SEO 原則運用在網頁設計上的公司。</description>
	<lastBuildDate>Wed, 25 Aug 2010 05:29:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>做個精明的網頁設計客人</title>
		<link>http://www.jsolutions.biz/blog/web-design/be-a-smart-web-design-client/</link>
		<comments>http://www.jsolutions.biz/blog/web-design/be-a-smart-web-design-client/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 05:28:30 +0000</pubDate>
		<dc:creator>Joseph Mok</dc:creator>
				<category><![CDATA[網頁設計]]></category>

		<guid isPermaLink="false">http://www.jsolutions.biz/blog/?p=513</guid>
		<description><![CDATA[「我想要一個網站，10頁，中英文，要有Flash，請報價！」以上不是 Clients from Hell (專門收集網頁設計師千奇百怪遭遇) 的一則故事，而是我們時常收到的查詢。香港上網的普及率雖高，但對製作網站、善用互聯網的認識不算多。直到最近仍有雜誌教人 Flash CMS 製網站「提升公司形象」，在 iPhone 和 iPad 熱賣時亂用 Flash 和找死有什麼分別。亦有公司仍在發 spam e-mail，給你偷雞成功發送一次，下次就會自動落入垃圾郵件箱，或給醒目的系統管理員過濾掉。
很多中小企製作網站都視成本為重要的考慮因素，直接找網頁設計公司而非透過推廣和公關公司。而網頁設計公司多數強於製作和執行，在規劃網站和網上推廣策略方面都視乎客戶本身的要求，因此中小型公司和商店製作網站前，必須掌握更多相關知識和明白自己的需要。
Google 剛開了一個專為小企業而設的 Google Small Business Blog ，並聯同 U.S. Small Business Administration 推出了一個 Tools for Online Success 指南，為小企業提供善用互聯網的貼士，內容包括：

利用 Google local listing 增加網上曝光機會，特別適合商店
製作成功網站的要素
利用 social media 加強和客戶的溝通
善用各項免費的渠道做宣傳
如何使用付費搜尋推廣
量度網站流量及如何解讀數據

以上章節可能會涉及一些技術性的操作，你未必會自行處理，卻可讓你更懂得向網頁設計公司提出要求，令網站有更大成效。最可惜這份指南由 Google 製作，難免欠缺了專門講及 Facebook 和微博的章節，否則更適用於香港的環境。另外，大家應會留意到，網站只是整個網上推廣的一個環節，現今製作網站更應包含更多 social media 的元素，並憧得利用其他網上服務。
Permalinks:做個精明的網頁設計客人
<p>Permalinks:<br/><br/><a href="http://www.jsolutions.biz/blog/web-design/be-a-smart-web-design-client/">做個精明的網頁設計客人</a></p>
]]></description>
			<content:encoded><![CDATA[<p>「我想要一個網站，10頁，中英文，要有Flash，請報價！」以上不是 <a href="http://clientsfromhell.net/">Clients from Hell</a> (專門收集網頁設計師千奇百怪遭遇) 的一則故事，而是我們時常收到的查詢。香港上網的普及率雖高，但對製作網站、善用互聯網的認識不算多。直到最近仍有雜誌教人 Flash CMS 製網站「提升公司形象」，在 iPhone 和 iPad 熱賣時亂用 Flash 和找死有什麼分別。亦有公司仍在發 spam e-mail，給你偷雞成功發送一次，下次就會自動落入垃圾郵件箱，或給醒目的系統管理員過濾掉。</p>
<p>很多中小企製作網站都視成本為重要的考慮因素，直接找網頁設計公司而非透過推廣和公關公司。而網頁設計公司多數強於製作和執行，在規劃網站和網上推廣策略方面都視乎客戶本身的要求，因此中小型公司和商店製作網站前，必須掌握更多相關知識和明白自己的需要。</p>
<p>Google 剛開了一個專為小企業而設的 <a href="http://googlesmb.blogspot.com/">Google Small Business Blog</a> ，並聯同 U.S. Small Business Administration 推出了一個 <a href="http://www.google.com/help/places/partners/sba/index.html">Tools for Online Success</a> 指南，為小企業提供善用互聯網的貼士，內容包括：</p>
<ol>
<li>利用 Google local listing 增加網上曝光機會，特別適合商店</li>
<li>製作成功網站的要素</li>
<li>利用 social media 加強和客戶的溝通</li>
<li>善用各項免費的渠道做宣傳</li>
<li>如何使用付費搜尋推廣</li>
<li>量度網站流量及如何解讀數據</li>
</ol>
<p>以上章節可能會涉及一些技術性的操作，你未必會自行處理，卻可讓你更懂得向網頁設計公司提出要求，令網站有更大成效。最可惜這份指南由 Google 製作，難免欠缺了專門講及 Facebook 和微博的章節，否則更適用於香港的環境。另外，大家應會留意到，網站只是整個網上推廣的一個環節，現今製作網站更應包含更多 social media 的元素，並憧得利用其他網上服務。</p>
<p>Permalinks:<br/><br/><a href="http://www.jsolutions.biz/blog/web-design/be-a-smart-web-design-client/">做個精明的網頁設計客人</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jsolutions.biz/blog/web-design/be-a-smart-web-design-client/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wordpress 3.0 全面 CMS 化</title>
		<link>http://www.jsolutions.biz/blog/cms/wordpress-30-a-true-cms/</link>
		<comments>http://www.jsolutions.biz/blog/cms/wordpress-30-a-true-cms/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 03:34:53 +0000</pubDate>
		<dc:creator>Joseph Mok</dc:creator>
				<category><![CDATA[內容管理系統 CMS]]></category>

		<guid isPermaLink="false">http://www.jsolutions.biz/blog/?p=507</guid>
		<description><![CDATA[Wordpress 3.0 發佈了，看點甚多！不過如果閣下只把 Wordpress 作個人網誌之用，老實說今次、甚至日後 Wordpress 的更新對你的意義未必很大，畢竟 blog 的功能已甚為成熟，難有大變。Wordpress 3.0 的新功能很大程度是適用於製作其他類型的網站。以前很多教學是關於如何將 Wordpress  當作 CMS 使用，現在 Wordpress 已確實是一個 CMS 了。關於新功能的詳細介紹，可參看官方網站或者 WordPress 3.0: Ultimate Guide to New Features ，筆者分享一下幾個重點新功能對網站製作的用處。
1. 自定義用戶名稱和密碼
個人認為系統安裝時自動創建或一的管理員帳號名稱並非可取，尤其是 Wordpress 這類很多非技術用家的系統，不少用戶也很大意地用很簡單的密碼，令系統增加了被入侵的風險。當然有經驗的用戶都知道安裝後應該再建一個管理員帳號及把系統自創帳號的權限降到最低。現在安裝 Wordpress 3.0 時用戶需要自行填寫管理員帳號名稱，可省略了這步驟，同時亦保障了不懂得這方法的用戶。
2. Menu 管理
簡單說即是 Menu Maker，用戶可自行設定一個或多個 menu ，這一直是 Joomla 比 Wordpress 強的地方，亦可說是一個 CMS 必須具備的功能。Wordpress 原有的 menu 設定是頗為死板的，只用程式根據一些規則創建，而且更改時需要更改 template。現實生活當然是更為複雜，例如想在2個連結中間加入一個外連就極為困難，Wordpress 3.0 終於內建了 menu maker，亦可讓用戶在 dashboard [...]<p>Permalinks:<br/><br/><a href="http://www.jsolutions.biz/blog/cms/wordpress-30-a-true-cms/">Wordpress 3.0 全面 CMS 化</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Wordpress 3.0 發佈了，看點甚多！不過如果閣下只把 Wordpress 作個人網誌之用，老實說今次、甚至日後 Wordpress 的更新對你的意義未必很大，畢竟 blog 的功能已甚為成熟，難有大變。Wordpress 3.0 的新功能很大程度是適用於製作其他類型的網站。以前很多教學是關於如何將 Wordpress  當作 CMS 使用，現在 Wordpress 已確實是一個 CMS 了。關於新功能的詳細介紹，可參看<a href="http://codex.wordpress.org/Version_3.0">官方網站</a>或者 <a href="http://sixrevisions.com/wordpress/wordpress-3-0-guide">WordPress 3.0: Ultimate Guide to New Features</a> ，筆者分享一下幾個重點新功能對網站製作的用處。</p>
<p><span style="color: #008000;">1. 自定義用戶名稱和密碼</span></p>
<p>個人認為系統安裝時自動創建或一的管理員帳號名稱並非可取，尤其是 Wordpress 這類很多非技術用家的系統，不少用戶也很大意地用很簡單的密碼，令系統增加了被入侵的風險。當然有經驗的用戶都知道安裝後應該再建一個管理員帳號及把系統自創帳號的權限降到最低。現在安裝 Wordpress 3.0 時用戶需要自行填寫管理員帳號名稱，可省略了這步驟，同時亦保障了不懂得這方法的用戶。</p>
<p><span style="color: #008000;">2. Menu 管理</span></p>
<p>簡單說即是 Menu Maker，用戶可自行設定一個或多個 menu ，這一直是 Joomla 比 Wordpress 強的地方，亦可說是一個 CMS 必須具備的功能。Wordpress 原有的 menu 設定是頗為死板的，只用程式根據一些規則創建，而且更改時需要更改 template。現實生活當然是更為複雜，例如想在2個連結中間加入一個外連就極為困難，Wordpress 3.0 終於內建了 menu maker，亦可讓用戶在 dashboard 內設定，方便得多。</p>
<p><span style="color: #008000;">3. 自定義文章類型及分類</span></p>
<p>以往 Wordpress 只有 Page 及 Post 兩種文章類型，如果想用 Wordpress 建立其他類型的網站，除了要有想像力，把兩個謹有的文章類型改造，用起上來亦較不便。現在用家可自行建立文章類型，例如你想建一個樓盤網站，可自行創建一個「樓盤」類型，以「區域」、「租售方式」、「房間數目」等 (即是可用來作篩選的條件) 作為其分類，方便管理、資料輸入及建立網頁。自定義文章類型是進階的 CMS 必備，就算早在 Wordpress 未內建此功能時已有 plugins 實現，成為內置功能後，更多相關功能會陸續開發，令 Wordpress 的用途大增。</p>
<p><span style="color: #008000;">4. 和 Wordpress MU 整合</span></p>
<p>Wordpress 有一個 Multi User (其實是 multisite，因 Wordpress 根本就是multiuser的) 的分支，由另一批開發者負責，MU 版本可說是在普通版本上外加一個框框，令其達到安裝一個系統，就可支援多個不同的 blog / 網站。雖然兩者的兼容性已很高，大部分插件都可共用，但畢竟參與維護的人員較少，支援也較少。現在 Wordpress 3.0 把 multisite 功能加入成為系統的一部分，完全解決兼容問題，令用戶可更安心使用。Multisite 有什麼用呢？最直接的用法是自己擔當 BSP，讓網友來你的網站申請開 blog，或者加入 <a href="http://buddypress.org">Buddypress</a> 使網站變成 SNS。</p>
<p>很多機構的網站由多組人員打理，可用 multisite 功能可把網站分成 minisite 獨立管理，並保留主站統籌管理升級備份等工作，而主站上亦可顯示 mimistie 部分內容。另一方面，如果想製作一個多語言網站、但內容及架構分別頗大，也可用 mutisite 達成。</p>
<p>筆者也想藉此文章解答兩個問題，有客戶問：用 Wordpress 是不是會被國內屏蔽？我想很些人混淆了 wordpress.com 和 Wordpress 系統。Wordpress.com 是 Wordpress 系統原創者的網站，是一個 BSP 讓人申請開 blog。wordpress.com 真的很多時被屏蔽。而我們用 Wordpress 系統則是獨立安裝，決不會因為用了 Wordpress 就會令國內的網民訪問不到。</p>
<p>另一個問題是，open source 系統是否都不適合建立流量高的大網站呢？不想扯得太遠，就以 Wordpress 來說，只使用程式的技巧，可以用 cacheng 技術減少直接使用 database (一般來說是系統的樽頸)，還未計其他 server side 技術。</p>
<p>Wordpress 3.0 新增幾個 CMS 相關的功能，一定會吸引更多網站採用。</p>
<p>Permalinks:<br/><br/><a href="http://www.jsolutions.biz/blog/cms/wordpress-30-a-true-cms/">Wordpress 3.0 全面 CMS 化</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jsolutions.biz/blog/cms/wordpress-30-a-true-cms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migrating from Blinklist to Delicious using PHP</title>
		<link>http://www.jsolutions.biz/blog/internet/migrating-from-blinklist-to-delicious-using-php/</link>
		<comments>http://www.jsolutions.biz/blog/internet/migrating-from-blinklist-to-delicious-using-php/#comments</comments>
		<pubDate>Mon, 31 May 2010 03:18:16 +0000</pubDate>
		<dc:creator>Joseph Mok</dc:creator>
				<category><![CDATA[互聯網]]></category>

		<guid isPermaLink="false">http://www.jsolutions.biz/blog/?p=500</guid>
		<description><![CDATA[I&#8217;m done with Blinklist.  Before this I want to get back the bookmarks so that I can use them in my browser or other social bookmarking website.  There is no one-step solution.  I hope this article can help people who has this need too.
Preparing the CSV file
The first step is to export your bookmarks from [...]<p>Permalinks:<br/><br/><a href="http://www.jsolutions.biz/blog/internet/migrating-from-blinklist-to-delicious-using-php/">Migrating from Blinklist to Delicious using PHP</a></p>
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m done with Blinklist.  Before this I want to get back the bookmarks so that I can use them in my browser or other social bookmarking website.  There is no one-step solution.  I hope this article can help people who has this need too.</p>
<p><span style="text-decoration: underline;">Preparing the CSV file</span></p>
<p>The first step is to export your bookmarks from Blinklist.  Although the website seems to allow you to choose from 3 export formats, you can only get a CSV file (in fact it is a TSV file).  Unfortunately you cannot import this file to your browser directly because the format is incompatible.  We need to convert the file to a normal bookmark file.  In this case, IE bookmark format is a desirable choice because it is recgonized by most browsers (Firefox, Chrome, etc.) and other social bookmarking website such as Delicious and it can be easily created.</p>
<p>The following step is not necessary unless your bookmarks have Asian characters.  Why?  Because the PHP script that we will use later has a command &#8211; fgetcsv.  This command is not 100% safe for Asian characters.  There are some solutions but I think the easiest way in this situation is to use a spreadsheet software to add dobule quotation mark as text delimiter for every field.</p>
<p>I use Open Office Calc as demonstration:</p>
<p>First we import the bookmark file, note that we need to set the character set to UTF-8,  and the field delimiter as Tab instead of Comma.  Every bookmark is a row in the sheet.  You can easily delete bookmarks that you don&#8217;t want to keep/import. (Sorry, OO does not allow changing back the user interface to English)</p>
<p><a href="http://www.jsolutions.biz/blog/wp-content/uploads/2010/05/2010-05-31_092146.png"><img class="alignnone size-medium wp-image-501" title="Importing CSV file into Open Office Calc" src="http://www.jsolutions.biz/blog/wp-content/uploads/2010/05/2010-05-31_092146-480x343.png" alt="" width="480" height="343" /></a></p>
<p>After that, we save the file as another CSV file, OO will prompt you to choose the field delimiter and text delimiter.  Select Tab and double quotation mark respectively.</p>
<p><a href="http://www.jsolutions.biz/blog/wp-content/uploads/2010/05/2010-05-31_092419.png"><img class="alignnone size-full wp-image-502" title="Save as a new CSV file " src="http://www.jsolutions.biz/blog/wp-content/uploads/2010/05/2010-05-31_092419.png" alt="" width="512" height="194" /></a></p>
<p><span style="text-decoration: underline;">Creating a browser bookmark file</span></p>
<p>The next step is to create the bookmark file.  <a href="http://rubenlaguna.com/wp/2010/01/03/migrating-from-blinklist-to-delicious-com-csv-to-html">Ruben Laguna</a> has written an excellent script in Ruby to convert the CSV file to an IE bookmark file.  I think many people are more comfortable with PHP so I re-create the script in PHP.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1">&lt;!&#8211; This is an automatically generated <a href="http://www.php.net/file"><span class="kw3">file</span></a>. It will be read and overwritten. <span class="kw1">Do</span> Not Edit! &#8211;&gt;</div>
</li>
<li class="li1">
<div class="de1"><span class="me1">Bookmarks</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;h1&gt;Bookmarks&lt;/h1&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;dl&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">EOH;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/fwrite"><span class="kw3">fwrite</span></a><span class="br0">&#40;</span><span class="re0">$f</span>, <span class="re0">$header</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$row</span> = <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// replace the filename if needed, remember to put it under the same folder of this script</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="re0">$handle</span> = <a href="http://www.php.net/fopen"><span class="kw3">fopen</span></a><span class="br0">&#40;</span><span class="st0">&quot;bookmarkall.csv&quot;</span>, <span class="st0">&quot;r&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> !== <span class="kw2">FALSE</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">while</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="re0">$data</span> = <a href="http://www.php.net/fgetcsv"><span class="kw3">fgetcsv</span></a><span class="br0">&#40;</span><span class="re0">$handle</span>, <span class="nu0">1000</span>, <span class="st0">&quot;<span class="es0">\t</span>&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> !== <span class="kw2">FALSE</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$row</span>==<span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><span class="re0">$row</span>++; <span class="kw1">continue</span>;<span class="br0">&#125;</span> <span class="co1">// skip the first line</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$url</span> = <span class="re0">$data</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$title</span> = <span class="re0">$data</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$description</span> = <span class="re0">$data</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$tags</span> = <span class="re0">$data</span><span class="br0">&#91;</span><span class="nu0">3</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/fwrite"><span class="kw3">fwrite</span></a><span class="br0">&#40;</span><span class="re0">$f</span>, <span class="st0">&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&lt;dt&gt;&lt;a href=&quot;</span>\<span class="st0">&quot;&gt;$title&lt;/a&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&lt;/dt&gt;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="st0">&lt;dd&gt;$description<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <a href="http://www.php.net/fclose"><span class="kw3">fclose</span></a><span class="br0">&#40;</span><span class="re0">$handle</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/fwrite"><span class="kw3">fwrite</span></a><span class="br0">&#40;</span><span class="re0">$f</span>, <span class="st0">&quot;&lt;/dd&gt;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="st0">&lt;/dl&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/fclose"><span class="kw3">fclose</span></a><span class="br0">&#40;</span><span class="re0">$f</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="st0">Success!</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="st0">Please right-click to save the &lt;a href=&quot;</span>\<span class="st0">&quot;&gt;Bookmarks file&lt;/a&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>The bookmark file is created  and ready  to be imported  to your favorite browser.  Of course, we can use another social marketing service like Delicious.  Luckily, the tags can be preserved too.  The only limitation is that the date of bookmark creation cannot be kept.  You can see that the date is set manually in the conversion script because it is not available in the CSV file.</p>
<p>Permalinks:<br/><br/><a href="http://www.jsolutions.biz/blog/internet/migrating-from-blinklist-to-delicious-using-php/">Migrating from Blinklist to Delicious using PHP</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jsolutions.biz/blog/internet/migrating-from-blinklist-to-delicious-using-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yahoo! 對政府網站的特別照顧</title>
		<link>http://www.jsolutions.biz/blog/seo/yahoo-special-care-to-government-websites/</link>
		<comments>http://www.jsolutions.biz/blog/seo/yahoo-special-care-to-government-websites/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 03:38:38 +0000</pubDate>
		<dc:creator>Joseph Mok</dc:creator>
				<category><![CDATA[搜尋引擎優化 SEO]]></category>

		<guid isPermaLink="false">http://www.jsolutions.biz/blog/?p=484</guid>
		<description><![CDATA[很多人都認為搜尋引擎對政府網站特別重視，因此相關的搜尋結果中，政府網站的網頁總是排得比較前。政府的資料可信性不容置疑，能提供準確的訊息給用家，排得較前也無可厚非。
最近完成了一個新網站，由於內容和政府網站的資料有相同之處，筆者也預計到一定會有上述情況發生，不過沒想到原來Yahoo!對政府網站真的有特別照顧，大家可看看以下的搜尋結果：

圖中可見搜尋結果的條目，是以文娛活動的名稱為標題，然而當你點撃這個連結，就會發現康文署網頁上的標題是「文 化 節 目 節 目 詳 情」。要知道在一般情況下，搜尋引擎只會使用網頁上 Title Tag 上的文字作為搜尋結果標題，因為要抽取內文作為標題，顯然要先理解內文的資訊，才能給予一個比原網頁更貼切的標題。
其實以上康文署網頁資料是來自其站上的活動搜尋工具 (雖說是搜尋，但也有提供列表顯示各項活動，因此搜尋引擎可以收錄個別活動資料)，可能這網頁的框架用了不少時間，而且更新的頻率也很高，因此Yahoo!會嘗試給一個更貼切的標題給用家。但Yahoo!也不是每個活動都會自行更改標題，究竟在什麼情況之下才會進行，則只有Yahoo!才知道。
Permalinks:Yahoo! 對政府網站的特別照顧
<p>Permalinks:<br/><br/><a href="http://www.jsolutions.biz/blog/seo/yahoo-special-care-to-government-websites/">Yahoo! 對政府網站的特別照顧</a></p>
]]></description>
			<content:encoded><![CDATA[<p>很多人都認為搜尋引擎對政府網站特別重視，因此相關的搜尋結果中，政府網站的網頁總是排得比較前。政府的資料可信性不容置疑，能提供準確的訊息給用家，排得較前也無可厚非。</p>
<p>最近完成了一個新網站，由於內容和政府網站的資料有相同之處，筆者也預計到一定會有上述情況發生，不過沒想到原來Yahoo!對政府網站真的有特別照顧，大家可看看以下的搜尋結果：</p>
<p><img class="alignnone size-full wp-image-485" style="border: 1px solid black;" title="2009-11-13_094156" src="http://www.jsolutions.biz/blog/wp-content/uploads/2009/11/2009-11-13_094156.png" alt="2009-11-13_094156" width="409" height="185" /></p>
<p>圖中可見搜尋結果的條目，是以文娛活動的名稱為標題，然而當你點撃這個連結，就會發現康文署網頁上的標題是「文 化 節 目 節 目 詳 情」。要知道在一般情況下，搜尋引擎只會使用網頁上 Title Tag 上的文字作為搜尋結果標題，因為要抽取內文作為標題，顯然要先理解內文的資訊，才能給予一個比原網頁更貼切的標題。</p>
<p>其實以上康文署網頁資料是來自其站上的活動搜尋工具 (雖說是搜尋，但也有提供列表顯示各項活動，因此搜尋引擎可以收錄個別活動資料)，可能這網頁的框架用了不少時間，而且更新的頻率也很高，因此Yahoo!會嘗試給一個更貼切的標題給用家。但Yahoo!也不是每個活動都會自行更改標題，究竟在什麼情況之下才會進行，則只有Yahoo!才知道。</p>
<p>Permalinks:<br/><br/><a href="http://www.jsolutions.biz/blog/seo/yahoo-special-care-to-government-websites/">Yahoo! 對政府網站的特別照顧</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jsolutions.biz/blog/seo/yahoo-special-care-to-government-websites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>令人不安的 Google Sidewiki</title>
		<link>http://www.jsolutions.biz/blog/internet/not-feeling-comfortable-with-google-sidewiki/</link>
		<comments>http://www.jsolutions.biz/blog/internet/not-feeling-comfortable-with-google-sidewiki/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 08:11:10 +0000</pubDate>
		<dc:creator>Joseph Mok</dc:creator>
				<category><![CDATA[互聯網]]></category>

		<guid isPermaLink="false">http://www.jsolutions.biz/blog/?p=480</guid>
		<description><![CDATA[Google 剛推出了一個新工具 Sidewiki，用家只要安裝了Google Toolbar，就可在任何網頁上留言，亦可閱讀其他人在同一網頁上的留言。Google 認為這工具有助提供更多更有用的資訊給用戶。
舊酒新瓶
以第三方工具形式，讓用家在任何網頁上留言的意念亳不新鮮，早在1999年已有類似服務 Third Voice。為什麼以前沒有成功？原因是需要用家登記並安裝瀏覽器插件，以前瀏覽網頁的速度已很慢，更要用插件，慢上加慢當然不受歡迎。後期也有一些公司嘗試，最有 web 2.0 網站感覺的是 Diigo，把 bookmark + content highlight 等設計成個人學習工具，分享評論次之，我相信用戶也以此為主要用途。
時至今日要在網站加入和訪客交流的功能真是易如反掌，免費的留言版、論壇程式或者服務不缺，就算想做到即時回應， Live Chat 、Helpdesk 等也有大量供應商，網站若果未有提供和用戶交流的工具，並非技術和成本問題，而是怕沒時間管理。
Blogger / Webmaster 為什麼不喜歡 Google Sidewiki
用 webmaster 的角度看，Google Sidewiki 帶來的麻煩比好處更多，如前述交流的渠道根本不缺，為什麼要多此一舉呢？Buzzmachine 上的討論相當激烈，筆者嘗試歸納他們關注的問題：

Google 「偷取」了網站的用戶評論，評論是網頁內容的一部分，而且對受歡迎的網誌來說更是非常重要的部分
強制參與，不論你喜不喜歡
必須安裝 Google Toolbar
webmaster 對留言完成沒有監控權，縱使看到惡意評論、廣告等也只可向 Google 提出，會否處理、有沒有時間處理成疑
有人在網站留言後沒有通知機制，難以處理回應
某些人可能錯以為 Google Sidewiki 是網站的一部分，或者以為 Sidewiki 是網站使用的留言服務，讓立心不良的人有機可圖，例如在慈善網站上留言叫人捐助騙財

目前為止 webmaster 可以做的是向 Google 表明網站擁有權，從而可以在 Sidewiki 上留下一個置頂的訊息。
個人認為最終 Google 會提供一些 API，令留言可以集中在網站指定的地方，如 Wordpress comment 或其他留言系統的服務令管理較易，但若果網站希望可以退出或者刪除 / 審核留言內容，估計機會很渺茫。
惡意留言、廣告、欺詐
Google [...]<p>Permalinks:<br/><br/><a href="http://www.jsolutions.biz/blog/internet/not-feeling-comfortable-with-google-sidewiki/">令人不安的 Google Sidewiki</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Google 剛推出了一個新工具 Sidewiki，用家只要安裝了Google Toolbar，就可在任何網頁上留言，亦可閱讀其他人在同一網頁上的留言。Google 認為這工具有助提供更多更有用的資訊給用戶。</p>
<p><span style="color: #993300;">舊酒新瓶</span></p>
<p>以第三方工具形式，讓用家在任何網頁上留言的意念亳不新鮮，早在1999年已有類似服務 Third Voice。為什麼以前沒有成功？原因是需要用家登記並安裝瀏覽器插件，以前瀏覽網頁的速度已很慢，更要用插件，慢上加慢當然不受歡迎。後期也有一些公司嘗試，最有 web 2.0 網站感覺的是 Diigo，把 bookmark + content highlight 等設計成個人學習工具，分享評論次之，我相信用戶也以此為主要用途。</p>
<p>時至今日要在網站加入和訪客交流的功能真是易如反掌，免費的留言版、論壇程式或者服務不缺，就算想做到即時回應， Live Chat 、Helpdesk 等也有大量供應商，網站若果未有提供和用戶交流的工具，並非技術和成本問題，而是怕沒時間管理。</p>
<p><span style="color: #993300;">Blogger / Webmaster 為什麼不喜歡 Google Sidewiki</span></p>
<p>用 webmaster 的角度看，Google Sidewiki 帶來的麻煩比好處更多，如前述交流的渠道根本不缺，為什麼要多此一舉呢？<a href="http://www.buzzmachine.com/2009/09/23/google-sidewiki-danger/">Buzzmachine</a> 上的討論相當激烈，筆者嘗試歸納他們關注的問題：</p>
<ol>
<li>Google 「偷取」了網站的用戶評論，評論是網頁內容的一部分，而且對受歡迎的網誌來說更是非常重要的部分</li>
<li>強制參與，不論你喜不喜歡</li>
<li>必須安裝 Google Toolbar</li>
<li>webmaster 對留言完成沒有監控權，縱使看到惡意評論、廣告等也只可向 Google 提出，會否處理、有沒有時間處理成疑</li>
<li>有人在網站留言後沒有通知機制，難以處理回應</li>
<li>某些人可能錯以為 Google Sidewiki 是網站的一部分，或者以為 Sidewiki 是網站使用的留言服務，讓立心不良的人有機可圖，例如在慈善網站上留言叫人捐助騙財</li>
</ol>
<p>目前為止 webmaster 可以做的是向 Google 表明網站擁有權，從而可以<a href="http://www.google.com/support/toolbar/bin/answer.py?hl=en&amp;answer=157270">在 Sidewiki 上留下一個置頂的訊息</a>。</p>
<p>個人認為最終 Google 會提供一些 API，令留言可以集中在網站指定的地方，如 Wordpress comment 或其他留言系統的服務令管理較易，但若果網站希望可以退出或者刪除 / 審核留言內容，估計機會很渺茫。</p>
<p><span style="color: #993300;">惡意留言、廣告、欺詐</span></p>
<p>Google 對處理惡意留言、廣告、欺詐訊息問題相當有信心，認為其系統可以杜絕以上問題，我不下結論，不如大家去 Youtube 上看看，你覺得他們做得出色嗎？在英國已有人試用 Sidewiki，<a href="http://www.malcolmcoles.co.uk/blog/sidewiki-abuse-newspapers/">在《每日郵報》網站上叫人轉看《衛報》</a>。我估計很多以打廣告為生的公司已蠢蠢欲動，國內很多用戶上不到 Youtube 網站，不過 Google Sidewiki 絕對是商機無限。如果你經營一個商業網站，自然不希望競爭對手的訊息出現在自己網站之上。但使用 Sidewiki 很易令人有機可乘。事實上不一定要到直接的競爭對手網站上留言，假如我經營印囍帖的生意，我大可以到婚禮相關行業的網站上留言打廣告。</p>
<p><a href="http://zh.wikipedia.org/wiki/%E8%B4%BE%E5%90%9B%E9%B9%8F">賈君鵬事件</a>中，可見有些公司玩「馬甲」已玩到出神入化，難辨真偽，而寫軟文偽原創是國內做 Internet Marketing 的基本模式，你認為 Google 有多少能力打勝這場仗？又願意付出多少保障網站的權益？</p>
<p><span style="color: #993300;">Sidewiki 會成為主流嗎</span></p>
<p>寫這篇文章之時我很留意究竟有沒有人利用 Twitter 製作同類服務，目前已找到2個。這一類不需要網站安裝，利用既有服務，把留言討論功能加在網站的服務看來是方興未艾，究竟會否受用家歡迎，變成日後留言討論的集中點仍是未知知數，希望筆者和眾 webmaster 的想法只是杞人憂天。</p>
<p>Permalinks:<br/><br/><a href="http://www.jsolutions.biz/blog/internet/not-feeling-comfortable-with-google-sidewiki/">令人不安的 Google Sidewiki</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jsolutions.biz/blog/internet/not-feeling-comfortable-with-google-sidewiki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>徹底關閉 Wordpress RSS 的功能</title>
		<link>http://www.jsolutions.biz/blog/cms/disable-wordpress-rss/</link>
		<comments>http://www.jsolutions.biz/blog/cms/disable-wordpress-rss/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 08:00:15 +0000</pubDate>
		<dc:creator>Joseph Mok</dc:creator>
				<category><![CDATA[內容管理系統 CMS]]></category>

		<guid isPermaLink="false">http://www.jsolutions.biz/blog/?p=473</guid>
		<description><![CDATA[筆者不是 RSS is dead (大意是 RSS 的功能已被 Twitter 取代，因後者更快) 的支持者，RSS 仍是我日常獲取資訊的主要渠道。不過若把 Wordpress 作為網站 CMS 的情況下，RSS 則並非必要。要關閉 Wordpress 的 RSS 功能，最好要做到「內外兼顧」。
關閉 RSS feed 輸出功能
首先從內部入手，令 Wordpress 不會輸出 RSS feed。WPengineer 教大家使用 Wordpress 的 hook ，指示系統取消 RSS feed 輸出，辦法是在 template 的 functions.php 檔案 (如果 template 沒有這檔案可以自行創建)，加入以下 function：



/**


&#160;* disable feed


&#160;*/


function fb_disable_feed&#40;&#41; &#123;


&#160; &#160; &#160; &#160; wp_die&#40; __&#40;&#8216;No feed available,please visit [...]<p>Permalinks:<br/><br/><a href="http://www.jsolutions.biz/blog/cms/disable-wordpress-rss/">徹底關閉 Wordpress RSS 的功能</a></p>
]]></description>
			<content:encoded><![CDATA[<p>筆者不是 RSS is dead (大意是 RSS 的功能已被 Twitter 取代，因後者更快) 的支持者，RSS 仍是我日常獲取資訊的主要渠道。不過若把 Wordpress 作為網站 CMS 的情況下，RSS 則並非必要。要關閉 Wordpress 的 RSS 功能，最好要做到「內外兼顧」。</p>
<p><span style="color: #800080;">關閉 RSS feed 輸出功能</span></p>
<p>首先從內部入手，令 Wordpress 不會輸出 RSS feed。<a href="http://wpengineer.com/disable-wordpress-feed/">WPengineer</a> 教大家使用 Wordpress 的 hook ，指示系統取消 RSS feed 輸出，辦法是在 template 的 functions.php 檔案 (如果 template 沒有這檔案可以自行創建)，加入以下 function：</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* disable feed</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> fb_disable_feed<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; wp_die<span class="br0">&#40;</span> __<span class="br0">&#40;</span><span class="st0">&#8216;No feed available,please visit our &lt;a href=&quot;&#8217;</span>. get_bloginfo<span class="br0">&#40;</span><span class="st0">&#8216;url&#8217;</span><span class="br0">&#41;</span> .<span class="st0">&#8216;&quot;&gt;homepage&lt;/a&gt;!&#8217;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">add_action<span class="br0">&#40;</span><span class="st0">&#8216;do_feed&#8217;</span>, <span class="st0">&#8216;fb_disable_feed&#8217;</span>, <span class="nu0">1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">add_action<span class="br0">&#40;</span><span class="st0">&#8216;do_feed_rdf&#8217;</span>, <span class="st0">&#8216;fb_disable_feed&#8217;</span>, <span class="nu0">1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">add_action<span class="br0">&#40;</span><span class="st0">&#8216;do_feed_rss&#8217;</span>, <span class="st0">&#8216;fb_disable_feed&#8217;</span>, <span class="nu0">1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">add_action<span class="br0">&#40;</span><span class="st0">&#8216;do_feed_rss2&#8242;</span>, <span class="st0">&#8216;fb_disable_feed&#8217;</span>, <span class="nu0">1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">add_action<span class="br0">&#40;</span><span class="st0">&#8216;do_feed_atom&#8217;</span>, <span class="st0">&#8216;fb_disable_feed&#8217;</span>, <span class="nu0">1</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>由於這方法是在 template 檔案上實行，因此必須謹記當改用另一個 template 時，必須在新 template 中加入相同 function。另外，template 內 RSS 相關的連結也需要去除。</p>
<p><span style="color: #800080;">刪除 Template 內所有 RSS feed 的連結</span></p>
<p>網頁上顯示的 RSS feed 連結相信大家也可輕易移除，不過有一些「隱藏」的連結，則會透過瀏覽器而被發現，例如 Firefox 就有 RSS auto-discovery 功能，雖然開啟這連結也只會顯示錯誤訊息，但最好還是把這些「隱藏」連結一併移除。</p>
<p>首先要刪除 template (通常是 header.php) 內以下的代碼 (如有)</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt;link rel=<span class="st0">&quot;alternate&quot;</span> type=<span class="st0">&quot;application/rss+xml&quot;</span> title=<span class="st0">&quot;RSS 2.0&quot;</span> href=<span class="st0">&quot;&lt;?php bloginfo(&#8216;rss2_url&#8217;); ?&gt;&quot;</span> /&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;link rel=<span class="st0">&quot;alternate&quot;</span> type=<span class="st0">&quot;text/xml&quot;</span> title=<span class="st0">&quot;RSS .92&quot;</span> href=<span class="st0">&quot;&lt;?php bloginfo(&#8216;rss_url&#8217;); ?&gt;&quot;</span> /&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;link rel=<span class="st0">&quot;alternate&quot;</span> type=<span class="st0">&quot;application/atom+xml&quot;</span> title=<span class="st0">&quot;Atom 0.3&quot;</span> href=<span class="st0">&quot;&lt;?php bloginfo(&#8216;atom_url&#8217;); ?&gt;&quot;</span> /&gt;</div>
</li>
</ol>
</div>
<p>某些 template 使用 wp_head() 來加入網頁 head tags 的內容，如果刪除 template 中的 wp_head() 則會同時刪除其他有用的資訊。其實可以用上述關閉 RSS feed 輸出的方法，來設定 wp_head() 令其只會不輸出 RSS feed links 但保留其他資訊，方法是在 functions.php 上加入：</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">remove_action<span class="br0">&#40;</span> <span class="st0">&#8216;wp_head&#8217;</span>, <span class="st0">&#8216;feed_links_extra&#8217;</span>, <span class="nu0">3</span> <span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>這樣就可以完全刪除 RSS 的連結了。</p>
<p>Permalinks:<br/><br/><a href="http://www.jsolutions.biz/blog/cms/disable-wordpress-rss/">徹底關閉 Wordpress RSS 的功能</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jsolutions.biz/blog/cms/disable-wordpress-rss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wordpress 顯示相同標籤的文章列表</title>
		<link>http://www.jsolutions.biz/blog/cms/related-posts-by-tags-on-wordpress-sidebar/</link>
		<comments>http://www.jsolutions.biz/blog/cms/related-posts-by-tags-on-wordpress-sidebar/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 08:03:50 +0000</pubDate>
		<dc:creator>Joseph Mok</dc:creator>
				<category><![CDATA[內容管理系統 CMS]]></category>

		<guid isPermaLink="false">http://www.jsolutions.biz/blog/?p=467</guid>
		<description><![CDATA[最近比較忙，偷空分享一個 Wordpress 的小技巧。
Wordpress 用家應該都知道，每篇文章都可加入標籤，方便讀者找到題材相近的文章。如果可以在網頁上顯示這些文章的標題和連結，製作成一個列表，相信對讀者很有幫助，亦可增加網誌的 Page View。筆者以前介紹過用分類 (Category) 製作「相關文章」列表，今次改用標籤來做，而另一個不同之處是把這列表放在側欄上。放在側欄和放在文章內容下方有什麼不同呢？答案是絕大部分 Template 中，前者是 The Loop 完結後才運行，而很多 template tags 是只可用在 The Loop 之中，如果你發現以前修改 template 時常常遇到問題，很可能是沒注意到這問題，故亂把內文一些元素移到側欄之上。
要以相同標籤製作「相關文章」列表，首先當然要獲取文章的標籤，可使用 get_the_tags(post_id) 這個 function：



&#160;


&#60;?php


&#160; &#160; &#160; &#160; global $post;


&#160; &#160; &#160; &#160; $alltags = &#8221;;


&#160; &#160; &#160; &#160; $posttags = get_the_tags&#40;$post-&#62;ID&#41;;


&#160; &#160; &#160; &#160; if &#40;$posttags&#41; &#123;


&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; foreach&#40;$posttags [...]<p>Permalinks:<br/><br/><a href="http://www.jsolutions.biz/blog/cms/related-posts-by-tags-on-wordpress-sidebar/">Wordpress 顯示相同標籤的文章列表</a></p>
]]></description>
			<content:encoded><![CDATA[<p>最近比較忙，偷空分享一個 Wordpress 的小技巧。</p>
<p>Wordpress 用家應該都知道，每篇文章都可加入標籤，方便讀者找到題材相近的文章。如果可以在網頁上顯示這些文章的標題和連結，製作成一個列表，相信對讀者很有幫助，亦可增加網誌的 Page View。筆者以前介紹過<a href="http://www.jsolutions.biz/blog/company/blog-and-microblog/ ">用分類 (Category) 製作「相關文章」列表</a>，今次改用標籤來做，而另一個不同之處是把這列表放在側欄上。放在側欄和放在文章內容下方有什麼不同呢？答案是絕大部分 Template 中，前者是 The Loop 完結後才運行，而很多 template tags 是只可用在 <a href="http://codex.wordpress.org/The_Loop">The Loop</a> 之中，如果你發現以前修改 template 時常常遇到問題，很可能是沒注意到這問題，故亂把內文一些元素移到側欄之上。</p>
<p>要以相同標籤製作「相關文章」列表，首先當然要獲取文章的標籤，可使用 get_the_tags(post_id) 這個 function：</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/global"><span class="kw3">global</span></a> <span class="re0">$post</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$alltags</span> = <span class="st0">&#8221;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$posttags</span> = get_the_tags<span class="br0">&#40;</span><span class="re0">$post</span>-&gt;<span class="me1">ID</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$posttags</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$posttags</span> <span class="kw1">as</span> <span class="re0">$tag</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$alltags</span> . <span class="re0">$tag</span>-&gt;<span class="me1">name</span> . <span class="st0">&#8216;,&#8217;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>以上方法可取得文章所有標籤，每個標籤用,分開，用意是之後顯示包舍上述任何一個標籤的文章，如果希望顯示包括所有標籤的文章，則用+號分隔。</p>
<p>之後可用以下方法抽取相關文章，特別要注意的是用 get_posts function，這 function 用於 The Loop 之外。</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$args</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;numberposts&#8217;</span> =&gt; <span class="nu0">5</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;post__not_in&#8217;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="re0">$post</span>-&gt;<span class="me1">ID</span><span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;orderby&#8217;</span>=&gt;<span class="st0">&#8216;rand&#8217;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;tag&#8217;</span> =&gt; <span class="re0">$alltags</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$myposts</span> = get_posts<span class="br0">&#40;</span><span class="re0">$args</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$myposts</span> <span class="kw1">as</span> <span class="re0">$post</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#8216;&lt;li&gt;&lt;a href=&quot;&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; the_permalink<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#8216;&quot;&gt;&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; the_title<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#8216;&lt;/a&gt;&lt;/li&gt;&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>以上幾個 arugments，意思分別是顯示5篇相關文、不顯示目前這篇文章及隨機顯示，另外需要設計只有獨立顯示一篇文章時，才使用這功能。</p>
<p>Permalinks:<br/><br/><a href="http://www.jsolutions.biz/blog/cms/related-posts-by-tags-on-wordpress-sidebar/">Wordpress 顯示相同標籤的文章列表</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jsolutions.biz/blog/cms/related-posts-by-tags-on-wordpress-sidebar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何在 Zen Cart 加入最新版本 FCKEditor</title>
		<link>http://www.jsolutions.biz/blog/cms/how-to-install-fckeditor-for-zen-cart/</link>
		<comments>http://www.jsolutions.biz/blog/cms/how-to-install-fckeditor-for-zen-cart/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 07:57:54 +0000</pubDate>
		<dc:creator>Joseph Mok</dc:creator>
				<category><![CDATA[內容管理系統 CMS]]></category>

		<guid isPermaLink="false">http://www.jsolutions.biz/blog/?p=449</guid>
		<description><![CDATA[Zen Cart 附帶的 WYSIWYG Editor 是 HTMLArea，HTMLArea 是一個很舊、而且不再更新的程式，因此未必是最理想的選擇。目前兩個最流行且免費的 Editor 有 FCKEditor 和 TinyMCE，均可用在 Zen Cart 系統內。雖然有人製作了插件把這兩個編輯器加入，然而這些插件很久沒有更新，未能提供最新版本的 Editor。新的版本除了會加入新功能外，最重要是修補安全漏洞，使用版本太舊的 Editor 存有風險。其實在 Zen Cart 加入 Editor 一點也不難，今次為大家示範如何加入 FCKEditor。
下載及設定 FCKEditor
首先當然要到 FCKEditor 網站下載最新版本的程式，解壓然後上傳到 Zen Cart 安裝目錄(或根目錄)/editors/fckeditor/。順帶一提，上傳這類有很多檔案的程式，更快捷的方法是先上傳整個壓縮檔再在伺服器上解壓，有些網存公司提供的控制台，例如 cpanel 有檔案管理功能，可用作上傳及解壓，當然也有其他方法可以做到，讀者可向網存公司查詢伺服器是否支援解壓功能。上傳後先測試一下，瀏覽 http://你的網址/Zen Cart 安裝目錄(如有)/editors/fckeditor/_samples/default.html，選擇 PHP 的 sample，試用及提交表單。

FCKEditor 有很多 HTMLArea 沒有的功能，其中一個很實用的功能是可使用自定 css style，令輸入的資料有統一的顯示效果，不必死記以前輸入產品資料時用了什麼字體大小、字體顏色等等。而用家更可進一步預先設定模版，例如可以先製作一個產品規格的模版 (當然不要和 Zen Cart 原有的功能重疊)，方便日後輸入同類資料。如果大家有需要使用上述功能，請參看  http://docs.fckeditor.net/。
另一個 FCKEditor 很受歡迎的功能是檔案上傳，例如在編輯器中直接上傳圖片，甚為方便。
首先必須開啟這功能
1. 確定 Zen Cart 安裝目錄(或根目錄)/editors/fckeditor/fckconfig.js [...]<p>Permalinks:<br/><br/><a href="http://www.jsolutions.biz/blog/cms/how-to-install-fckeditor-for-zen-cart/">如何在 Zen Cart 加入最新版本 FCKEditor</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Zen Cart 附帶的 WYSIWYG Editor 是 HTMLArea，HTMLArea 是一個很舊、而且不再更新的程式，因此未必是最理想的選擇。目前兩個最流行且免費的 Editor 有 FCKEditor 和 TinyMCE，均可用在 Zen Cart 系統內。雖然有人製作了插件把這兩個編輯器加入，然而這些插件很久沒有更新，未能提供最新版本的 Editor。新的版本除了會加入新功能外，最重要是修補安全漏洞，使用版本太舊的 Editor 存有風險。其實在 Zen Cart 加入 Editor 一點也不難，今次為大家示範如何加入 FCKEditor。</p>
<p><span style="color: #008000;">下載及設定 FCKEditor</span></p>
<p>首先當然要到 <a href="http://www.fckeditor.net/">FCKEditor 網站</a>下載最新版本的程式，解壓然後上傳到 Zen Cart 安裝目錄(或根目錄)/editors/fckeditor/。順帶一提，上傳這類有很多檔案的程式，更快捷的方法是先上傳整個壓縮檔再在伺服器上解壓，有些網存公司提供的控制台，例如 cpanel 有檔案管理功能，可用作上傳及解壓，當然也有其他方法可以做到，讀者可向網存公司查詢伺服器是否支援解壓功能。上傳後先測試一下，瀏覽 http://你的網址/Zen Cart 安裝目錄(如有)/editors/fckeditor/_samples/default.html，選擇 PHP 的 sample，試用及提交表單。</p>
<p><img class="alignnone size-full wp-image-450" style="border: 1px solid black;" title="zen-fck1" src="http://www.jsolutions.biz/blog/wp-content/uploads/2009/08/zen-fck1.png" alt="zen-fck1" width="354" height="359" /></p>
<p>FCKEditor 有很多 HTMLArea 沒有的功能，其中一個很實用的功能是可使用自定 css style，令輸入的資料有統一的顯示效果，不必死記以前輸入產品資料時用了什麼字體大小、字體顏色等等。而用家更可進一步預先設定模版，例如可以先製作一個產品規格的模版 (當然不要和 Zen Cart 原有的功能重疊)，方便日後輸入同類資料。如果大家有需要使用上述功能，請參看  <a href="http://docs.fckeditor.net/">http://docs.fckeditor.net/</a>。</p>
<p>另一個 FCKEditor 很受歡迎的功能是檔案上傳，例如在編輯器中直接上傳圖片，甚為方便。</p>
<p>首先必須開啟這功能</p>
<p>1. 確定 Zen Cart 安裝目錄(或根目錄)/editors/fckeditor/fckconfig.js 中，</p>
<p><code>var _FileBrowserLanguage = 'php' ;<br />
var _QuickUploadLanguage = 'php' ;</code></p>
<p>2. 開啟 Zen Cart 安裝目錄(或根目錄)/editors/fckeditor/editor/filemanger/connectors/php/config.php，更改 <code>$Config['Enabled'] </code>為 true.</p>
<p>然後設定上傳的目錄</p>
<p>3. 在 Zen Cart 安裝目錄(或根目錄)/editors/fckeditor/editor/filemanger/connectors/php/config.php，設定上傳檔案的目錄 (relative to root)，例如</p>
<p><code>$Config['UserFilesPath'] = '/userfiles/' ;</code></p>
<p>4. 部分伺服器需要更改以上目錄的權限到 777 才能上傳，可向網存公司查詢。有關此題目，可參看 <a href="http://www.joomlatutorials.com/joomla-tips-and-tricks/40-miscellaneous-joomla-tips/111-permissions-under-phpsuexec.html">Permissions under phpsuexec</a> 。</p>
<p>其實 FCKEditor 有一個更強大的檔案上傳插件，不過是收費版本，讀者可自行決定是否購買。</p>
<p>完成後把更改過的檔案上傳及測試。</p>
<p><span style="color: #008000;">整合到 Zen Cart</span></p>
<p>把 FCKEditor 整合到 Zen Cart 真的很容易，原因是 Zen Cart 一早已替你設定了！開啟 Zen Cart 安裝目錄(或根目錄)/admin目錄/includes/init_includes/init_html_editor.php (注意：據 Zen Cart 的安全指引，必須把 admin 目錄更名)，uncomment 以下一句，即刪除 //</p>
<p><code>//  $editors_list['FCKEDITOR'] = array('desc' =&gt; EDITOR_FCKEDITOR, 'handler' =&gt; 'fckeditor.php', 'special_needs' =&gt; '');</code></p>
<p>把更改的檔案上傅到 Zen Cart 安裝目錄(或根目錄)/admin目錄/includes/init_includes/overrides/ 目錄就完成，到後台更改 Editor 為 FCKEditor 就可使用了。</p>
<p><img class="alignnone size-full wp-image-458" style="border: 1px solid black;" title="zen-fck2" src="http://www.jsolutions.biz/blog/wp-content/uploads/2009/08/zen-fck2.png" alt="zen-fck2" width="430" height="693" /></p>
<p><span style="color: #008000;">刪除示範檔案</span></p>
<p>若果你開啟了檔案上傳功能，必須記得把示範檔案刪除，因 FCKEditor 的位置放於任何人也能瀏覽的目錄，即可看到你上傅的所有檔案，包括你未想公開的。</p>
<p>Permalinks:<br/><br/><a href="http://www.jsolutions.biz/blog/cms/how-to-install-fckeditor-for-zen-cart/">如何在 Zen Cart 加入最新版本 FCKEditor</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jsolutions.biz/blog/cms/how-to-install-fckeditor-for-zen-cart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Delicious 可以借 Twitter 注入生氣嗎？</title>
		<link>http://www.jsolutions.biz/blog/internet/delicious-twitter-integration/</link>
		<comments>http://www.jsolutions.biz/blog/internet/delicious-twitter-integration/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 05:21:48 +0000</pubDate>
		<dc:creator>Joseph Mok</dc:creator>
				<category><![CDATA[互聯網]]></category>

		<guid isPermaLink="false">http://www.jsolutions.biz/blog/?p=442</guid>
		<description><![CDATA[Delicious 書籤服務終於推出新功能了，3個新增的功能中2個和 Twitter 相關，明顯是想借助後者的超高人氣為漸漸失去光彩的 social bookmark 服務加入新意。

首先，Delicious 把首頁更改成 Fresh Bookmarks。所謂 Fresh Bookmarks，大致上是以 Twitter 上有多少人談論，及用戶加入的書籤而計算出來的排行表，顯示當前最受人關注的消息，而在每一個 bookmark 的下方，更加入了 related tweets。在官方網誌中提到，在技術上 Fresh Bookmarks  是計算相關的 tweets 而非單純地點算有多少個 tweets 包含某個連結，而且要做到去除低質量和spam內容。以往 Delicious 首頁的書籤很多都和設計相關，更改之後則可包含更多時事、科技、互聯網和媒體的資訊。而 Fresh Bookmarks 應該比 Tweetmeme 這類只考慮連結數量的網站更準確。

另一方面，當用戶加入書籤時可同時分享到 Twitter，並可以寫下訊息，和 twitthat 的功能類似，可惜此功能不會把網頁標題加入訊息內，未必每個用戶都習慣這模式。
較早時 addtoany 發表了一個統計報告，發現 Fackbook 已成為人們最常用的分享內容渠道 (24%)，第2和第3分別是 e-mail (11.1%) 和 Twitter (10.8%)，Delicious 則只有 4.5%，而 Digg 的 4.4% 也是同病相連，難怪兩者都要出盡法寶求變。雖然 addtoany 的用戶數目大幅落後於 sharethis 和 [...]<p>Permalinks:<br/><br/><a href="http://www.jsolutions.biz/blog/internet/delicious-twitter-integration/">Delicious 可以借 Twitter 注入生氣嗎？</a></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://delicious.com/">Delicious 書籤</a>服務終於推出新功能了，3個新增的功能中2個和 Twitter 相關，明顯是想借助後者的超高人氣為漸漸失去光彩的 social bookmark 服務加入新意。</p>
<p><img class="alignnone size-full wp-image-443" style="border: 1px solid black;" title="delicious_fresh_bookmark" src="http://www.jsolutions.biz/blog/wp-content/uploads/2009/08/delicious_fresh_bookmark.png" alt="delicious_fresh_bookmark" width="450" height="339" /></p>
<p>首先，Delicious 把首頁更改成 Fresh Bookmarks。所謂 Fresh Bookmarks，大致上是以 Twitter 上有多少人談論，及用戶加入的書籤而計算出來的排行表，顯示當前最受人關注的消息，而在每一個 bookmark 的下方，更加入了 related tweets。在<a href="http://blog.delicious.com/blog/2009/08/delicious-homepage-gets-%e2%80%9cfresh%e2%80%9d.html">官方網誌</a>中提到，在技術上 Fresh Bookmarks  是計算相關的 tweets 而非單純地點算有多少個 tweets 包含某個連結，而且要做到去除低質量和spam內容。以往 Delicious 首頁的書籤很多都和設計相關，更改之後則可包含更多時事、科技、互聯網和媒體的資訊。而 Fresh Bookmarks 應該比 <a href="http://tweetmeme.com/">Tweetmeme</a> 這類只考慮連結數量的網站更準確。</p>
<p><img class="alignnone size-full wp-image-444" style="border: 1px solid black;" title="delicious_fresh_bookmark2" src="http://www.jsolutions.biz/blog/wp-content/uploads/2009/08/delicious_fresh_bookmark2.png" alt="delicious_fresh_bookmark2" width="450" height="281" /></p>
<p>另一方面，當用戶加入書籤時可同時分享到 Twitter，並可以寫下訊息，和 twitthat 的功能類似，可惜此功能不會把網頁標題加入訊息內，未必每個用戶都習慣這模式。</p>
<p>較早時 addtoany 發表了一個<a href="http://mashable.com/2009/07/20/facebook-sharing-data/">統計報告</a>，發現 Fackbook 已成為人們最常用的分享內容渠道 (24%)，第2和第3分別是 e-mail (11.1%) 和 Twitter (10.8%)，Delicious 則只有 4.5%，而 Digg 的 4.4% 也是同病相連，難怪兩者都要出盡法寶求變。雖然 addtoany 的用戶數目大幅落後於 sharethis 和 addthis，但個人估計要是做一個正式的調查，排名也不會有太大改變。</p>
<p><a href="http://www.readwriteweb.com/archives/delicious_reborn_as_real_time_news_tracker.php">Readwriteweb</a> 對 Fresh Bookmarks 的構思大表加許，認為 Delicious 老早就應該加入這功能，並可超越 Digg。<a href="http://tech.azuremedia.net/2009/08/05/1718/">Jansen</a> 則希望在自己的 bookmark 頁面，也能顯示每個條目有什麼相關的 tweets，以便可以發現關注同一訊息的 Twitter 用戶。而亦有人，包括 Delicious 的原作者不贊同這構思 (saving != sharing)。</p>
<p>究竟現在人們會如何使用 social bookmark 服務呢？雖然這類網站鼓勵用戶交流分享，但相信有不少用戶只會記下日後會再次瀏覽的網頁，時效性很短或者只看一次的則不會記下，筆者也是這類用戶之一。這2項新功能對我們不是很吸引，未必會改變我們使用 Delicious 的習慣。<a href="http://www.cloudnotes.net/2009/08/is-delicious-for-saving-or-for-sharing.html">Cloudnotes</a> 的看法大致和我相同，把 Twitter  和書籤、note-taking 當作不同類的服務使用。</p>
<p>以前分享訊息的平台只有 social bookmark，現在則有更多可以即時和其他人交流的渠道選擇，攤分了 social bookmark 的功能。既然新增的功能是針對把 Delicious 用作分享的用戶，就應該更加深入地整合 Twitter，例如 Fresh Bookmarks 可以增加數量，在用戶個人頁面顯示 related tweets，與及簡化分享的步驟和形式，否則像蜻蜓點水式的改動，則難以改變現狀。</p>
<p>Permalinks:<br/><br/><a href="http://www.jsolutions.biz/blog/internet/delicious-twitter-integration/">Delicious 可以借 Twitter 注入生氣嗎？</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jsolutions.biz/blog/internet/delicious-twitter-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Joomla! 圖像標題</title>
		<link>http://www.jsolutions.biz/blog/cms/image-as-title-in-joomla/</link>
		<comments>http://www.jsolutions.biz/blog/cms/image-as-title-in-joomla/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 11:41:47 +0000</pubDate>
		<dc:creator>Joseph Mok</dc:creator>
				<category><![CDATA[內容管理系統 CMS]]></category>

		<guid isPermaLink="false">http://www.jsolutions.biz/blog/?p=429</guid>
		<description><![CDATA[很多 Joomla! template 的 menu 和 module 標題都是 text-based，有沒有辦法可以更改為圖像呢？以前本網誌介紹過的使用圖像取代文字技巧製作網頁標題正好用來解決這問題。假如你所選用的模版，標題有使用 Header Tags，則只需要在後台設定 menu / module 的 suffix，然後使用 image replacement 的技巧修改 css，就能做到以圖像作為標題。
例如我想把 Latest News 的標題更改，首先進入後台，選 module manager 找出 Latest News (一個以標準 mod_latestnews 製作的 module)，在 Module class suffix 上加入自訂的 suffix (如 _mystyle)，然後增加一段 css 設定這標題的背景圖片就完成。



h3.latestnews_mystyle &#123;


&#160; &#160; &#160; &#160; width: 280px; height: 50px;


&#160; &#160; &#160; &#160; background: url&#40;&#34;../images/section_title_latestnews.png&#34;&#41; no-repeat;


&#160; [...]<p>Permalinks:<br/><br/><a href="http://www.jsolutions.biz/blog/cms/image-as-title-in-joomla/">Joomla! 圖像標題</a></p>
]]></description>
			<content:encoded><![CDATA[<p>很多 Joomla! template 的 menu 和 module 標題都是 text-based，有沒有辦法可以更改為圖像呢？以前本網誌介紹過的<a href="http://www.jsolutions.biz/blog/web-design/image-replacement-method-for-header/">使用圖像取代文字技巧製作網頁標題</a>正好用來解決這問題。假如你所選用的模版，標題有使用 Header Tags，則只需要在後台設定 menu / module 的 suffix，然後使用 image replacement 的技巧修改 css，就能做到以圖像作為標題。</p>
<p>例如我想把 Latest News 的標題更改，首先進入後台，選 module manager 找出 Latest News (一個以標準 mod_latestnews 製作的 module)，在 Module class suffix 上加入自訂的 suffix (如 _mystyle)，然後增加一段 css 設定這標題的背景圖片就完成。</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">h3<span class="re1">.latestnews_mystyle</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">width</span>: <span class="re3">280px</span>; <span class="kw1">height</span>: <span class="re3">50px</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span>: <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">&quot;../images/section_title_latestnews.png&quot;</span><span class="br0">&#41;</span> <span class="kw2">no-repeat</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">text-indent</span>: -<span class="re3">9999px</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p><img class="alignnone size-full wp-image-430" title="joomla-title" src="http://www.jsolutions.biz/blog/wp-content/uploads/2009/07/joomla-title.png" alt="joomla-title" width="260" height="188" /></p>
<p>不過如果你的設計比較複雜，不能單靠 css 就做到，則需要更改模版。Joomla! 提供了2個可行的方法，分別是 output overrides (或者可稱為 layout overrides) 和 module chrome。Joomla! 對 template 和 layout 兩個詞分得很清楚，layout 是指每一個 component 和 module 的顯示方式。Joomla! 上每一個 component 和 module 的式樣都是獨立和可以讓 template 自訂的方法覆寫，因此使用 output overrides 可徹底地更改網站的面貌。有關教學可參看官方網站的 <a href="http://docs.joomla.org/Understanding_Output_Overrides">Understanding Output Overrides</a>。要留意 layout overrides 會更改使用同一 module type 製作的 module，假如你的網站用 mod_latestnews 製作多個 modules，則所有 modules 的顯示方式也會變得一致。筆者極不建議你在 template 內加入 programming logic 來區分顯示方式，或者 module chrome 更合你的要求。</p>
<p><a href="http://woofandwarp.com/joomla/19-having-fun-with-joomla-module-chrome-and-suffix">Woof and Wraf</a> 為 module chrome 做了簡介和示範，文中可見同一 module ，放在不同的 module position ，其標題的背景圖片亦會改變，這正是 module chrome 的特點。假如你用 mod_latestnews 製作了兩個 modules，一個放在 sidebar ，需要使用圖像標題的 Latest News module，另一個放在內文下方，用來顯示某一類別文章的相關內容，這一區塊不需要標題，在這情況下 module chrome 就很合用。Module chrome 不能深入更改一個 module 的細節，但設定上比較容易，及可以預先製作不同的式樣，待有需要時使用。</p>
<p>Permalinks:<br/><br/><a href="http://www.jsolutions.biz/blog/cms/image-as-title-in-joomla/">Joomla! 圖像標題</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jsolutions.biz/blog/cms/image-as-title-in-joomla/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
