樂多roodo blog搬家自動導頁

從Roodo樂多日誌Blog搬家到wordpress之後,寫了一段javascript把原本在roodo的頁面各別導向wordpress的對應頁面。包含:

  • 首頁

導到新blog(wordpress)的首頁,這最基本的。

  • 分類頁

原roodo的分類頁連結,會轉換到新blog(wordpress)的對應分類上。
(點我試試: http://blog.roodo.com/dabinn/archives/cat_157035.html)

  • 文章頁

原roodo文章連結,會轉換到新blog(wordpress)對應的文章。
(點我試試: http://blog.roodo.com/dabinn/archives/28375293.html)

作法

Roodo blog不知為何沒有防堵javascript,我就把javascript插在日誌基本管理簡介那一欄上

網址的規則:Roodo

從網頁標題去判斷
先看有沒文章標題,樂多的文章網頁標題會長這樣:
簡單切換Android market到美國地區方法 (不需root) - Dabinn的筆記 - 樂多日誌
無線影音傳輸 - Dabinn的筆記 - 樂多日誌
如果沒有,那有可能是分類或首頁,分類的網頁標題長這樣:
Dabinn的筆記:週邊3C分類文章簡文 - 樂多日誌
再沒有的話,那應該就是在首頁了,首頁的標題是這樣
Dabinn的筆記 - 樂多日誌

網址的規則:Wordpress

分類頁:
{{!http://網址/category/分類名稱!}}
文章頁要看Wordpress設定,我的是
{{!http://網址/空格及符號經過轉換的文章名稱!}}

WordPress文章頁網址的處理

WordPress文章的網址不能直接拿文章標題來用,必需作一些轉換才行
我找不到wordpress的網址規則的說明
只好自己試了試,規則大致上是這樣

  • 空格、句點(.)和加號(+),取代為減號(-)
  • 其它符號都刪掉 (底線(_)符號不確定,暫先保留)
  • 英文轉為全小寫 (不轉也沒關係)
  • 字串長度限制:過長的標題會被截掉,這邊不太清楚他的邏輯,暫不處理

ndsl-nds-lite-麥克風-mic-microphone-壞了壞掉故障失效沒反應問題-修 <– 這被截掉

The problem with Logitech SetPoint 5.20/6.00 (APP auto detection not working properly) <– 這更長反而可以

這邊用javascript作比較麻煩的是,因為javscript不認得中文,用正規表達式來搜尋\W(字母以外的其它符號)進行取代的話,會連中文都一起刪光光。
所以就大致給了他一段的CJK中日韓字集的範圍,叫他略過

\u2E80-\u9FFF
\uAC00-\uD7FF
\uF900-\uFFFD

Code

寫好的JS在這,歡迎自行修改使用。

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
37
38
<span id="msgdisp" style="color:red; font-weight:1000;"> <a href=" http://blog.dabinn.net/">http://blog.dabinn.net/</a></span>
 
<script>
/* redirect to new blog */
var newBlog = "http://blog.dabinn.net/";
var timeToGo = 10;
var newUrl = "";
var msgdisp = document.getElementById("msgdisp");
var title = document.title;
var article = title.replace(/(.+) - Dabinn的筆記.*/, "$1");
if (article != title) { //This is an artitle page
    //deal with wordpress format
    newUrl = article.replace(/[ \.\+]+/g, "-").replace(/[^0-9A-Z_\-\u2E80-\u9FFF\uAC00-\uD7FF\uF900-\uFFFD]/gi, "").replace(/[\-]+/g, "-").toLowerCase() +"/";
    
} else { //This is a blog home or catelog page
    var catelog = title.replace(/Dabinn的筆記:(.+)分類文章.*/, "$1");
    if (catelog != title) { //This is an artitle page
        newUrl = "category/"+catelog+"/";
    }
}
 
newUrl = newBlog + newUrl;
newUrlHTML = "<span id=\"timeToGo\" style=\"color:red;  font-weight:5000; font-size:4em;\">"+timeToGo+"</span>&nbsp;&nbsp;&nbsp;準備進行超空間跳躍!新座標是: <a href=\""+newUrl+"\" style=\"color:blue; font-weight:1000;\">"+newUrl+"</a>";
msgdisp.innerHTML = newUrlHTML;
tomToGoNode = document.getElementById("timeToGo");
var timeBegin = new Date().getTime();
setInterval("gotoNewBlog()", 300);
function gotoNewBlog() {
    timeLeft = timeToGo*1000 - (new Date().getTime()- timeBegin);
    timeLeftShow = Math.ceil(timeLeft / 1000);
    if (timeLeftShow < 0) timeLeftShow = 0;
    tomToGoNode.innerHTML = timeLeftShow;
 
    if (timeLeft <= 0) {
        location.href = newUrl;
    }
}
</script>

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *