让 Blogging Bundle 根据 Post-ID 打开任意 Wordpress 文章

Lucifr 最近的几篇文章都是在 TextMate 下成文的,虽然对 TextMate 对中文的糟糕支持还是不太适应,但总体来说比 MarsEdit 还是要好一些。继上一篇文章中解决了中文类别的问题之后,这次的重点就放在如何用 TextMate 的 Blogging Bundle 来编辑任意一篇 Wordpress 的文章。

用过 Blogging Bundle 的人可能都会注意到使用它的 Fetch Post 功能只能提取最近的 20 篇文章,虽然通过修改 blogging.rb 文件的方法可以增加这个数目,但无疑会同时增加数据库的负担以及等待的时间。于是就有人想出通过 Wordpress 的 Post-ID 来提取相应文章方法,因为 Wordpress 的每篇文章的 Post-ID 都是唯一的,这样只要知道 Post-ID 就可以提取相应的文章了。下面就来说说具体方法。

修改“blogging.rb”文件

  1. 打开“应用程序(Applications)”文件夹,找到 TextMate 程序。
  2. 右键单击(按住Command并单击) TextMate 的程序图标,在菜单中选择“显示包内容”,这一步可能需要鉴证。


  3. 在打开的窗口中进入如下路径 “Contents/SharedSupport/Bundles”,在这个文件夹中有多个 Bundle。
  4. 和第 2 步中一样右键单击 “Blogging.tmbundle”,选择“显示包内容”。


  5. 在打开的窗口中进入如下路径 “Support/lib”,这个文件夹中包含了多个 ruby 格式的文件,我们的目标 “blogging.rb” 就在其中。
  6. 这里有两个选择,一个是对 blogging.rb 文件进行直接修改,但保险一些的做法还是把它复制一下,放到用户文件夹中去进行修改。这里我们还是用比较保险的后者。把 blogging.rb 复制到 “/Users/--username--/Library/Application Support/TextMate/BundleEdits/Blogging/blogging.rb”,这里 BundleEdits 及子文件夹 Blogging 是自己建立的,当然你也可以把它放到别的地方。


  7. 现在(最好是)用除 TextMate 以外的文本编辑工具打开复制的 blogging.rb,进行编辑。Lucifr 以 MacVim 为例。
  8. 搜索“# Command: Fetch”,在它的下面就是 fetch 这个命令,我们要做的是要将以下代码粘贴到整个 fetch def 的下面去。 ``` #Fetch post by id SELECTEDID = ENV['TM_SELECTED_TEXT'] def fetch_post_page current_password = self.password require "#{ENV['TM_SUPPORT_PATH']}/lib/progress.rb" result = nil TextMate.call_with_progress(:title => "Fetch Post By Id", :message => "Contacting Server “#{@host}”…") do begin result = self.client.getPost(SELECTEDID, self.username, current_password) rescue XMLRPC::FaultException => e TextMate.exit_show_tool_tip("Error: #{e.faultString} (#{e.faultCode})") end end @mw_success = true self.post = result TextMate.exit_create_new_document(post_to_document()) end def fetch_by_id fetch_post_page end ``` 如下图所示:
  9. 贴好后就可以保存并关掉文本编辑器了。

在 TextMate Bundle Editor 中建立新的命令(Command)

  1. 打开 TextMate,在菜单中选择 “Bundles”->“Bundle Editor”->“Edit Commands…”(或者也可以直接按快捷键Control-Option-Command-C)。
  2. 在 Bundle Editor 左边栏中找到 Blogging,打开后找到 “Fetch Post” 这个命令,单击选中它。
  3. 点击左下角的双加号来建立一个新的命令,可以重命名为“Fetch Post By Id”或是别的什么。

  4. 现在把以下代码粘贴进右栏中的“Command(s)”框里,注意替换“–username–”部分为你自己的用户名,当然 blogging.rb 的路径也要和之前的位置保持一致。

    ``` #!/usr/bin/env ruby -rjcode -Ku require “Users/–username–/Library/Application Support/TextMate/BundleEdits/Blogging/blogging.rb” Blogging.new.fetch_by_id

    ```

  5. 其它部分保持不变,关闭 Bundle Edit。

使用方法

现在修改已经完成了,对于 Wordpress 的博客来说,找到 Post-Id 并不是件很难的事,对于懒得进后台看 Post-Id 的人来说,也可以考虑 修改下博客的永久链接格式

找到想要打开的文章的 Post-Id 后,在 TextMate 建立一个新文档,输入 Post-Id,高亮选中它,选择菜单中的 “Bundles”->“Blogging”->“Fetch Post By Id”,TextMate 就会在一个新窗口中打开相应的文章了。

via Plasticular Inscriptor and Dimitris Diavatis

Lucifr

Read more posts by this author.

Beijing, China http://lucifr.com