最近打算好好利用pLog的多網誌功能幫朋友架部落格,pLog的程式功能很強大,可是在社群服務方面好像還有一些小功能尚未補齊,以前只有自己用還不覺得有啥麻煩,現在要做社群,就產生困難了,其中我覺得有個很關鍵的不足,就是TopMenu沒辦法讓使用者自由定義。
這樣有很多個性需求就沒辦法滿足,例如,我是誰?這是什麼站?我為什麼要成立這個站?我的著作權宣告是什麼?(如果有Wiki)我的Wiki在哪裡?(如果另外有相簿)我的相簿在哪裡?我的留言本在哪裡?……這些常常出現在上方選單的功能,幾乎沒辦法用標準模版滿足個別需求。
以前自己改模版,可以把上方選單(Top Menu)直接做連結,指到單篇文章去(例如最常見的,指定一篇文章成為留言版之類的)。個人架站時,這麼做倒也不難,但如果要經營社群網誌,每個人的模版都要手動去改,那工程可不得了。
有什麼方法解決這個問題嗎?當然用plugin或TemplateEditor或直接用內建的「我的連結」,是有機會解決,不過總覺得麻煩。
昨天忽然靈光一閃,想到一個好點子,可以完全滿足上面所說的功能,而且不需要寫plugin,不需要特別為個別使用者修改模版(當然也不用要求使用者自行操作TemplateEditor),只要用pLog現有功能,就可以完成通用模版,讓每個網誌的使用者
自由定義自己的上方選單。
這個點子說穿了一點也不值錢,其實就是充分利用現成的getAbout變數而已。因為getAbout會取得個別網誌所屬的「分類描述」的內容,而那個內容的輸入框又可以接受html語法,因而我們可以讓使用者在裡面加上他自己定義的超連結,愛怎麼加就怎麼加。
我已做好範例,現在連到「
老貓學出版」,我的上方選單(如何使用本站|電子報精華區|關於本站|留言本│好站連結|作者登入)就是用新方法完成的。這個技巧特別有趣的地方是做法非常簡單,請看:
一、先在header模版裡把{$blog->getAbout()}加到Topmenu區裡面,我自己的例子是這樣的:
<div id="Topmenu">
{$blog->getAbout()}
<a href="{$url->templatePage("links")}">{$locale->tr("links")}</a> |
<a href="{$url->getAdminUrl()}">作者登入</a>
</div>
二、把你想要放在選單區的東西寫成正式文章,例如「關於本站」,例如「FAQ」,例如「著作權聲明」等等,想放什麼上去就寫他一篇;
三、最後到後台「個人網誌設定→網誌設定→分類描述」裡面,填好上述文章的超連結,例如我的網誌裡填寫的內容是這樣的:
<a href="http://b-oo-k.net/blog/post/1/24">如何使用本站</a> |
<a href="http://bookhome.info/bookpedia/pmwiki.php/Bookpedia/EPaperSelection">電子報精華區</a> |
<a href="http://b-oo-k.net/blog/post/1/222">關於本站</a> |
<a href="http://b-oo-k.net/blog/category/1/32">留言本</a> │
好了,這樣就完成了。事實上做完了第一步,pLog架站管理員的工作就算完成了,剩下的事情就是把我這篇文章提示給你的網誌使用者,請他們從第二步開始接著做就行了。
在每個模版的TopMenu區都加上getAbout參數,並且提示使用者本文所說的小技巧,你的pLog就擁有讓使用者自由定義TopMenu的超級功能了。
※ ※ ※
寫下這篇以後,忽然有個小小的感想,就是寫plugin的人可以在外掛程式上署名,但是提出這個技巧,卻找不到一個「作品」可以署名,還真是給他有點不滿足啊,呵呵。