前兩週因為工作的關係,用 PHP 拼了一個東西出來。
話說木柵某國立大學有一個人渣養成中心叫做傳播學院,這個傳播學院有一個在職專班,這個在職專班從去年開始發行了一份電子刊物,作法是,助教與工讀生一起用 DreamWeaver 做出整期刊物的所有靜態 HTML 網頁,上傳到網頁伺服器上後,用瀏覽器裡頭的寄送網頁功能,將當期期刊的首頁透過 Outlook Express 寄出去,至於要寄給哪些人呢,就是手動維護 Outlook Express 裡頭的通訊錄,如果想要退訂,就請想辦法找到在職專班助教。如此一來,就同時有網頁版本、以及電子郵件版本的線上發行。
基本上我覺得這樣也頂好、頂直觀的。不過呢,這個人渣養成中心有很多眼高手低的老師,總覺得看那份東西不順眼,我也不知道在不順眼些什麼,總之就是想要眼高手低的改個版,然後又眼高手低的想要做一個什麼線上可訂閱、退訂的機制,然後又因為眼高手低所以做不出來,然後就莫名其妙變成我這個苦命助教的工作。
找了一下,這年頭要架設論壇啦、blog 啦的現成系統很多,但是看來看去,在這方面的需求上,就是找不到什麼合用的—或是說,我找不到,如果您知道什麼好用的系統的話歡迎告訴我,讓我知道我做的是白工,呵。首先看到的是有個叫做 PHPList 的東西,可以讓人自行訂閱、退訂 mailing list,也提供以範本為基礎的電子郵件內容製作的工具;不過,這個系統設計成只能夠每期製作一頁內容,然後寄送出去,所有的文章都要塞在這同一頁上,很顯然需求並不是這個樣子。於是,又看到了一個叫做 eZ Newsletter system 的玩意兒,照網站上的說明,這套系統可以與開發者 eZ systems 的另外一套內容管理系統 eZ Publish 整合,而達到同時可以有網頁以及電子郵件的媒體服務,不過呢,一套叫價九千九百美元,恐怕一時間也沒有這樣的預算。
那,就自己拼一套東西出來吧。
大抵上先用了一些別人的東西:包括 Justin Vincent 的 ezSQL、 Colin Verot 的 class.upload.php、Brent R. Matzelle 的 PHPMailer 這些 PHP Class,再複製了一些 WordPress 的 function 來用。其中,用 ezSQL 寫了連接 MySQL 的部份,用 class.upload.php 做檔案上傳,中間包了一些自己亂寫的 class,反正就是管理介面可以新增、修改、刪除資料,前面另外用根據分類排序的方式,列出當期文章的目錄,點下去就是全文。
全部做完之後,就讀取 render 出來的網頁,用 PHPMailer 寄出去,另外就是在資料庫中也加了一個訂戶名單,做了簡單的訂閱、退訂功能。要看看目前的成品,可以連到這個地方:木柵某國立大學某傳播學院某在職專班電子報,要看看管理介面長什麼樣子,可以瞧瞧這個Flickr 相本。
只是,在學院裡頭、以及作為超過十年的台灣學術網路使用者,看到用來寫 blog 的系統與做期刊的系統不成比例,感覺實在頂嘔—台灣學術網路都可以養出靠著 blog 與網路相本刊開業賺錢的公司,不過呢,台灣的各種學術期刊的線上版本,用的又是怎樣的系統?別的不說,就拿幾本 TSSCI 期刊來說,我們來瞧瞧這些 TSSCI 期刊的網頁版本長成什麼樣子:
- 《台灣社會研究季刊》(如果「台社論壇」、「問題與討論」這些分類的文章就是沒有摘要與關鍵字的話,為什麼不乾脆就在網頁上把那兩個欄位拿掉,偏要留個討厭的空白表格呢?)
- 《台灣社會學刊》(每一篇論文連結點下去,都會出現 404 錯誤,真棒)
- 《人口學刊》(這一頁真是網頁設計的典範,所有的資料都做在同一頁是還好,但是最上方的期數索引其實是一個 anchor 而不是 link,卻居然—開啟在同一頁的資料,居然還要另外開新視窗…)
- 《台灣社會政策學會》(把各期內容索引往下拉,可以看到「藍底黑字」的設計—這是給鬼看啊…)
大概來說,除了《東吳政治學報》、以及《戶外休憩研究》、《人文及社會科學集刊》等期刊做得相當用心之外,其餘大部分的刊物,看了就讓人不禁想要問這樣的問題:明明這幾年還又什麼頂尖大學五年五百億計畫案,人們怎麼有辦法一邊看到大學拿到這樣的經費,一邊忍受這樣的線上期刊。這年頭作線上期刊沒有自己做個搜尋也就罷了,你也不懂,如果說台灣這些期刊有像那些人說得那麼重要的話,在這個天殺的 web 2.0 時代,為什麼在 Google Scholars 中文版上,也根本看不到多少繁體中文期刊的內容。
也不曉得這種明明就是要做,但是做成這個樣子—而且說真的,稍微做好一點又不難—是不是故意的,如此大學才可以確保像華藝數位的中文電子期刊服務的儲值卡可以賣得出去。
而根據在線上找到的這份列表來看,TSSCI 期刊幾乎都有自己的網站,又更讓人覺得國科會建置 THCI 資料庫簡直是莫名其妙—其實學術文章的格式都差不多,而既然大部分期刊都有想要做線上版本的需求,那何不直接做一個統一的線上期刊出版系統,讓各期刊的編輯像使用 blog 一樣就可以發佈期刊內容,使用相同的資料庫 schema 、用上個什麼 z39.50 或 XML 輸出串接起來,就可以做到 THCI 資料庫想要做的引用統計,國科會也不用另外再去找人建檔輸入—同樣的事情,為什麼需要做兩次?如果嫌錢太多的話,可以捐給我讓我去買 Macbook Pro 啊…。
說遠了。其實看了看,台灣也已經有期刊開發出了不錯的線上期刊系統,例如國家數位典藏維運管理分項計畫所開發的《國家數位典藏通訊》,看起來就很不錯。國家數位典藏計畫出版子計畫之前還辦了一個什麼「談電子報的媒介角色與傳播責任座談會」(會後手冊),以《國家數位典藏通訊》討論電子報作為媒體的擔當,說到傳播責任,數位典藏計畫或許應該考慮把系統公開出來供其他期刊使用,擔負拯救台灣電子學術期刊的責任?
或是,既然我也拼了一點東西出來,如果有興趣的話也拿去看看吧。我隨便起了一個名字叫做 Vanilla Journal—「香草期刊系統」,在 Google Codes 上面開了一個專案網頁,程式碼先丟在 Google Codes 的 svk trunk 裡頭,因為前兩天又大改一些東西,現在裡頭的 codes 還很亂,還沒有寫文件,還沒有正式的安裝 tarball,如果要釋出的話,預估第一個釋出版會叫做 0.2a,至於時間方面,不知道,我這一兩天實在不太想要看到 PHP …。
如果想玩玩看的話,請自己先 svn co 下來。接著大概是這樣:
- 需要 PHP4 以上版本以及 MySQL
- 如果想要使用圖片上傳,會需要用到 PHP GD Library 或 ImageMagic
- 如果想要使用電子郵件寄送文章,因為預設用的是 php 的 mail() function,所以如果您的機器上不提供寄信功能的話,請參考網路上的文件,改一下 php.ini 裡頭關於 smtp 的設定,或是請看一下 PHPMailer 的說明,自己修改 PHPMailer。
安裝的時候,先改一下 config.inc 檔案裡頭的設定,把資料庫名稱、使用者等資料改一下,然後跑一下 install/install.php,這個程式會問您想要設定的密碼,然後幫你把資料庫建好,之後就可以用您剛剛設定的密碼登入,相信裝過各種 PHP 應用程式者對此都駕輕就熟,只是目前 install.php 寫得還很難看。之後的操作,可以在管理介面中找到一份說明。
目前這個東西只在 Mac OS X 與 FreeBSD 上面試過,我不保證在其他平台上會出什麼事情。
之前在工作的時候所寫的系統功能說明在這邊貼一下:
- 這個系統提供以期為單位的文章上稿功能:在線上出版新一期的期刊時,首先建立一個叫做「期」的單位,「期」包含期數、出刊時間、當期主題等資訊,然後可以在這個「期」之下,像用寫 blog 的方式,快速建立文章內容,可以指定文章的分類以及在目錄版面上的排列順序,文章包含主標題、副標題、內文、作者、作者簡介等資訊。
- 提供照片及附件檔案上傳功能:每一期可以指定主題照片。每一篇文章也可以插入多張照片以及附件,例如文章是一個公告的話,就可以直接包含公告的附件 PDF 檔案。
- 提供 RSS 功能,可透過 RSS 取得當期期刊內容。
- 提供電子郵件電子報功能:訂戶可以自行訂閱或退訂電子報,當然也就同時包括訂戶的資料管理(新增、刪除等),以及電子報發送功能。
- 具有彈性的分類功能:如果既有分類不夠使用,可以新增分類。每期也可以對某個分類做特別說明。
- 使用純 XHTML/CSS。
- 使用 Unicode 編碼,可以處理多國語文。
- 提供作者以及關鍵字搜尋功能,可以找出某個作者所寫的所有文章,或符合某個關鍵字的文章。
- 可在網頁介面下做許多設定,例如網站名稱、版權資訊、密碼等。
- 額外功能:每篇文章下會自動帶出引用書目格式資訊,如果有人想要引用文章,可以方便拷貝使用,目前提供 APA 與 MLA 兩種格式。
- 還有很多東西想做的還沒做,不過雖然想做但是這兩天不想做。
幾件事情需要提一下:
- 因為使用的是純 CSS 設計視覺樣式,HTML 碼本身只有意義上的定義,而不包含排版語法,而某些電子郵件軟體對於 HTML 格式支援有限,例如,如果用 Outlook Express 或 Mozilla Thunderbird,就可以看到完整設計,但是對於 Outlook、以及許多其他 webmail系統來說,就很容易看到只是「白淨」的網頁。
- 因為使用 Unicode,而有一些電子郵件軟體目前也不見得能夠適當處理。
- 目前這個系統的管理介面只提供單一帳號登入,還沒有多人多帳號的設計,原因是在多帳號的環境下,就需要權限的設計,而目前還沒有想到這個系統的上稿權限應該如何切割。
- 因為是趕出來的,這個東西地方還很亂,如果看不順眼想要動手改,歡迎。
本來想說過陣子或許可以在今年的 ICOS 上,看看有沒有機會找個時間,能夠找些人幫忙;不過,看到今年的議程,實在覺得奇怪—雖然研討會是學習的好機會,但是我實在想不透參與研討會的講者怎麼會叫做「授課教師」,研討會還會有學分數與課程編號(這真的是研討會嗎?);名字是「2006年自由軟體與開放源碼國際研討會」,所謂的國際,就只有在第二天的下午四點之後,找「邀請的國際友人報告目前的情況」,但是第一天卻有一整天的贊助廠商 demo。
總之,要辦個「中小學、社區大學暨 NGO 自由軟體教學工作坊」也是不錯的,但是這跟「自由軟體國際研討會」,完全是八桿子打不著的兩件事情,既然整個議程沒有開發者參與的機會,看樣子,第三天下午「媒合座談會」,以在場的與會者成份來看,大概就是中小學、社大與 NGO,與贊助廠商媒合吧。
就這樣。嗯,八月十六,我也就這樣糊里糊塗地踏入我的而立之年了。
這個讚~
啊~zonble大,原來大家都被電子報系統困擾。我之前也是用phplist,但覺得不夠用,然後有想要寫一套給系上,但一直找不到該怎麼mail HTML網頁的方法。老師們總是天馬行空,一個點子就要底下的人拼命想辦法啊…
如果有辦法,我想我或許有機會幫上點忙。我是說,這系統能幹些什麼好事減輕助教助理的負擔方面…
然後,作為東吳政研所的學生,代替某位負責編輯學報的「辣媽」向你致謝。但是…恩,為什麼當初系上會選擇access做資料庫呢?資料再多一點,就會好慢啊…(遠目)
還有,生日快樂! (最後一句是這個意思吧!)
改上篇錯字, “如可該plugin -> 如果該 plugin…”
感興趣,可是我弄了半天不知道怎麽下載源碼,有提供zip壓縮包嗎?
不提供 zip / tar ball 就是在程式(可能)還不穩定的時候,
不願意讓技術稍微弱的使用者下載的,
因此zonble才會只給 SVN 下載XD
因Refly的刺激言論,再加上我的不服輸心態,終于搞定了!
謝謝zonble提供了這麽好的期刊系統,vanilla journal這個名字真好,因爲我也喜歡vanilla論壇系統:)
對這個期刊系統我有建議要提,但不知道發到哪裏,在zonble告訴我之前我先發到這裡吧,增加文章的時候能不能加個功能,輸入外部鏈接地址,這樣對於已經有獨立的cms或者blog,不用重復輸入文章,直接輸入已有的鏈接地址即可,這樣訂閲期刊的用戶點擊的時候,直接跳轉到那個地址。
今天聽到一堆建議 @_@
另外有人跟我提,說,每一期是否可以自行調整分類順序,因為每一期期刊的某個分類,可能因為重要性而前後調整順序。
完全沒時間啊!
Pingback: Library Views 圖書館觀點 :: 二個免費的期刊系統 :: August :: 2006
zonble大,你SVN的專案還在吧。為什麼我用TSVN一直告訴我專案不存在?非常地詭異…
檢查一下 wp-config.php 檔案,第一行的 <php 前面有沒有打了不該打的空白或空行。
wp-config.php如下: 要把//**MySQL settings**//刪除嗎?
怎麼打入php原碼, 沒顯示?
我試著安裝您的VJ 系統, 但在新增文章建立資料後,卻發生沒有儲存的情形,請不吝指教。謝謝!
建立環境: FreeBSD 5.5 Apache 2.0 Mysql 4.1.2.1 PhP 4.4.2
, 界面真的寫的很美觀,操作也很人性化。
沒有辦法儲存的原因是後來改了資料庫 schema,但是installer忘記改了…
元旦有時間要來把 code 好好整理一下。
Pingback: :::zonble’s promptbook » 致 Vanilla Journal 的使用
讓我想到我們學校終身教育中心的網站…
他們系統裡好像並沒有區分課程、測驗等類別
所以就會看到TOEIC考試竟然被稱作課程的詭異情形XD
Pingback: HOW’s SketchBook » Blog Archive » 如果在寒夜,你是該死的研究生…
小弟有試著安裝,也很順利的安裝安成
不過發現了一點 在訂閱後 由系統送出的訂閱連結是文字
而不是一般的超連結,要再複制再貼至瀏覽器
找了找 問題應是在signup.php,不過小弟沒php 基礎 所以來求助
Vanilla Journal 真的很讚!加油!