.2008/08/10:目前部落格的網址已經轉換為MrMo.cc再麻煩大家修正!

[LifeType] WordPress To Lifetype

前陣子幫一個朋友的網誌從WordPress平台轉換到LifeType平台,在網路上找到的資料大多都是由LifeType轉換到Wordpress的資料,幾乎很少看到由WordPress轉換到Lifetype的資訊,而且目前Lifetype並沒有提供WordPress資料匯入的功能,只能手工透過資料庫轉換來達到轉換,所以在這邊就順手做一下紀錄:(以Lifetype 1.2.8 及WordPress 2.7.1為例)

1. 確認要轉換的網誌及帳號

1. 1 在轉換到Lifetype之前,一定要先確認Lifetype目的端的轉換帳號(lt_users.user)、帳號ID(lt_users.id)、網誌名稱(lt_blogs.blog)以及網誌ID(lt_blogs.id),以方便資料庫轉換填入。(在此以帳號ID 13及網誌ID 10為例)

1.2 確認來源端的WordPress作者(wp_users.user_login)帳號ID(wp_users.ID),這個步驟是適用於多人共同編寫的WordPress網誌作者,取出屬於自己編寫的網誌。(在此以帳號ID 2為例)

2. 轉換文章類別名稱至LifeType:

在WordPress上面使用wp_terms這個表格(Table)來紀錄文章類別(category),而這個Table除了可以紀錄文章的類別,也可以紀錄自訂連結的類別,因此在轉換到LifeType的lt_articles_categories Table之時,必須要特別設定屬性為category的資料。

INSERT INTO lt_articles_categories (name, blog_id, last_modification, in_main_page, parent_id, description, properties, mangled_name, num_articles, num_published_articles)
SELECT terms.name, 10, now(), 1, 0, "", "", "", tax.count, tax.count FROM wptest.wp_terms as terms, wptest.wp_term_taxonomy as tax WHERE terms.term_id = tax.term_id AND tax.taxonomy = "category";

3. 轉換文章至Lifetype:

在LifeType平台上,紀錄文章的Table總共有三個,分別是lt_articles、lt_articles_text以及lt_articles_categories_link三個,其中articles紀錄的是一篇文章的基本屬性,如全系統類別、編寫時間、修改時間等等,而articles_text則紀錄文章主體內容、標題,在article_categories_link則是紀錄該篇文章所屬的類別,在LifeType平台上,對於一篇文章而言,這三個Table都必須要存在紀錄,缺一不可,如果一篇文章缺一筆資料,就會造成程式執行錯誤,這邊一定要小心轉換。另外在實行WordPress To LifeType的資料庫轉換過程,有一個預設前提條件,就是,要轉換的每一篇文章編寫時間必須要不同,因為文章轉換的過程中,會利用到一些時間比對的方式建立Join。

3.1. 首先將文章的基本屬性轉換至lt_articles(請記得將user_id、blog_id及post_author的ID置換成所要轉換的目標及來源)

INSERT INTO lt_articles (date, modification_date, user_id, blog_id, status, num_reads, properties, slug, num_comments, num_nonspam_comments, num_trackbacks, num_nonspam_trackbacks, global_category_id, in_summary_page)
SELECT wpp.post_date, wpp.post_date, 13, 10, 1, 0, 'a:1:{s:16:"comments_enabled";b:1;}', "", wpp.comment_count, wpp.comment_count, 0, 0, 0, 1 FROM wptest.wp_posts as wpp WHERE wpp.post_author = 2;

3.2. 接著轉換文章的文字內容至LifeType (lt_articles_text)

INSERT INTO lt_articles_text (article_id, text, topic, normalized_text, normalized_topic, mangled_topic)
SELECT arti.id, wpp.post_content, wpp.post_title, wpp.post_content, wpp.post_title, "" FROM lt_articles as arti, wptest.wp_posts as wpp WHERE arti.date = wpp.post_date;

在這個轉換的過程中,使用了時間的比對,因此再一次的提醒,做轉換資料的時候必須要確定每一篇文章的編寫時間都是不同的。

3.3. 轉換文章類別至Lifetype的文章類別(lt_articles_categories_link)

