2013年10月11日 星期五

Blogger 私密文章的偽裝方案

Blogger 私密文章的偽裝方案

(Pic from: bpm-ingenuity.com)
從別的部落格平台搬到 Blogger 的站長,應該有不少會懷念「文章上鎖」的功能,這在其他平台是常見的設計,但不知為何 Blogger 就是不開放?也許是 Google 以搜尋引擎起家,不希望大家都把文章上鎖,那麼機器人就沒文章可爬了吧!

本文要提供的語法及技巧,可讓需要私密文章功能的站長,達到隱藏文章的目的,讓所有訪客都看不到特定文章的內容,只有以站長身份才看得到。

這篇文章的概念與「讓 Blogger 有快速載入的展示(DEMO)頁面」相同,都是從文章網址下手,只要自訂文章網址就能產生私密文章,以下說明如何安裝此功能。


2013.7.11 公告

本篇的程式碼可讓私密文章只有站長一人可看到。如果有給特定人看私密文章的需求(經由給密碼的方式),那麼請安裝更新版的程式碼:




一、安裝程式碼

請見以下的程式碼──


  1. <!-- private-1 start -->
  2. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
  3. <span id='private_host'></span>
  4. <script>
  5. //<![CDATA[
  6. var prvPost = {};
  7. prvPost.errorUrl = "";
  8. prvPost.preUrl = "prv-";
  9. prvPost.check = 0;
  10. (function(){$("#private_host").attr("class","item-control blog-admin");var b=$("#private_host")[0],c=top.location.hostname,d=top.location.pathname,a=d.lastIndexOf("/");if(!prvPost.errorUrl){prvPost.errorUrl="http://"+c+"/error.html"}prvPost.check=(window.getComputedStyle)?(window.getComputedStyle(b).display=="none")?0:1:(b.currentStyle&&b.currentStyle.display=="none")?0:1;if(d.search(prvPost.preUrl)==a+1){if(prvPost.check==0){window.location.replace(prvPost.errorUrl)}else{$(function(){var e=unescape("%3Cdiv%20style%3D%27float%3A%20right%3B%27%3E%3Ca%20href%3D%27http%3A//wayne-fu.blogspot.com/2013/06/blogger-private-post.html%27%20target%3D%27_blank%27%3E%3Cimg%20style%3D%27width%3A%20120px%3B%27%20src%3D%27http%3A//2.bp.blogspot.com/-9TeYOzWNNdQ/UaqLURzpdiI/AAAAAAAAGzs/Vfviz0O7Yfg/s240/private-post.png%27/%3E%3C/a%3E%3C/div%3E%3Cdiv%20style%3D%27clear%3A%20both%3B%27%3E%3C/div%3E");$(".post-body").append(e)})}}$("#private_host").remove();prvPost.ie="";$(function(){var e=!-[1];if(e==true){prvPost.ie.parent().remove()}})})();
  11. //]]>
  12. </script>
  13. <!-- private-1 end -->
  14.  
  15. <!-- private-2 start -->
  16. <script class="prvDetect" expr:title="data:post.url">
  17. //<![CDATA[
  18. (function(){$(".prvDetect").each(function(){var b=$(this).attr("title"),a=b.lastIndexOf("/");if(b.search(prvPost.preUrl)==a+1&&prvPost.check==0){var c=!-[1,];if(c==false){$(this).parent().remove()}else{$(this).parent().css("display","none");prvPost.ie=$(this)}}})})();
  19. //]]>
  20. </script>
  21. <!-- private-2 end -->
1. 首先到後台 → 範本 → 編輯 HTML → 找到字串 <body ....> 這一行,在其後面一行,插入 A~M 行。

2. 接著搜尋類似以下的字串──

<b:if cond='data:post.isDateStart'>
&lt;div class=&quot;date-outer&quot;&gt;
</b:if>

小心不要找錯了,上面的第二行有 "date-outer" 字串。
找到這三行後,在其下面一行,插入 O~U 行。

3. 不急著存檔,先改幾個參數,請對照程式碼的行號──

H:紅字 "prv-" 字串可改為自訂字串,這代表文章網址以 "prv-" 字串開頭的文章,會自動成為「私密文章」。

G:如果部落格有自己設計「404 錯誤頁面」的話,請將網站的「404 頁面網址」填入此行的雙引號內;如果沒有的話,請保持原狀即可。

