Drupal 網站建置指南

Virus OS

Linux dns 3.13.0-85-generic #129-Ubuntu SMP Thu Mar 17 20:50:15 UTC 2016 x86_64

Dates and Events

這一章提供了關於可以幫你設定及管理日期、工作流程、事件跟行動等所提供的模組資訊。

Event 模組

下列的模組幫你建立跟管理活動跟行事曆。
假如你正規劃顯示一系列的活動,活動通常包含下列的資訊或欄位
- 活動的標題
- 活動的開始日期,時間
- 活動地點
- 活動的描述
- 活動的結束日期,時間

Drupal 6.x 在使用強大的日期/時間處理跟格式化的模組時可以提供功能強大地活動事件列表,在大多數情況下在Drupal 6.x中你不需要特殊的Event模組除非你要建構特殊的專案管理或是時間管理程式。

要開始新增及佈署活動事件,通常你可以開使用下列的模組(很多還都是熱門的):

- CCK
Date/Time模組 - Date API、Date、Calendar、Date Locale、Date Timezone、Date Tools
- Views - Views UI、Views

- jQuery UI(註:需先閱讀Readme.txt,因為還需下載jquery ui的函式庫:jquery.ui-1.6.zip,之後解壓縮在這個模組資料夾內,使用unzip jquery.ui-1.6.zip,再將jqery.ui-1.6的資料夾更名為jquery.ui,使用mv jquery.ui-1.6 jquery.ui)

A quick way to get started with simple events is to create a Content Type called Event and add the fields you need such as start date, end date, and location to this specific content type.

You'll also want to create a few custom date/time formats apart from the standard Long, Medium, Short date formats. For example, you can create the following additional date/time formats which you will reuse later when listing events for example
- DateOnly (shows you the date without time i.e. 15 Jan 2011)
- DayOnly (shows you the day only, i.e. Sat)
- TimeOnly (shows you the time only, i.e. 8.00 am)
For this, see also Date/Calendar Modules.

Combining this 3 additional date formats lets you manipulate how event time is displayed in a variety of scenarios (in a Block or on a Page view). This should be enough to get you started with your own Event node types and customized views and blocks in Drupal 6.x.

As you get more confident, and you decide to add more complexity to your simple events listing, i,e, recurring events (this event repeats every Monday at 8 am), try adding the Date Repeat API module. Complexity may not be a good thing, but its worth a try if you're adventurous.

See also Action Modules.

Working with mail and messaging

下面的模組幫助管理郵件及訊息,在Comparison of email newsletter oriented modules這裡有一個郵件電子報對照的開始。

Subscriptions

subscriptions 模組讓使用者可以訂閱節點或回應的更新通知,使用者可以訂閱個別的節點、或是某特定內容型態的所有節點或是某一個特定分類的所有節點,例如你可以訂閱論壇的所有主題或是一個特定部落的文章。

subscriptions 模組提供彈性的架構來允許其他的模組提供額外的訂閱型態,例如作者或是organic 群組。

2010-01-14_142645.JPG

一旦模組啟用,所有的節點會一個連結允許使用者變更他們的訂閱,除此之外使用者在我的帳號(user screen)那裡會有一個Subscriptions標籤來管理他們的訂閱,使用者也可以有自動訂閱(Auto-subscribe)的功能來處理他們文章更新或是有人回應時可以通知他們,管理者預設可以處理這個功能。

2010-01-14_140513.JPG

當你訂閱後,在文章有變更或回應時,在下次的cron啟動後,就可收到通知的郵件,就像我收到的下圖那樣:

2010-03-04_141504

 

2010-01-14_144202.JPG

使用者可以選擇通知郵件的頻率,也可以選擇是否用摘要模式的郵件來傳送,管理者可以使用mail樣板來自定通知的郵件。

2010-01-14_144220.JPG

對於每一個訂閱使用者可以選擇是否指針對新節點通知,或是包括更新,或是包括回應,管理者有更多更好的控制選項來處理,訂閱的使用者介面因此可以依據管理者的喜好變得簡單或是複雜。

subscription 模組跟notifications 模組很類似,兩個都是由舊的5.x-1 subscriptions 模組改寫來的,這兩個模組也都提供可擴充的架構,然而這兩個模組在選項的型態上及功能上還是有所不同。

此網頁工作仍在進行中。請作出貢獻。

Subscriptions 安裝

模組的安裝是很標準的:就是下載最新版的subscriptions,將壓縮檔放到你的模組資料夾然後在管理(Administration) -> 網站建置(Site building) -> 模組(Modules)那裡啟用它。

模組

對標準的Subscriptions功能你需要啟用下面的模組:

  • Subscriptions 基本的Subscriptions架構。
  • Subscriptions UI 提供使用者介面讓使用者來訂閱及管理他們的訂閱。
  • Subscriptions Mail 是否真的寄出。
  • Content Subscriptions 讓使用者訂閱節點。

2009-12-22_103145.JPG