INSERT INTO lt_article_categories_link (article_id, category_id)
SELECT lt_arti.id, lt_cate.id
FROM lt_articles_categories as lt_cate, lt_articles as lt_arti, wptest.wp_term_relationships as wptr, wptest.wp_term_taxonomy as wptt, wptest.wp_terms as wpt, wptest.wp_posts as wpp
WHERE lt_arti.date = wpp.post_date AND wpp.ID = wptr.object_id AND wptr.term_taxonomy_id = wptt.term_taxonomy_id AND wptt.term_id = wpt.term_id AND wpt.name = lt_cate.name AND lt_cate.blog_id = 10;

這個SQL的Sub Query使用了許多的Join,主要是因為在WordPress之中的文章類別紀錄,分別使用了三個表格來達成,並且要達到兩邊的文章比對以及類別名稱的比對,所以相對的複雜許多;在這邊同樣要注意到要置換blog_id。

4. 轉換文章迴響(Comment)至Lifetype(lt_articles_comments)

INSERT INTO lt_articles_comments (article_id, blog_id, topic, text, date, user_id, user_email, user_url, user_name, parent_id, client_ip, send_notification, status, spam_rate, properties, normalized_text, normalized_topic, type)
SELECT lt_arti.id, 10, "Re:", wpc.comment_content, wpc.comment_date, 0, wpc.comment_author_email, wpc.comment_author_url, wpc.comment_author, 0, "0.0.0.0", 0, 0, 0, "a:0:{}", wpc.comment_content, "Re:", 1
FROM lt_articles as lt_arti, wptest.wp_posts as wpp, wptest.wp_comments as wpc
WHERE lt_arti.date = wpp.post_date AND wpp.ID = wpc.comment_post_ID;

在這個步驟中請記得修改blog_id的部份為目的端的BlogID。

文章的內容轉換,到這邊並還沒有完全結束,因為LifeType在文章及迴響的顯示上使用了normalized_text及normalized_topic存放移除所有HTML Tag的文字內容,因此還需要透過程式來做程式的修改,這步驟留待最後執行。

5. 計算轉換的部落格文章總數,以及迴響總數存入:

在LifeType紀錄單一部落格的文章總數以及迴響總數的表格位在lt_blogs的num_posts及num_comments,在這邊計算文章及迴響的方式總共下了兩道SQL計算數量,然後,手動填入該表格中。

計算文章數量:

SELECT count(id) FROM lt_articles WHERE user_id = 13 AND blog_id = 10

計算迴響數量:

SELECT count(id) FROM lt_articles_comments WHERE blog_id = 10

或者是你也可以用比較偷懶的方式,一次更改兩個數值:

UPDATE lt_blogs SET num_posts = (SELECT count(id) FROM lt_articles WHERE user_id = 13 AND blog_id = 10), num_comments = (SELECT count(id) FROM lt_articles_comments WHERE blog_id = 10) WHERE id = 10;

6. 修改文章及迴響內容的normalized_text及normalized_topic:


$host = "127.0.0.1"; $user = "root"; $password = "root";   mysql_connect($host, $user, $password);   mysql_query("SET NAMES 'utf8'"); mysql_query("SET CHARACTER_SET_CLIENT=utf8"); mysql_query("SET CHARACTER_SET_RESULTS=utf8");   //取得目前的文章內容,假設新增的文章id範圍為547~998 $result = mysql_db_query("lifetype", "SELECT id, normalized_text, normalized_topic FROM lt_articles_text WHERE id <= 998 AND id >= 547") or die ("error"); $count = 1; while($row = mysql_fetch_array($result)){ echo $row[0]."<br/>"; $cleanString = strip_tags($row[1]); mysql_query ("UPDATE lt_articles_text SET normalized_text = '$cleanString' WHERE id = $row[0]"); $count++; } mysql_free_result($result);   //取得新增的迴響內容,假設新增的迴響id範圍為1335~1560 $result = mysql_db_query("lifetype", "SELECT id, normalized_text FROM lt_articles_comments WHERE id <= 1560 AND id >= 1335") or die ("error"); $count = 1; while($row = mysql_fetch_array($result)){ echo $row[0]."<br/>"; $cleanString = strip_tags($row[1]); mysql_query ("UPDATE lt_articles_comments SET normalized_text = '$cleanString' WHERE id = $row[0]"); $count++; } mysql_free_result($result);

 

