添加修改文章的時間提示
鄙人的部落格充滿了讓“堂堂正正的中國人”前來《中國不高興》的內容,有時也分享些書什么的,有時補充點什么資料和新的下載鏈接,在沒有這種hack之前,只能在文章標題上做點手腳,這很麻煩(因為 Blogger 的樣板變數,Post 裡只有發表的 timestamp,並沒有更新的時間..)
不過有人發現,可以從文章單獨的feed里面抓出修改時間這一重要的信息來,接下來不過就是再弄個jave程序讓它顯示的問題
這個設想已經成功(廢話,不然我發出來干嘛)。顯示文章最後的更新時間 如下圖所示
其中理論多半也讓您看不懂,所以繼續傳統:一樣複製、貼上、修改就能用這個功能了。打開管理介面、版面配置、修改 HTML 樣板原始碼(一樣要展開小程式範本),在程式碼 <head> 區段內(</b:skin> 標籤後、</head> 標籤前),塞入 Javascript 程式:
|
var updateTime = json.entry.updated.$t; var publishTime = json.entry.published.$t; if (updateTime.substr(0,10) != publishTime.substr(0,10)) document.write(' | 更新於 '+updateTime.substr(0,10)+' '+updateTime.substr(11,5)); } //]]>
|
說明一下,這段 Javascript 的工作原理是:先取得該文章的「發表時間」和「更新時間」,如果「日期」一模一樣,那麼就不顯示更新時間(因為我覺得,在發表文章的同一天內對內容做一點修改無可厚非,可能只是打錯字)。如果日期不一樣,那麼就顯示該文章最後更新的日期和時間。(如果要改顯示格式、內容和判斷規則的,自己修改這段 Javascript,不要再來找我客制化了!實在是很喜歡搞個性但是不會調java的人,鄙人告訴你一個終極的方案,把“更新于”三個中文字改改也成)
接下來,要把觸發以上 Javascript 的函式呼叫塞到原始碼裡,這裡主要也是決定這段更新時間要顯示的位置。以這的範例來看,我把最後更新時間放在「發表時間」的後面,而且,只有在顯示該篇文章全文的時候,才會顯示出來(所以首頁看不到,判斷規則可以參考這篇文章)。所以先找到顯示發表時間 (<data:post.timestamp/>) 的區段,插入紅色的那個程式:
<span class='post-timestamp'>
<b:if cond='data:top.showTimestamp'>
<data:top.timestampLabel/>
<b:if cond='data:post.url'>
<a class='timestamp-link' expr:href='data:post.url' title='permanent link'><data:post.timestamp/></a>
<!-- Fixed for display post update time -->
<b:if cond='data:blog.pageType == "item"'>
<script expr:src='"/feeds/posts/default/" + data:post.id + "?alt=json-in-script&callback=showPostUpdateTime"' type='text/javascript'/>
</b:if>
</b:if>
</b:if>
</span>
那個 if 的判斷句就是檢查是不是「顯示文章全文」的狀態,如果到處都想看到「更新時間」,那麼把該 if 判斷拿掉就行了。(<b:if cond……>和其中一個</b:if>)我就是這么干的
作者言:
會想加這項資訊,主要也是想標示文章最後的更新時間,自己在整理筆記時,才知道上次更新的時間,閱讀時也能知道這篇是不是 Po 完就沒動過的舊文章,對於值得一看再看或會修改的文章,這項資訊很有參考價值,對於愛 Po 流水帳、或是 Po 完連自己都不一定會再看的 Blog 來說,這項功能就完全用不到囉~
hack之后消失的【快速編輯】和【電子郵件發布】的復原
hack到現在,如果你運氣不大好,應該就會發現:Post 尾巴 Blogger 內建的「快速編輯」和「電子郵件發佈連結」的圖示消失了【「快速編輯」是在文章後面多一個「鉛筆」的圖示,在管理帳號「登入」的狀態下,可以點圖示直接編輯該篇文章;「電子郵件發佈連結」則是允許讀者將正在閱讀文章的連結、透過點擊按鈕方便寄送到自己或朋友的電子郵件信箱。】
這兩個基本上都是 Blogger 原來就有的功能,不用 Hack,只要透過管理介面開啟就行了(版面配置 -> 網頁元素 -> 選擇「網頁文章」模組右下的「編輯」):
原則上一旦有設定,每篇文章的文末 (Post-footer) 區段裡,就應該要有這兩個功能圖示的樣式程式碼,類似這樣:(要「展開小裝置範本」才看得到,以下第一段是「快速編輯」、第二段是「電子郵件發佈連結」)
<!-- quickedit pencil -->
<b:includable id='postQuickEdit' var='post'>
<b:if cond='data:post.editUrl'>
<span expr:class='"item-control " + data:post.adminClass'>
<a expr:href='data:post.editUrl' expr:title='data:top.editPostMsg'>
<span class='quick-edit-icon'> </span>
</a>
</span>
</b:if>
</b:includable>
<!-- email post links -->
<b:if cond='data:post.emailPostUrl'>
<span class='item-action'>
<a expr:href='data:post.emailPostUrl' title='Email Post'>
<span class='email-post-icon'> </span>
</a>
</span>
</b:if>
功能正常的話,文末應該會有像這樣的圖示:
hack之后這兩小東西消失是因為圖示的鏈接錯誤(可以算作blogspot的一個bug)原理不想講了,直接上方法
在定義 CSS 樣式的區段裡面 即(<b:skin> </b:skin> ),直接插入以下幾行,就能覆蓋官方的 CSS 圖檔連結、解決這個問題了:
.email-post-icon {
background: url("http://www.blogger.com/img/icon18_email.gif") no-repeat left;
padding: 9px;
}
.quick-edit-icon {
background: url("http://www.blogger.com/img/icon18_edit_allbkg.gif") no-repeat left;
padding: 9px;
}
當然,如果有自己喜歡的圖示(給出的是官方的),可以把以上的圖檔連結換成自己的,更能一勞永逸解決問題。
為blogspot部落格加上漂亮的標簽云【label cloud】
|
]]></b:skin>
|
然后把地下那段東西放在它的前面,當然,必須在它(其實就是css區)的定位區域內,按照方便,就貼著放在前面好了
|
/* Label Cloud Styles ———————————————– */ #labelCloud {text-align:center;font-family:arial,sans-serif;} #labelCloud .label-cloud li{display:inline;background-image:none !important;padding:0 5px;margin:0;vertical-align:baseline !important;border:0 !important;} #labelCloud ul{list-style-type:none;margin:0 auto;padding:0;} #labelCloud a img{border:0;display:inline;margin:0 0 0 3px;padding:0} #labelCloud a{text-decoration:none} #labelCloud a:hover{text-decoration:underline} #labelCloud li a{} #labelCloud .label-cloud {} #labelCloud .label-count {padding-left:0.2em;font-size:9px;color:#000} #labelCloud .label-cloud li:before{content:”” !important} |
然后把地下一段東西放到上面那個標記后面,但是必須在</head>的前面,其實他兩很近的
|
<script type=’text/javascript’> // Label Cloud User Variables var cloudMin = 1; var maxFontSize = 20; var maxColor = [0,0,255]; var minFontSize = 10; var minColor = [0,0,0]; var lcShowCount = false; </script> |
然后尋找<
| <b:widget id=’Label1′ locked=’false’ title=’Labels’ type=’Label’/> |
(不一定完全一樣,只要前半部分一樣就是了)
把這一小段替換為下面的一大段,或者你也可以在這里先保存下html,然后打開小裝置,用下面一大段完整替換上面那條小裝置的全部內容(到
| </b:widget> |
結束)
|
<b:widget id=’Label1′ locked=’false’ title=’Label Cloud’ type=’Label’> <b:includable id=’main’> <b:if cond=’data:title’> <h2><data:title/></h2> </b:if> <div class=’widget-content’> <div id=’labelCloud’/> <script type=’text/javascript’> // Don’t change anything past this point —————– // Cloud function s() ripped from del.icio.us function s(a,b,i,x){ if(a>b){ var m=(a-b)/Math.log(x),v=a-Math.floor(Math.log(i)*m) } else{ var m=(b-a)/Math.log(x),v=Math.floor(Math.log(i)*m+a) } return v } var c=[]; var labelCount = new Array(); var ts = new Object; <b:loop values=’data:labels’ var=’label’> var theName = "<data:label.name/>"; ts[theName] = <data:label.count/>; </b:loop> for (t in ts){ if (!labelCount[ts[t]]){ labelCount[ts[t]] = new Array(ts[t]) } } var ta=cloudMin-1; tz = labelCount.length – cloudMin; lc2 = document.getElementById(‘labelCloud’); ul = document.createElement(‘ul’); ul.className = ‘label-cloud’; for(var t in ts){ if(ts[t] < cloudMin){ continue; } for (var i=0;3 > i;i++) { c[i]=s(minColor[i],maxColor[i],ts[t]-ta,tz) } var fs = s(minFontSize,maxFontSize,ts[t]-ta,tz); li = document.createElement(‘li’); li.style.fontSize = fs+’px’; li.style.lineHeight = ‘1’; a = document.createElement(‘a’); a.title = ts[t]+’ Posts in ‘+t; a.style.color = ‘rgb(‘+c[0]+’,’+c[1]+’,’+c[2]+’)’; a.href = ‘/search/label/’+encodeURIComponent(t); if (lcShowCount){ span = document.createElement(‘span’); span.innerHTML = ‘(‘+ts[t]+’) ‘; span.className = ‘label-count’; a.appendChild(document.createTextNode(t)); li.appendChild(a); li.appendChild(span); } else { a.appendChild(document.createTextNode(t)); li.appendChild(a); } ul.appendChild(li); abnk = document.createTextNode(‘ ‘); ul.appendChild(abnk); } lc2.appendChild(ul); </script> <noscript> <ul> <b:loop values=’data:labels’ var=’label’> <li> <b:if cond=’data:blog.url == data:label.url’> <data:label.name/> <b:else/> <a expr:href=’data:label.url’><data:label.name/></a> </b:if> (<data:label.count/>) </li> </b:loop> </ul> </noscript> <b:include name=’quickedit’/> </div> </b:includable> </b:widget> |
var cloudMin = 1;
var maxFontSize = 20;
var maxColor = [0,0,255];
var minFontSize = 10;
var minColor = [0,0,0];
var lcShowCount = false;
這一段可以自己去“個性化”其中[ , , ]是顏色代碼,三個數值分別是紅,錄,藍的值,從0,到255,三種顏色會按你調的自動呈現,可以根據自己部落格的背景顏色進行客制
RGB Color Code Chart
也可以用上面那個鏈接
—————————————————————————
如果哪天你也開始教如何hack blogspot,這里告訴你怎么顯示代碼
写了两篇Blogger教学,觉得写代码没有代码框实在不行。我开始对此很头痛,只能直接将文本代码转换html代码,然后贴上。现在弄明白了,其实很简单,就是要先在模板中加入一段CSS代码。
第一步:进入到 控制台-模板-修改HTML ,不用打勾“扩展窗口小部件模板”。在模板内容里找到下面这段代码,你可以通过按Ctrl+F搜索“skin”两次找到 ]]></b:skin></head>
然后将以下的代码段拷贝加到上面代码的前面,就是那两个中括号前面。
CODE {
display: block; /* fixes a strange ie margin bug */
font-family: Courier New;
font-size: 8pt;
color:#33f;
overflow:auto;
background: #f0f0f0 url(http://lh5.ggpht.com/_xQo3SUszuug/SWyqG9n1G8I/AAAAAAAAARo/_ePknIN4Pqo/Code_BG.gif) left top repeat-y;
border: 1px solid #ccc;
padding: 10px 10px 10px 21px;
max-height:200px;
line-height: 1.2em;
}
第二步:在Html模式下,把文章中将要引用的代码前后分别用《code》和《/code》 包起来,这样就可以显示成代码框了。
(予按:在livewritter中有個表格功能,如果你用livewritter寫作,那么,表格里的東西也會被自動轉為代碼標記)
注:请用HTML转换工具来转换您的代码,然后才将代码贴在Blogger里。不然< >里头的内容就会被Blogger的编辑器当成代码执行而不显示。
让Blogger在新窗口中打开链接,方便阅读
步驟——
1.下載相應的java代碼(我剛推介的網盤起作用了)。
js代碼下載:代碼 (右鍵另存為)
2.将如下代码添加到Blogger模板的head部分之间(我是添加在</head>之前的),修改模板先请先备份!
|
<script src=’ http://dl.getdropbox.com/u/761343/javascript/blogger_open_new_blank.js‘ type=’text/javascript’/>
|
3.確保“擴展小部件”已經選上,查找:
| <a expr:href=’data:post.url’> |
選擇你想要新窗口打開的替换为:
| <a expr:href=’data:post.url’ rel=’external’> |
4.此步为修改侧栏中的链接列表以新窗口打开链接的方式,参考并修改自Jason’blog:
查找
| <a expr:href=’data:link.target’ ><data:link.name/> |
選擇修改为
| <a expr:href=’data:link.target’ rel=”external”><data:link.name/> |
即添加 rel=”external” (帶空格)
至此大功告成保存模板。
注:對於日誌中自己添加的鏈接還是會在原窗口打開,這是由於Blogger本身插入的代碼所致,如果同樣想實現新窗口打開的效果,目前Luke只能提供一個比較笨的方法:
在撰寫時切換到“修改Html”,然後將鏈接代碼做如下改動:
| <a href=”http://lukexzt.blogspot.com/”>鏈接</a> |
變成
| <a href=”http://lukexzt.blogspot.com/” rel=”external”>鏈接</a> |
即添加 rel=”external” (注意空格)
首頁只顯示摘要或標題而非全文
鄙人覺得他那種方式甚好,所以就不掠人之美,這里放上鏈接,有興趣的自己去看,鄙人這種方式則太麻煩,如果有人有需要,我再單獨寫一篇出來
I recently came across your blog and have been reading along. I thought I would leave my first comment. I don’t know what to say except that I have enjoyed reading. Nice blog. I will keep visiting this blog very often.
Joannah
http://linuxmemory.net
Thanks
but my Elglish is pool
Linux?that’s something I ignoran。Most Taiwanese use MAC or MW
You can understand chinaese?