[ 設定心得 ] zope2.5 的一個小實作


作者﹕網中人 <netman@study-area.org>
前不久曾經非常樂於推銷 zope 這個優秀的網頁系統﹐ 不過﹐卻有不少朋友在安裝之後卻不知道如何發掘它的優點。 事實上﹐只要照著 zope book 和 tutorial 實作一遍﹐都大概有心得了。 只是或許是原文的緣故﹐許多朋友似乎並沒太大的興趣這樣做﹐實在是非常可惜的。 下面﹐我準備了一份簡單的實作步驟﹐提供給大家參考參考﹐ 希望能起到拋磚引玉的作用吧。 ------------------------------ 一﹐將 zope 2.5 安裝起來 ------------------------------ 這個過程有點複雜﹐但如果您是用 redhat7.1(或 7.2 )的話﹐也不會太難﹐ 參考如下網頁一定可以跑起來﹕ [ 安裝心得 ] 關於 Zope-2.5.0-src 的安裝 ------------------------------ 二﹐先看 zope book 和 tutorial ------------------------------ 啊﹐雖然明知道這樣說會非常討厭﹐不過﹐我真的非常衷心的希望您看看 zope book: http://www.zope.org/Members/michel/ZB 然後再跑跑 zope site 的 tutorial ﹕ 1) 連到您的 zope site 之 manage ﹐例如﹕http://127.0.0.1:8080/manage 2) 登入並從右上角的 Add 那邊建立一個新 folder 3) 進入目標 folder 之後從右上角的 Add 選單選取最後一個項目﹕Zope Tutorial 4) 在 ID 處隨便輸入一個 id ﹐如 myTutorial 。 5) 然後按‘ Begin Tutorial ’鍵開始。 這時候請先讀一下新開的視窗﹐然後按‘ Next ’鍵繼續。 此時﹐原視窗會自動變更為 lession 1 的課程﹐ 後面的練習均於這兩個視窗中切換來切換去﹐請留意指引即可。 注意﹕ 1) 在 Lession 9 中﹐當看到如下指引的時候﹕ All the sightings should be marked as New. 1. Reload the page. 請勿直接按工具欄的 refresh 按鈕﹐而是用滑鼠的右鍵點選(舊視窗)網頁的空白處﹐ 然後選擇‘ 重新整理 ’ 2) 關心 SQL database 的朋友﹐可以多花些時間在 Lession 11 和 12 這兩課。 不過假如不熟識 zope 的標籤的話﹐最好先看看 zope book 的前面數章。 ------------------------------ 三﹐下載實作物件 ------------------------------ 下載如下 zope 的 export 物件﹐並安裝到您的 zope 上面﹕ 1) 到這裡下載﹕http://www.study-area.org/linux/src/study_exports.zexp 2) 將檔案複製至 /opt/zope/import 目錄內 3) 以 manager 權限的身份登錄 http://www.my.zope.site:8080/manage (註﹕您必須填寫自己的實作 URL ) 4) 按底下的 Import/Export 按鈕﹐然後於底下的輸入框填上 study_exports.zexp 。 5) 最後按下 Import 鍵完成。 ------------------------------ 四﹐開始實作 ------------------------------ 4.1﹐複製與建立目錄 1) 以 manager 權限的身份登錄進 http://www.my.zope.site:8080/manage 2) 進入剛纔 import 的目錄﹕ study_exports ﹐並在底部按下 Select All ﹐接著按 Copy 。 3) 回到 zope manage 的頂級目錄﹐ 從右上角的 Add 那邊建立一個新 folder ﹐ 在 Id 處輸入“zope_study”﹐在 Title 處輸入“Zope 學園網站”(沒錯﹐可以用中文﹗)﹐ 並按 Add 完成。 4) 進入新建目錄 zope_study 並按下 Past 按鈕﹐這樣會貼上剛纔複製的內容。 4.2﹐建立和修改目錄屬性 1) 選擇當前網頁頂部的 Properties 標籤﹐ 在底部的 Name 右邊填上﹕site_url ﹐ 以及在 Value 處填上﹕http://www.my.zope.site 完成後按 Add 完成。 2) 重複上述步驟﹐並依次完成如下的 Name 和 Value ﹕ site_name: StudyZope webmaster: my_name webmaster_email: my_name@my.zope.site org_name: Zope 學園 org_email: my_org@my.zope.site support_email: support@my.zope.site zope_manage_url: http://www.my.zope.site 4.3﹐建立首頁 1) 回到同一目錄下的 Contents 標籤﹐從右上角的 Add 那邊建立一個 DTML Method ﹐ 在 Id 處輸入“index_html”﹐在 Title 處輸入“Zope 學園首頁”﹐ 並按 Add and Edite 直接進入編輯畫面。 2) 將原本的句子全部刪除﹐並改為如下內容﹕ <dtml-var home_header> <dtml-var home_body> <dtml-var home_footer> 3) 回到 /zope_study 目錄﹐根據 index_html 內容﹐重複前兩個步驟﹐分別建立如下檔案﹕ * home_header * home_body * home_footer * (這次實作中﹐我們已經為您準備好以上檔案了﹐您可以自行修改和編輯。) 先讓我們看看 home_header 裡面的內容﹐事實上就是我們平時的 html 一樣﹐ 只是在 <TITLE> 使用了一個 dtml 標籤﹕ <dtml-var site_name> 也就是將往上數最接近之目錄 Properties 裡面的定義抓出來 再看看 home_footer 的內容﹐我們會碰到兩個 dtml 標籤﹕ <dtml-var ZopeTime fmt="%Y"> 它可以將年份抓出來﹐以接應在 Copyright 之後 <dtml-var org_name> 它可以將剛纔定義的 Properties 之一抓出來 最後的 home_body 有點複雜﹐我這裡簡單說明一下﹕ - 首先用 table 將版面分為左右兩半﹐左邊的內容只插入一個 dtml 標籤﹕ <dtml-var tree_html> - 然後右邊的內容則一共有如下這些標籤﹕ <dtml-var announce_html> <dtml-var home_content> <dtml-var update_record> <dtml-var top_hitting> <dtml-var mail_list> 4) 根據 home_body 的內容要求﹐我們需要準備好所有 dtml 標準所指的文件﹐ 其中在右邊的文件﹐裡面可能也有其他 dtml 標籤指向其他文件﹐請自行追蹤。 我這裡說說左邊文件 tree_html 內的一個 dtml-tree 標籤的用法﹕ <dtml-tree study branches="publicObjects" skip_unauthorized="1" sort="id"> <SPAN CLASS="tree"> <!--#if tree-item-expanded--> <a href="&dtml-absolute_url;" target="_self"><font size="-1"><dtml-var title_or_id></font></a> <!--#else--> <img border=0 src="/images/arr_red.gif">  <a href="&dtml-absolute_url;" target="_self"><font size="-1"><dtml-var title_or_id></font></a> <!--#/if--> </SPAN> </dtml-tree> 這是 zope 內建的 tree 功能﹐用 dtml-tree 載入﹐並只顯示一個叫 study 的目錄樹裝清單﹐ 這裡需要另外寫一個叫 publicObjects 的 python script ﹐然後根據 script 的返回值﹐ 來判斷物件是否需要顯示﹐否則會將目錄內所有物件顯示出來﹐也就是 branches 的作用了。 然後使用 tree 功能本身的定義來顯示物件﹕ 假如 item-expanded (已展開)﹐顯示其 title_or_id ﹐並以 absolute_url 來建立聯結。 否則先顯示一個紅色小箭頭﹐再顯示其 title_or_id ﹐並以 absolute_url 來建立聯結。 而在網頁頂端﹐則用一個縮小和放大的圖標﹐分別用來合閉和展開目錄樹﹕ href="&dtml-URL0;?collapse_all=1" href="&dtml-URL0;?expand_all=1" 瞧﹗以往在 html 裡面要寫目錄樹功能﹐java script 一大堆﹐這裡則簡單的幾行 dtml 就搞定﹗ 而且還是動態的哦~~~ (待會您知道了) 5) 上面 tree 功能需要的 python script 叫 publicObjects﹐內容如下﹕ """ Returns sub-folders and DTML documents that have a true 'siteMap' property. """ results=[] for object in context.objectValues(['Folder', 'DTML Document', 'File']): if object.hasProperty('siteMap') and object.siteMap: results.append(object) return results 4.4﹐建立文章目錄 1) 根據前面的 tree 功能﹐我們必須建立一個叫 study 的目錄(這次實作已經準備好了)。 請修改或建立該目錄的 Properties 如下﹕ Title: 課程內容 siteMap﹕ true (* 請注意大小寫) 其中的 siteMap 屬性就是給上面的 python script 讀取的﹐從而判斷是否需要顯示這個物件﹐ 假如您不希望物件被顯示﹐那麼就不要建立這個屬性﹐或是將 Value 全部砍掉。 透過這個設定﹐可以有效控制哪些物件要顯示在 tree 中﹐哪些不需要。 2) 然後進入 study 目錄﹐並建立一個叫 template 的子目錄(這次實作已經準備好了)。 請進入 template 目錄並好好讀一下 index_html 裡面的內容(請自行過濾 html 標籤)﹐ 日後我們新增文章就是按這個網頁的指引進行的了。 3) 請看看 template_folder 子目錄 index_html 的內容﹐一共只有三個標籤﹕ <dtml-var standard_html_header> <dtml-var content_html> <dtml-var standard_html_footer> 日後新增的文章﹐其內容寫進 content_html 裡面就可以了﹐ 裡面有一個標籤﹐是將‘簡介’的部份作為引言﹐ 如果不需要﹐刪除這行 dtml 標籤就即可。 但無論如何﹐您如果將簡短文字寫入同目錄之 dtContent 的話﹐ 那麼就會成為該文章的簡介﹐而且可以用來給我們日後的‘導灠’功能使用。 4.5﹐修改標準 header 和 footer 在 zope 裡面有一個非常棒的設計﹕ 所有的 dtml 物件﹐都是從上繼承的﹐ 但如果您修改了物件內容﹐則只影響其下游的結果。 所以﹐如果我們不修改網站預設的 standard_html_header (和 footer) 的話﹐ 那麼所有文章的 header 和 footer 都是一致的。 但是﹐我們這裡希望所有文章類別的文件採用另外的統一規格﹐ 最好的辦法就是使用另外的 header 和 footer 了。 不過﹐為了保留其他非文章的網頁的顯示內容﹐繼續使用其原有的規格﹐ 於是﹐我們只要在 /study 這個目錄裡面動手腳就好。 1) 首先﹐在該目錄裡面建立一個叫 standard_html_header 的 DTML Method ﹐其內容如下﹕ <dtml-var study_doc_header> 然後再建立一個叫 standard_html_footer 的 DTML Method ﹐其內容如下﹕ <dtml-var study_doc_footer> 2) 根據需求﹐我們轉換到頂級目錄﹐並分別建立兩個 DTML Method ﹐ * study_doc_header * study_doc_footer * (這次實作中﹐我們已經為您準備好以上檔案了﹐您可以自行修改和編輯。) 這裡﹐我簡單說明一下 header ﹐ - 先用 dtml-var 插入 home_header (前面介紹過了) - 然後用 table 來劃分版面﹐左邊是 tree_htlm (事實上和 home_body 很類似) - header 僅完成 table 的前半部份而已﹐ 右邊的版面內容也就是各文章的 content_html 了(請參考前面的結構) 而至於 footer ﹐其說明如下﹕ - 先將 table 定義完成 - 插入 last_updated 物件 - 再插入 home_footer (前面介紹過了) 3) 然後﹐根據 footer 的要求﹐建立一個叫 last_updated 的 DTML Method (這次實作已經準備好了)﹐ 其內容不詳細說明了﹐它只是簡單的用如下 dtml 標籤﹐將 study 目錄屬性和其他物件抓出來﹕ <dtml-var org_name> <dtml-var ZopeTime fmt="%Y"> <dtml-var webmaster> <dtml-var webmaster_email> <dtml-var title> <dtml-var webmaster> <dtml-var bobobase_modification_time fmt="aCommon"> 4.6﹐建立網站導灠 事實上﹐這也是 dtml-tree 的功能而已﹐和前面介紹的差不多﹐ 只是所採用的 python script 多了一些﹐並且能顯示簡介而已。 您可以參考頂級目錄下面的 map_html 文件﹐並追蹤一下其內容﹐ 並且和 tree_html 比較一下﹐您就能知道它究竟是如何作到的。 提示﹕ map_html 所使用的關鍵物件是﹕ leaves=dtcTemplate 再配合每一目錄裡面的 dtContent 顯示簡介內容﹐ 4.7﹐製作動態目錄索引 如果您夠細心的話﹐您會在 standard_html_header 發現如下一個物件﹕ <dtml-var breadcrumbs.py> 這個功能就是每一篇文章頂端所顯示的、動態的、從 study 目錄到上一級目錄的路徑了。 如何做到的﹖關鍵是頂級目錄裡面的一支叫 breadcrumbs.py 的 python script ﹐其內容如下﹕ """ This script creates breadcrumb style navigation links. It walks the REQUEST.PARENTS list of parents and creates a hyperlink for each parent. It stops at the Examples folder. """ links=[] for parent in context.REQUEST.PARENTS[1:]: links.insert(0, """<a href="%s">%s</a>""" % (parent.absolute_url(), parent.title_or_id())) if parent.getId() == "zope_study": break return " / ".join(links) * 註﹕ 您可以修改其中紅色的部份﹐以確定最高目錄位置。 4.8﹐修改 Apache 相信許多朋友目前還離不開 apache 吧﹖ 就算您已經在將 zope 架設起來了﹐但有些平時已經非常習慣了的項目﹐ 或是已經開發了相當長時間而不想放棄的設計﹐或是 zope 所不能及的功能﹐ 也很可能會讓您無法完全的擺脫這套雄據了過半網頁伺服市場的優秀系統吧。 不管您的理由是什麼﹐只要您告訴我﹕zope 很好﹐但我一定還要 apache ﹗ 那麼我就會回答閣下﹕別擔心﹐您可以做得到﹗ 1) 進入 http://www.my.zope.site:8080/manage (請改為您當前實作的 URL )﹐ 並從右上角的 Add list 中選擇 Virtual Host Monster ﹐ 隨便定義一個 ID ﹐例如 v_host ﹐這個沒關係﹐ 目的是建立 VHM 物件就好。 2) 進入 linux 系統﹐修改 httpd.conf 檔(視實際路徑而定)﹐ 確定如下句子沒有被註解﹕ LoadModule rewrite_module modules/mod_rewrite.so LoadModule proxy_module modules/libproxy.so AddModule mod_rewrite.c AddModule mod_proxy.c 3) 在同檔案下建立 virutal host 設定﹕ <VirtualHost *> ServerAdmin webmaster@my.zope.site DocumentRoot /var/www/httpd ServerName www.my.zope.site ErrorLog logs/www.my.zope.site-error_log CustomLog logs/www.my.zope.site-access_log common RewriteLog /var/log/httpd/rewrite.log RewriteLogLevel 2 RewriteEngine on RewriteRule /old/(.*) /var/www/httpd/$1 [L] RewriteRule /(.*) http://www.my.zope.site:8080/VirtualHostBase/http/w ww.my.zope.site:80/zope_study/VirtualHostRoot/$1 [P] </VirtualHost> 注意﹕最後的 RewriteRule 到 [P] 為同一行(請勿斷行)。 4) 重新啟動 httpd 服務。(如果 dns 沒設定好﹐請設定起來﹐並重新讀入。) 這樣設定之後﹐我們就能夠直接輸入如下 URL 進入 zope 的網頁了﹕ http://www.my.zope.site 也就是 apache 所定義的 virtual host 。 在目前的設計中﹐原本的 study 網頁保留在如下 URL﹕ http://www.my.zope.site/old/index.html 當然﹐其下的所有目錄和檔案也到在 /old/ 裡面延伸﹐ 這樣非常方便大家保留 apache 或 php 或原有的網頁維護習慣﹐ 只要以 link 的方式進行就 okay 了。 這個概念是非常棒的﹗但因為我也是剛摸索而已﹐ 所以其中的發揮空間﹐還有待大家一起提昇。 這裡要特別感謝 marr 的介紹以及 鄭原真兄 的說明文件。 假如大家有興趣更詳細了解這個功能﹕ * 請參考 原真兄 的文件 ( http://twopensource.org/~marr/class_01/Zope-Apache.html )﹔ * 自行研究 apache 的 rewrite 規則﹔ * 參考 zope 建立的 virtual host moster 物件裡面的說明。 4.9﹐其他製作 我想﹐假如您能消化掉前面所介紹的﹐您應該能創造出更大的設計空間﹐ 在此我就不再囉唆了﹐因為我也不知道可以為您介紹什麼了~~ 哈﹐我所了解的 zope 功能﹐也大致這些而已啦~~ ------------------------------ 五﹐一些注意 ------------------------------ * 當您建立好 zope 之後﹐您最好是在本機上測試(如果能進入 X window 的話)﹐ 建議在一開始的時候使用 http://127.0.0.1:8080 為入口﹐ 成功後﹐可以嘗試使用 FQDN 來測試﹐當然﹐這要求您自己將 DNS 搞定。 * 因為本實作範例是配合 apache 的 rewrite 規則進行的﹐ 在生效之前﹐網頁的一些聯結可能是錯誤的﹐例如 /images 目錄﹐ 如果您設定不來 apache 的 virtualhost 和 rewrite ﹐ 請自行搬移物件和調整路徑。 * 但如果您一旦用 rewrite 改寫了 apache 的 virtualhost 路徑﹐ 那麼您需要注意的是﹕ 假如您要回到 zope 的原本頂級目錄進行 mange ﹐ 您只能透過 port 8080 來進行﹐或是另外再建 virtualhost 了。 * 作為本實作範例的原形﹐是 study-area 新網站的構思﹐ 目前也僅是一個測試而已﹐所以許多功能尚未完整。 所以﹐假如您碰到錯誤﹐請微笑﹐然後接受它~~ ^_^ 當然了﹐如果您行有餘力﹐歡迎您提出修正﹐ 更歡迎您看看後面的‘展望’一節﹐共同創造一個完整的學習平臺。 * 假如您在實作的時候﹐碰到物件相關的 error﹐例如﹕ Error Type: KeyError Error Value: zope_manage_url 這通常是因為您沒定義 Properties 的原因﹐ 回到上層的任意目錄那邊設定 Properties 就好了。 * 讓人讚嘆不已的一個 zope 功能﹐就是 undo ﹐ 假如您不慎錯誤的修改了某些設定﹐請多利用這個功能。 ------------------------------ 六﹐轉移 zope 的物件 ------------------------------ 這裡﹐我引用一份 study-area 團隊的內部信件好了﹐相信您看完就知道我要說什麼了﹕ > 終於要跟大家說說如何搬運 zope 的物件了。 > > 如果在同一系統裡面﹐無論進行 cut, copy, past 或 delete/rename 等動作﹐ > 都應該是非常直觀和簡單的。相信這個無需浪費唇舌。 > 下面我只簡單的說說如何將原有的檔案 upload 到 zope ﹐或 dowload 下來。 > 同時還介紹如何將一個 zope 裡面物件從一個系統搬到另外一個系統。 > > 假如您已經看過 zope book 的前面幾章﹐相信已經非常有概念了﹐ > 先讓我們看看 zope 的 ftp 功能吧。 > > zope 自己也有 ftp 功能嗎﹖沒錯﹗ > 如果您的安裝是按照我以前所介紹的步驟﹐ > 應該很容易在 /opt/zope/zserver.sh 檔案中發現一個 -f 參數﹕ > -f 8021 \ > (如果您不是用 daemon 來啟動的話﹐在 /opt/zope/z2.py 裡面﹐ > 也能找到 FTP_PORT=8021 的設定。) > 這個 8021 就是 zope 的 ftp port 了。 > 當然了﹐如果您喜歡﹐修改成任何 port 都可以(1024 以下需 root 權限)。 > > 按照 zope book 的說明﹐ > (http://www.zope.org/Members/michel/ZB/BasicObject.dtml) > 您可以用任何 ftp 軟體連接到 zope 的 ftp 服務﹐ > 我平時就使用 zope book 所介紹的 ws_ftp 軟體﹐ > 覺得非常方便(只需到 Advanced 那邊設定 port 號碼)。 > 當然﹐如果您喜歡用手工命令也無不可。 > > 相信 ftp 的操作不用我多說了吧﹖ > 如果您需要 upload/download 普通檔案或圖片﹐ > 您會發現用 ftp 是非常方便的。 > 不過﹐如果您所處理的檔案如果是 zope 物件的話﹐ > 在我的實作中就不那麼理想了﹐因為當物件從 zope 下載回來之後﹐ > 許多屬性都蕩然無存﹐如果再 upload 到別的 zope 上﹐ > 甚至連物件本身的類別都會出錯。 > > 不要問我為什麼﹐我甚至懷疑是我自己的操作錯誤呢~~ ^_^ > > 不過﹐如果您認為因此就不能轉移 zope 物件的話﹐那可就大錯特錯了﹗ > 這就是接下來要和大家介紹的 zope 的 export/import 功能了。 > > 以我們的網站為例﹐許多時候﹐可能發現在自己家裡工作是最方便的﹐ > 還有進行測試的時候﹐我們也可能需要另外一台機器來進行﹐ > 於是我會在家中架設起我的 zope server ﹐ > 然後就進行一系列的修改﹐當完成並通過測試之後﹐ > 那很自然會想要將更新過的物件放到真正的 server 上面。 > 我已經發現不能用 ftp 來做﹐那麼﹐我必須先將物件 export 出來﹕ > > 進入 zope 的管理界面﹐然後將物件打勾﹔ > 然後按下底部的 Import/Export 按鈕﹔ > 如果您想直接下載到目前的工作站的話﹐ > 那就選擇‘Download to local machine ’再按 Export 鍵。 > 如果接受預設值的話﹐直接按下 Export 按鈕就可以﹔ > 這樣的話﹐輸出檔會存放在 /opt/zope/var 目錄裡面(視安裝目錄而別)。 > > 注意﹕不管您用什麼方式﹐輸出檔案都以 *.zexp 為結尾的。 > 您必須在進行 upload 之前將 zexp 檔抓到目前的工作站上。 > > 這時候﹐您再用 ftp 軟體﹐ > 透過正常的 ftp 管道(注意﹕不是 zope 的 ftp 哦)﹐ > 將 zexp 檔案 upload 至目標主機上(或在那邊 download)﹐ > 然後在目標主機上﹐將檔搬至 /opt/zope/import 目錄內(視安裝目錄而別)。 > > 完成之後﹐進入目標主機的 zope 管理畫面﹐ > 然後進入適當的目錄位置﹐也就是您要 import 物件的所在目錄﹐ > 確定沒有與輸入物件同名的物件﹐如果有則先行 rename ﹔ > 再按下 Import/Export 按鈕﹐ > 然後於底下的輸入框填上 zexp 檔案的全稱﹐ > 最後按下 Import 鍵就完成了。 > > 就這樣﹐您就能輕易的在個不同的 zope server 之間搬移(或備份)物件了﹗ ^_^ > > TODO﹕ > 抱歉﹐我發現每次只能 export 一個物件﹐也就是最頂端的選擇物件﹐ > 不知道是否能一次 export 所有選取的物件呢﹖請問 marr 兄﹖ > > 如果這個問題不能解決的話﹐ > 最麻煩就是 root 目錄(/)下面的物件﹐ > 所以﹐如果有見將來需要搬移之物件﹐ > 最好集中在單一的目錄中﹐這樣會比較方便。 > 或是在 export 之前﹐先 copy 到一個目錄中﹐ > 然後等 import 之後再 copy 到適當的位置。 注意﹕ 在進行 Import/Export 的時候﹐ 最好確定兩邊所安裝的 modules 或 products 要一致﹐ 否則會出現 error 。 ------------------------------ 七﹐後記 ------------------------------ zope 的確是個功能強大而機動靈活的新一代網站系統﹐ 只是由於我本人對動態網頁和程式編寫一向以來都沒投入多大的學習﹐ 這裡所能跟大家介紹的﹐只是基本又基本的東西而已﹐ 其他諸如 ZClass﹐Template﹐Products 等進階功能﹐就有待各位發掘了。 ------------------------------ 八﹐展望 ------------------------------ 我們目前想用 zope 來開發一個學習平臺﹐測試頁見﹕ http://zope.study-area.org 因為小弟對 zope 涉獵尚淺﹐有一些功能希望能邀請這方面比較熟識的朋友幫忙。 經過初步的嘗試﹐目前我們採用如下方式來進行文件的建立﹕ http://zope.study-area.org/study/template 但略嫌步驟過於煩瑣﹐而且在權限管理上也未能盡意。如希望能作如下改良﹕ 一﹐基本需求﹕ 1) 提供作者註冊機制(manager 類別須受 moderater 審核) 2) 成員在登錄後能顯示其權限所及的目錄項目 3) 一般 member 能對任何目錄投稿(但須 manager 管理和公佈) 4) manager 能隨意執行文章管理動作 5) 提供標準界面進行文章管理 * (如﹕檔案名稱﹐次序﹐標題﹐簡介﹐內容﹐屬性﹐等。) 6) upload 功能(如﹕圖片、extended document﹐等) * 說明﹕按 template 的說明﹐我希望能以 folder 形式建立檔案(可 copy 自 template)﹐ 再將‘內容’寫入 content_html 內、將‘簡介’寫入 dtContent (如空白則使用 default), 同時為目錄設定好 title, sitemap, webmaster, webmaster_email 等 properties 。 二﹐額外要求﹕ 1) 動態整理最新更新文章 2) 動態整理最受歡迎項目 歡迎各大 zope 高手接受挑戰﹐並以此實作為後來的 zope 愛好者提供指標性範例。 如果您有興趣﹐歡迎來信 <netman@study-area.org>﹐以便提供測試帳號。 謝謝大家﹗ p.s. 坦白而言﹐弟個人並不想投入太多的時間在 zope 的學習﹐因為這不是弟的專長﹐ 除非真的迫不得己才從新學習吧﹐目前我希望能將時間用在其他方面﹐ 例如 linux 教學文件、教材方面的撰寫﹐等等。 歡迎熱心朋友參與﹐為大家提供一個良好的學習平臺。 ------------------------------ 九﹐一些有用的網路資源﹕ ------------------------------ http://www.zope.org http://itamarst.org/learningzope/ http://zope.slat.org/ http://zope.softwareliberty.org:3080/CMF/CMF http://www.squishdot.org/ http://www.zope.org/Members/TheJester/exUserFolder http://www.zope.org/Members/4am/SiteAccess2 http://plone.org/ ------------------------------ 十﹐最後更新日期﹕ ------------------------------ April 11, 2002