以上的程式共有兩段,分別是修改文章的normalized_text以及修改迴響的normalized_text的部份小程式,作到這邊,大致上所有的轉換就完成了,可以先行連結是網誌的連結查看文章是否新增正常。有任何問題,歡迎大家提出討論。


相關文章:
[Lifetype] 一個Lifetype樣板(Template)的繼承架構
[Lifetype] 更新GoogleAnalyticsPlugin為新版的ga.js
[Lifetype] 在每個Post的HTML Title加入文章標題
[Lifetype] 在Lifetype平台使用Windows Live Writer
[Lifetype] 解決Live Writer無法更新類別問題

« 上一篇 [軟體使用] 製作明信片地圖google maps的方法
» 下一篇 [Office] 在Word文件建立表格重複標題列

隨機文章

Powered by Stuff-a-Blog

分享

引用網址  

迴響

站內搜尋

近期文章

[iPhone App] 不用怕睡過頭的好軟體GPS Alarm
[iPhone App] 我常用的免費iPhone App列表
[Office] 如何在Excel列印時重複標題欄、標題列
[Office] 在Word文件建立表格重複標題列
[LifeType] WordPress To Lifetype
[軟體使用] 製作明信片地圖google maps的方法
[網站推薦] 所見影片即所作的投影片分享網站slideboom
[軟體推薦] 免費燒錄的好幫手CDBurnerXP
[軟體使用] 全免費的DNS Hosting 設定筆記
[軟體使用] 全免費的DNS Hosting 選擇

最近回應

Re: [軟體推薦] 有問必達-阿達機器人, by 我就是火砲啦 (10/19)
Re: [網站推薦] 所見影片即所作的投影片分享網站slideboom, by mouson (05/02)
Re: [網站推薦] 所見影片即所作的投影片分享網站slideboom, by Pseric (04/30)
Re: [網站推薦] 分享你的簡報檔_SlideShare, by 窈窕大媽 (03/17)
Re: [軟體推薦] 方便切換網路設定的 Net Profiles, by cheng0217 (03/05)
Re: [軟體推薦] 免費燒錄的好幫手CDBurnerXP, by u882061 (01/30)
Re: [Lifetype] 一個Lifetype樣板(Template)的繼承架構, by mouson (12/07)
Re: [Lifetype] 一個Lifetype樣板(Template)的繼承架構, by beagle (12/07)
Re: [軟體使用] 全免費的DNS Hosting 設定筆記, by mouson (11/10)
Re: [軟體使用] 全免費的DNS Hosting 設定筆記, by gu (11/10)

文章分類

軟體使用 [8]
iPhone [2]
軟體推薦 [13]
網站推薦 [7]
作業系統 [1]
系統設定 [1]
LifeType [13]
程式語言 [8]
硬體相關 [2]
一般 [2]
PPC使用 [1]
IT資訊 [1]

文章彙整

感謝支持《MIS 救難手冊》

工商服務

我的連結

一般
墨嗓的精選文章
墨嗓的不務正業紀實

聯絡我

訂閱本站

版權聲明

About Me

mousontech

mouson,墨嗓,72年次,北市忠孝東路上的知名科大,資工所畢業生,但由於不務正業個性使然,舉凡資訊、財經、行銷、管理、網路、單車等各方面的知識都有些興趣。 更多關於我請見這裡

留言版


工商服務

用 BloggerAds 替公益盡心力

熱門文章

[網路相關] 免費網路流量監控軟體 NetMeter [16529]
何謂callback function? [16133]
[軟體使用] AWStats 分析您的Log檔 [14962]
[軟體使用] 全免費的DNS Hosting 選擇 [14071]
[軟體使用] 全免費的DNS Hosting 設定筆記 [14014]
無名樣式的Template [12668]
[Lifetype] 一個Lifetype樣板(Template)的繼承架構 [12615]
[Lifetype] 解決Live Writer無法更新類別問題 [11060]
[Lifetype] 在Lifetype平台使用Windows Live Writer [10967]
[軟體使用] 製作明信片地圖google maps的方法 [10354]

誰看過我們

統計資料