通常你也會想要啟用所下載的subscriptions套件中其他的模組:

  • Taxonomy Subscriptions 讓使用者訂閱分類項目(例如,論壇!)
  • Blog Subscriptions UI 提供一個單獨的部落格訂閱頁面。
  • Subscriptions CCK fields 假如你也使用mail_edit模組的話,這個模組可以讓你在提醒的郵件中加入CCK欄位。
  • Moderate Content Notifications 垃圾郵件的嚇阻:確定沒有垃圾郵件從我們的站台寄出。

Subscriptions 2.x 是一個模組化的架構,可以在很多方向擴展,已經有不少的附加模組在使用:

你可能想安裝的其他相關的第三方模組:

  • Mail Editor 讓你自訂Subscriptions郵件寄出的通知訊息。
  • SMTP Authentication 假如你的供應商限制你用PHP寄郵件,這個模組可能對你寄出郵件有用。

權限

不要忘記設權限,到管理->使用者管理->權限那裡,你可以允許的權限設定取決於你所啟用的模組,可能的有:

subscribe to content
這是主要的權限,沒有這個使用者不訂閱任何提醒。
subscribe to content types
讓使用者一次訂閱某一特定類型的所有節點,例如站上所有的部落格文章或是所有的論壇文章等等,管理者可以選擇哪一種的內容型態可以讓使用者使用這個權限來訂閱。
subscribe to all content types
管理置限制哪一種內容型態可以訂閱,"subscribe to all content types"的權限允許一般像是未列冊或是區塊內容型態的存取,這傾向為管理員的權限,這個內容型態會被用x的符號註記起來(以及用紅色的區塊型態來顯示)。註:我的就沒有這樣的顯示?
subscribe to blogs
讓使用者訂閱某個使用者部落格的所有文章。
subscribe to taxonomy terms
允許使用者訂閱某個分類項目的所有節點。
Administer user subscriptions
允許使用者管理其他使用者的設定,"subscribe to content"權限的使用者本身就可以管理他們自己的訂閱。

訂閱不支援匿名使用者 -- 給他們訂閱的權限沒有用。

從5.x-1.x升級

Subscriptions D6 被設計來順利的升級並且轉換1.x版的安裝,假如你目前裝得是1.x版,我們建議你降你的站台設為維護中,移除1.x檔案(假如你只是將他們搬到web根目錄下的不同的目錄,Drupal還是會找到他們並且造成麻煩!!!!),複製你要的2.x版檔案,然後執行更新(直接從管理|模組)那裡來做。

Subscriptions 1.x版沒有移除的功能,假如你想要移除他來開始一個乾淨的版面,那麼你需要停用,移除它的資料表,然後從 {system}資料表移除該列紀錄(這很重要!!!),接著你才可以安裝新的Subscriptions 2.0版。

Subscriptions組態

Subscriptions設定頁面裡(admin/settings/subscriptions)你可以發現三個標籤:

我們會依序說明。

site settings

網站設定頁有很多不同的欄位設定,端視於你啟用了哪個subscription模組。

Links

這只是連到其他管理頁面的連結列表。

Content settings

這一節是你在啟用"Content subscriptions"這個模組時才會有用(這個模組應該常常會用到),除了別的以外它提供你一些選項來限制可用的訂閱型態。

Taxonomy settings

這裡的欄位只在"Taxonomy subscriptions"模組啟用時才會有用,這個設定允許你限制哪些詞彙可以使用,所有在這些詞彙中的項目是否列在使用者的訂閱頁面或是只有使用者有訂閱的項目。

Display settings

Mail settings

User defaults

這裡允許管理者設定所有使用者的預設設定,每個使用者透過他們的「我的帳號」頁面裡的一個標籤中有類似的訂閱設定頁面,然而對於一些設定甚至有可能隱藏不給使用者用這樣他們就不能更改預設的設定。

Send Intervals

在admin/settings/subscriptions/intervals選擇你站台(可能合適的設定)的傳送間隔!"As soon as possible"意思是下一次cron執行的時候,當然主要還是視你的多久執行cron... 這些通知依據下列規則使用:

  • 他們只在cron執行時送出。
  • 每個使用者的第一次通知會在每一次的cron執行時寄出。
  • 只要一寄出通知,目前的時間戳記就會存在使用者{subscriptions_user}資料表的last_sent紀錄裡。
  • 當一個新的通知排在佇列中,查詢的紀錄就會取得last_sent的時間戳記及儲存其他資訊欄位的訂閱send_interval。
  • 當cron執行時,它會考慮過去last_sent+send_interval的佇列紀錄。
  • 當通知寄出時,可能重複的相同節點會移除,所以不會有重複的通知會寄出,例如,因為使用者的重複訂閱或是節點更新或被加入評論的時候,很顯然地,在重複的訂閱中最小的Send Interval會獲選寄出。
  • 假如你有啟用摘要模式,那麼至少有一個通知準備要寄出時摘要才會寄出,而這也包括準備好的通知。

Cron Job