B:如果範本中已經裝過 jquery (可搜尋看看有沒有 "jquery" 的字串),那麼可刪除此行。

以上完成後,即可存檔,接下來請看使用方式。







二、簡便的使用方式

過去曾有部落客曾寫出「文章加密」的方式來讓 Blogger 文章上鎖,其缺點是使用方法稍嫌繁複,每篇文章得重複「複製」、「貼上」的過程,還得記住密碼(密碼忘了可就沒人打得開文章)。

本文提供的使用方式很簡單,如同「讓 Blogger 有快速載入的展示(DEMO)頁面」的原理一樣──



借用該篇文章的圖,只要在文章編輯的頁面,於「文章設定」→「連結」→「自訂永久連結」→ 輸入自訂字串開頭的網址。

以本文為例,如果在「一、安裝程式碼」設定的字串為 "prv-",上圖的文章網址字串 "DEMO-toc-date" 改成 "prv-toc-date",那麼這篇文章就能成為 "私密文章",只有站長能看到該篇文章。



三、其他必要動作

1. 建議移除「網誌存檔」小工具

本文的程式碼,無法處理「網誌存檔」這個小工具的文章,這代表網站上有裝「網誌存檔」時,訪客有機會看到私密文章,因此建議移除「網誌存檔」這個小工具。

如果需要依日期排列的文章列表功能,可改安裝「動態檢視 Blogger 文章列表」→「四、個別安裝」,來安裝依日期排列的文章列表。


2. 文章日期不要設太近

本文的程式碼,當偵測到非站長身份,且在 "首頁" 或 "標籤索引" 頁面時,會將私密文章刪除,讓其不顯示。

不過當部落格安裝了「最新文章」這樣的小工具時,在首頁會產生弔詭的情形──某篇私密文章會出現在「最新文章」小工具的列表,但在首頁又看不到這篇文章。

因此為了不讓訪客覺得奇怪,私密文章的日期建議設定地古早一點,讓其不要出現在近期的「最新文章」。


3. 設定「繼續閱讀」及「網站資訊提供」

如果部落格沒開放 RSS 訂閱的話,那麼可以略過此部分的內容;不過如果開放 RSS 訂閱的話,那麼私密文章就有可能被看到。因此必須設定以下兩件事才能避免:

A. 繼續閱讀:



如上圖,私密文章的內容,請放在「繼續閱讀」標示的後面。


B. 網站資訊提供



如上圖,請到後台 → 設定 → 其他 → 允許網誌資訊提供 → 改為「直到繼續閱讀標示為止



四、測試效果與小結

以上動作都完成後,可以設定幾篇測試用的私密文章,然後登入站長身份(登入Google帳號)、或用訪客身份(登出Google帳號)分別測試效果。

以訪客身份唯一能進入私密文章的管道,是從「最新文章」小工具,不過當訪客點擊私密文章後,系統馬上會將網址導向「404錯誤頁面」,讓訪客誤以為此篇文章已刪除,因此私密文章的內容是不會被看到的。

跟「讓 Blogger 有快速載入的展示(DEMO)頁面」一樣,一開始的設定動作比較麻煩一些,不過以後只要設定文章網址後,就能在 Blogger 自動產生私密文章,這算是比較簡單、有效率的方案了。


2013.6.14 補充

五、快速列出網站私密文章的方法

1. 建議先在 Blogger 安裝「Google 自訂搜尋」,搜尋速度很快。

2. 假設私密文章設定的字串為 "prv-",那麼利用這個「Google 自訂搜尋」小工具來搜尋字串 "prv-",就能列出所有的私密文章。不過前提是,這幾篇私密文章要能先被 Google 搜尋引擎收錄。

3. 例如在 +Ken Lo 的網站「K.one Dreamhouse」進行搜尋,就可看到以下兩篇私密文章──



4. 感謝 ken 提供測試效果,當然以上兩篇只是用來測試的私密文章。不過為了避免被有心人士知道有私密文章,真的要在 Blogger 藏私密文章的話,最好將預設字串 "prv-" 改成只有自己知道的字串,會比較安全。


Blogger 私密文章」系列標題:
一. 簡易版__站長專用
二. 更新版__能讓他人觀看
三. 注意事項、使用技巧

➢➢ 快速選單:   


本文引自 http://wayne-fu.blogspot.tw/2013/06/blogger-private-post.html

沒有留言:

張貼留言