Migrating from WordPress to Octopress With Trouble Solution Painlessly
O.S.: 欠超久的wordpress轉到octopress的筆記文章…從2013/1/1正式轉戰octopress一直欠到現在T_T
要說為什麼從wordpress轉戰octopress麻,大概幾個原因點:
- wordpress玩膩了,而且過於方便,沒有hacker的感覺
- wordpress容易安裝套件導致網站速度變慢
- octopress是由script產生靜態網頁,鐵定在速度上的使用者體驗很好
- 繼續跟ruby保持一定的聯繫
- 學習撰寫markdown
- 省去hosting blog的麻煩與花費
- 嘗試新事物
這篇文章將著重在如何無痛的將wordpress轉至octopress,至於ruby, octopress, git等等的安裝說明,網路上很多教學文章,就不詳加贅述,或可參考此篇文章:Hello Octopress!
Mirgration有幾個必要check的項目
- Post(若使用外國開發者寫的script需注意中文編碼問題)
- Page(同Post)
- Comments(若使用Disqus便沒問題)
- File/Images(下文會講解Octopress URI組成,便可無痛解決)
- Code Format(這需端看讀者們用的wordpress程式碼上色plugin來對下方的convertor script做對應修改)
Post和Page轉換##
根據Xdite所寫的轉換script,自己改了一支convertor
與script相關需注意的wordpress設定如下,讀者下載convertor後記得在對應部分做修改
- Permalink Format: /%post_id%/%postname% (ex: http://yoursiteurl/728/snippetspassing-a-bitmap-from-c-to-a-matlab-dll)
- SyntaxHighlighter Evolved
記得先去wordpress輸出部落格內容xml檔,convertor執行方式即將rb檔放在octopress/source/內,在terminal輸入
ruby woconvertor.rb [your xml file location]
即可將wordpress文章轉成一個個的markdown檔,及把Page做成一個個Octopress的Page格式資料夾
File/Images##
在Wordpress中File/Images都是放在wp-content/uploads這個資料夾內,再根據上傳的年、月為資料夾做區分,像是"http://blog.hothero.org/wp-content/uploads/2012/04/xxxxx.png"這樣的URL
Octopress的主要架構便是有plugins, sass, source, public四個資料夾,其中plugins與sass在這先跳過。public即是放所有產生出來的靜態網頁,public即是根目錄( / )。而public產生的來源便是source內的檔案,在source內除了_底線開頭名稱的資料夾會由script做為其他用途的輸出產生外,其他沒有底線開頭名稱的資料夾則會直接保留原始組成架構至public內(除非是markdown的文件,像是Page形式的資料夾)。
像source/images/code_bg.png再經過rake generate後便會成public/images/code_bg.png,公開連結即為http://yoursiteurl/images/code_bg.png。
因此,既然我知道在wordpress所上傳的檔案跟圖片都放在wp-content內,那就很好辦了。直接把wordpress內wp-content這個資料夾原封不動的複製到我octopress的source/內(source/wp-content/...),便無痛完成這些圖片、檔案的連結問題。
Comments##
因本來在wordpress就是用DISQUS在管理,所以沒這問題。若沒使用的人,可以下載DISQUS的plugin即可將站上的comment都倒進DISQUS內。
RSS Feed##
可以用FeedBurner做管理
ZSH Problem##
用ZSH的人可能會遇到"rake new_post["whatever"]"時出錯"zsh: no matches found"。只要將下面指令加到zshrc內即可
alias rake='noglob rake'
SEO##
可參考此篇文章:Octopress中的SEO,這裡就不再贅述。
中文名稱分類的URL Encoding##
根據此篇文章:Octopress博客分類添加中文支持所提,將plugins/category_generator.rb內約105行左右的write_category_indexes函數,改為:
def write_category_indexes
if self.layouts.key? 'category_index'
dir = self.config['category_dir'] || 'categories'
self.categories.keys.each do |category|
cate_dir = category.gsub(/_|\P{Word}/, '-').gsub(/-{2,}/, '-').downcase
cate_dir = URI::escape(cate_dir)
cate_dir = URI::parse(cate_dir)
cate_dir = cate_dir.to_s
self.write_category_index(File.join(dir, cate_dir), category)
end
# Throw an exception if the layout couldn't be found.
else
throw "No 'category_index' layout found."
end
end
RSS Feed中文編碼##
1. 到Ruby安裝目錄下(可透過which ruby,找到執行檔在哪)####
例如which ruby得到/Users/hothero/.rvm/rubies/ruby-1.9.3-p374/bin/ruby,那安裝目錄即為/Users/hothero/.rvm/rubies/ruby-1.9.3-p374
2. lib/ruby/gems/1.9.1/gems/jekyll-0.11.2/lib/jekyll, 即cd ~/.rvm/rubies/ruby-1.9.3-p374/lib/ruby/gems/1.9.1/gems/jekyll-0.12.0/lib/jekyll
3. 找到convertible.rb這個檔案####
4. 修改####
self.content = File.read(File.join(base, name))
為####
self.content = File.read(File.join(base, name), :encoding => “utf-8”)
以上,祝大家都能順利轉移。
Reference
- Doc: http://octopress.org/docs/
- Setup: http://octopress.org/docs/setup/
- Configuration
- Migration: https://github.com/mojombo/jekyll/wiki/blog-migrations
- Wordpress exporter plugin: https://github.com/benbalter/wordpress-to-jekyll-exporter
- How to Install & Configure Octopress on a Mac, and Host Your Static Website on Amazon
- Hello Octopress!
- Mou (The missing Markdown editor for web developers)
- 如何從Wordpress Migration到Octopress
- https://github.com/robbyrussell/oh-my-zsh/issues/433
- Octopress中文設定