Typecho 《HelloChangYan》插件500錯誤以及優化

暢言logo


原文是在我本身博客中,小夥伴也能夠點閱讀原文進行跳轉查看,還有好聽的背景音樂噢~php

HelloChangYan

HelloChangYan是一個typecho的暢言評論回推插件,顧名思義就是在網站中使用了暢言評論以後,把評論內容以及一些參數數據回推到網站,達到網站評論和暢言同步的效果。json

功能是個好功能,可是在下載的插件包中發現了一些BUG,並且在使用步驟以及文件註釋中做者並無說起這些,想聯繫做者,可是始終找不到做者的聯繫方式,那只有本身修改了。主要有兩點app

  1. 路徑問題,致使出現500報錯
  2. 字符串替換問題,致使評論數據插入評論表異常

下面就談一下出現bug的地方和改善方法typecho

問題以及改善

問題都是出如今feedback.php文件中,先看一下這個文件的源碼:fetch

feedback.php源碼截圖

上圖爲feedback.php的源碼截圖,我在圖中作了標記的一、2兩處就是須要修改的地方。jsonp

修改路徑

第一處:優化

require_once dirname(__FILE__) . '/config.inc.php';網站

上述這段代碼的意思是引入在當前目錄中的config.inc.php文件,可是在咱們的目錄列表中並無找到這個文件,回想一下,config.inc.php這個文件好像就是typecho的配置文件,做者的真正意圖應該是想要引入這個文件,因此咱們修改成:ui

require_once '../../../config.inc.php';url

讓它去項目根目錄找到config.inc.php並引入,即可解決問題

替換指定字符串

第二處:

$title = str_replace(' - Hello World', '', $jsonp->title);

由上述代碼得知,是去掉 - Hello World字符串,並獲得一個新的字符串,也就是網站中存在的真實的文章標題。這個標題用來查找文章ID,在$rows = $db->fetchAll($db->select()->from('table.contents')->where('title = ?', $title));這段代碼中能夠看出。
接上段,實際上暢言返回json數據的title值,並無 - Hello World字符串,這是什麼緣由呢?咱們看一下,暢言實際返回的json數據(以個人網站爲例):

暢言推送的json數據

從上面title字段中能夠看出,返回的title是一個文章標題+文章撰寫人的一個組合。經過這點咱們就能夠理解了,上面的代碼是爲了去掉多餘的文章撰寫人,獲得文章標題。咱們須要根據網站中的實際狀況進行修正,好比個人標題中返回的撰寫人是命中水,那麼去掉命中水就能夠了。

$title = str_replace(' - 命中水', '', $jsonp->title);

那麼如何獲取網站撰寫人呢?咱們能夠先把暢言返回的json數據保存在本地,而後查看title字段獲得。

注意:在 - 命中水中的左右各有一個空格,不要漏了;

作完上述工做,再把代碼簡單優化一下,差很少就是這個樣子:

優化後的feedback.php

以上就是此次發現的問題和優化方法,我已經打包好了,放在文章末尾資源目錄下,須要的能夠去下載;

使用說明

找到這個插件的地方几乎都配有使用步驟描述,可是描述基本上都是零散或者不全面的,我把這些整理總結了一下,放在下面,第一次使用的小夥伴能夠做爲參考:

  1. 先把HelloChangYan插件上傳到typecho的usr/plugins目錄下
  2. 把HelloChangYan目錄裏的comments.php文件複製到如今正在使用的主題目錄下,替換掉comments.php
  3. 暢言官網註冊一個帳戶,並在後臺首頁獲得暢言祕鑰,APP IDAPP KEY
  4. 登錄typecho的博客後臺主頁,在插件列表裏啓用HelloChangYan,並打開設置,在設置頁的暢言appid暢言appkey文本框中填寫,上一步驟獲取的APP IDAPP KEY
  5. 在設置頁能夠看到回推地址,這個文本框中有一串url,這個url就是暢言推送評論的回推地址,複製這個連接,而後進入暢言後臺,找到系統設置->通用設置->高級設置,在評論回推地址的文本框裏填寫剛剛複製的回推地址,點擊肯定,並下拉到頁面最底部,保存設置。
  6. 上面都配置好以後,回到HelloChangYan的設置頁,在最後一個選項中,啓用暢言便可。

以上就是這款插件的使用說明了。

資源

相關文章
相關標籤/搜索