subscriptions_mail的子模組使用cron來寄出mail通知,你可能想要調整寄出間隔的列表跟敘述,我們建議你將cron summary watchdog message啟用著,他會給你關於crin job及郵寄伺服器載入的有用資訊,注意:在忙碌的站台裡佇列不會變成空的這是正常的;假如這樣的話,你應該更常執行cron,注意:訂閱不會試著佔用所有可用時間,因為其他的模組可能在它後面;假如使用太多或太少,你可以降低或增加subscriptions_cron_percent這個變數值(預設是50)。

Mail Templates

假如你有安裝並且啟用mail_edit模組,那模擬可以到admin/build/mail_edit來編輯郵件樣板,你會發現訂閱模組提供了很多的樣板,要用某種特定通知的樣板取決於觸發它的訂閱種類,所以如果一個通知寄出是因為使用者訂閱了一個分類項目那麼就會使用 subscriptions_taxonomy_node-tid這個樣板,如果使用者訂閱的是內容型態就會使用特定的內容型態樣板寄出通知,像subscriptions_content_node-type-blog是給訂閱所有部落格用的,同樣地,因為使用者訂閱了某個節點就會使用subscriptions_content_node-nid樣板寄出通知,然而上面的規則中有一個例外:更新節點的通知寄出雖然還是使用content-type-specific樣版,但只有在使用者有訂閱這些內容型態才有用,注意這個例外只用在訂閱單一節點的時候,不是任何的訂閱型態都會依據此規則,所以假如有關一個手冊頁面的更新通知要寄出,因為使用者有訂閱這個手冊頁面標籤成一個特定的分類項目,那麼這個通知就不會使用手冊頁面的樣板subscriptions_content_node-type-book 而會用一般的subscriptions_content_node-nid樣板,假如使用者有選擇用摘要格式來取得通知那麼就會都是使用樣板subscriptions_mail_digest,當你擴展"Replacement patterns" 的欄位時,你可以在你的樣板中使用的變數列表會列在樣板編輯頁,有些變數只有在你儲存樣板後才可以使用,假如你啟用訂閱CCK的欄位模組,那麼在內容型態特定的樣板裡,你會多得到每個CCK欄位的額外變數存在內容型態中,你可以在樣板中使用條件文字,語法是 {{!varname==value?then_text:else_text}}或 {{!varname!=value?then_text:else_text}}
!varname 可以是任何的變數以及被取代;value 是一個不含'?'的字串

then_text 是一個不含':'的字串而else_text沒有任何限制,then_text 跟else_text可以有換行符號跟變數,例如:
這個 {{!has_new_comments==1?has:doesn't have any}} 新的評論。
注意變數名稱只出現在等號左邊可以被取代,丙且只有再不是空的時候才可以,你可以使用條件像 !sender_name==!sender_name,!sender_name==!sender_name 左邊可以被取代假如寄件者的名稱有設定,但是右邊不可以換掉,因此只有在變數沒有設定下這個條件才會成立。
注意:所有的URL變數是由呼叫url()核心函式建立的,你能夠在settings.php中設定$base_url來影響url()的傳回值,在任何情況下如果你沒有得到想要的值,是無法歸究是Subscriptions的問題,只要你不存樣板,他們就會自動轉換成收信人的語言,象棋它的使用者可修改的字串,當你編輯並儲存時,就會停止地區化,對於多語言的訂製來說你需要編輯subscriptions_mail.templates.inc檔。

Drupal Subscriptions API

API 文件

有關API的說明可以在http://groups.drupal.org/node/9818的"HOWTO build an add-on for Subscriptions module"維基網頁找到。

程式碼文件在http://api.drupal-contrib.org/api/subscriptions

訂閱連結

你可以放連結在你的站上讓你的使用者到那些頁面來訂閱特定的內容:

http://example.com/subscriptions/add/node/1234
http://example.com/subscriptions/add/type/blog
http://example.com/subscriptions/add/type/blog/12
http://example.com/subscriptions/add/type/forum
http://example.com/subscriptions/add/type/forum/12
http://example.com/subscriptions/add/taxa/123
http://example.com/subscriptions/add/taxa/123/12

你也可以結合這些連結跟登錄連結在一起,像下面這樣:

http://example.com/user/login?destination=subscriptions/add/taxa/123

也有相關的

http://example.com/subscriptions/del/...

連結有相同的參數,這個參數是管理者提供為訂閱的連結給使用者使用的,這些未訂閱連結需要使用者登錄,預設狀況下,Subscriptions送出的每個通知有編碼的未訂閱連結 ,那些未訂閱連結稍後可以作用即使是沒有登錄的狀況下,但是他們不可以手動產生。

Drupal Subscriptions 其他資訊

未發佈的節點/回應

訂閱模組對於未發佈的節點/回應不會寄出通知,除了有'管理節點'/'管理回應'權限的使用者,
!is_unpublished
!comment_is_unpublished
變數讓你可以標記未發佈的節點/回應,unpublished nodes/comments,這會在預設的樣板上呈現。

發佈節點/回應會有通知送到所有的訂閱者。