您在這裡

把event node轉換成date node

tky's 的頭像
tky 在 2009-04-11 (週六) 18:05 發表

最近在把一個5.x的站升級到6.x,相關的模組都已經更新與升級。
現在碰到一個難解的問題:沒有辦法把event模組產生的event nodes轉換成使用date 模組建立的date nodes。

date 6.21有提供一個date tool,裡頭有個功能據說是可以將event轉換為具有date欄位的文章類型的。
tky按照手冊上的步驟,建立了帶有date欄位的內容類型,但是date tool每次都會在轉換的時候,提示說資料庫裡頭沒有這樣的內容類型。
自然,每次轉換都不成功了。

使用node convert模組也沒用,因為event 6.x版本的時間欄位並非cck欄位,因此沒法子找到對應的欄位匯入時間。

情況挺棘手的,不曉得版上有沒人成功將event轉換成date過?

tky

最近又想把一個5.x的網站升級成6.x,再次碰到了這個老問題。
在討論區搜尋一下,發現自己兩年前提過這個問題,卻一直無人回覆。現在有解了,就自問自答一下。
官方的教學文件在:Date Import
提醒一下:如果真的有人想要升級date 5.x到6.x,必須先升級成6.0.x版之後,再繼續升級到目前的6.2x版,要不然升級過程會卡住。

教學文件中的重點在於,如果你要把event中的時間欄位轉換成date欄位,必須在原本的event內容類型中新建立一個date欄位,再透過date tool模組把event的時間內容倒入這個date欄位中。或者你直接建立一個新內容類型,然後把event的內容倒入也可以,不過倒入的內容僅限於時間和內文兩個欄位就是了。
重點中的重點在於:新建立的date欄位,必須是date(日期)類型,不能夠是datetime或者datestamp這種,否則在date tool中的匯入設定頁面裡頭就找不著這個指定的目標欄位。

一個麻煩的地方是,event模組有時區上的設定,顯示時會自動以使用者所指定的時區來增減顯示。然而轉換到date模組時,時區轉換就失靈了。
如果之前在使用event模組時你有指定台北時區,那麼所有新匯入的date欄位就會少8小時。
這部份就要透過mysql語法去幫這些欄位自動加8小時的時間了。

我對mysql語法不熟,有沒有人知道怎麼樣幫,比方說field_time_value以及field_time_value2兩個sql欄位加上8小時呢?
或者有沒人知道什麼模組可以做這件事情?

tky

tky

多謝artt,果然可以自動加8小時上去。
然而我後來發現,將event時間內容匯入後,把event模組停用,date欄位的時間就會對應成網站時區,所以其實可以不用自己去加8小時。
不過還是很開心可以多學一些mysql的東西。

tky

tky

@tky,

你說的才是重點。因為我記得 date 應該會對應 locale 的,昨天看到你的 post 時,還在想說是不是我的認知有錯誤。

呵,你是前輩,我完全沒有看過 drupal 5 長什麼樣子。

你把網站升到 drupal 6 之後,是不是過一陣子又要規劃升到 drupal 7? :)

Art

我之前以為要匯入event的時間內容,需要啟用event模組。不過這樣看來,應該是不用的,啟用了反而會造成困擾。

會想把5.x的站升級到6.x,純粹是因為受不了views 5.x沒有6.x好用方便,網站維護久了會抓狂。
至於升級到drupal 7,這個要等7.x的模組出的差不多才有可能。不過7.x的改動太大了,能夠成功升級的可能性不高。

tky

tky