Lucifr

分享网络、博客、软件及其它趣事

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

| Comments

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 的下面去。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    
    #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 的路径也要和之前的位置保持一致。
    1
    2
    3
    
    #!/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

Comments