• yam天空
  • 天空部落
  • 新聞
  • 登入 註冊 網誌隨便逛
  • 加入天空部落
  • 挺客家得大獎

網誌 相簿 影音 PK吧! Honda嬉遊趣
即時新聞 影音新聞 新聞專輯 政治新聞 財經新聞 娛樂新聞 運動新聞 兩岸新聞 科技新聞
管理介面 發表網誌 發表日記 上傳相片 上傳影音 管理留言
推薦這個部落格: 363

dllee

除了忙與盲之外,也要停下來想一想、看一看... 建議使用 FireFox 或 IE7 以上版本瀏覽。
使用 IE6 若看不到網頁請留個言唷
  • ☞ 網誌分類列表 ☜
    • ※ 網誌分類列表 ※
    •   自製軟體
    •   程式語言
    •   ├ 程式語言.BCB
    •   └ 程式語言.C#
    •   應用軟體
    •   └ MSN
    •   網站架設
    •   └ 部落軌道
    •   電腦硬體
    •   遊戲育樂
    •   日常生活
    •   網路硬碟
    •  ◎不分類網誌列表◎ 
  • ☞ 顯示工具列 ☜

網誌 |相簿 |好友 |留言板
[桌布]大溪橋 | 主頁 | 天空部落+FunP按鈕測試中
October 8, 2008
天空部落+FunP按鈕測試完成以文找文
dllee 在天空部落發表於23:11:17 |  網站架設
鼓勵此網誌:17 

※ 2008-11-01 增訂 日記及不同版型的支援 (感謝 RRobiKing 測試)
總算試出來了
在 IE 完全正常,在 FireFox 則是在摘要列表時,最後一篇不會顯示按鈕,單篇文章則完全正常。
本次修改參考了以下來源:

平凡小人物: 天空部落格加入推推王貼紙
[更新] 讓每篇文章都自動加入黑米跟推推王的收推文按鈕 @ Nelson 是好傻好天真國一生 :: PIXNET 痞客邦 ::
Racklin's 阿土伯程式大觀園: 推推王 推文按鈕貼紙 加強版

一開始參考程式碼 http://nelson.csie.us/OtherBlog/addGoogleAd_yam.js
/*
 * 作者: Nelson (http://blog.pixnet.net/Nelson)
 * 說明: 讓 天空部落 的文章自動加入 Google AdSense
 * 備註: 原始程式碼來自 http://blog.xuite.net/emisjerry/tech/11088489,
 *       我將它改成適合 Pixnet 的版本。
 * 版本: v1.1,2008/01/24
 * 適用: 天空部落
 * 授權: 自由使用及修改,拿去用之前,
 * 		 麻煩到 http://blog.pixnet.net/Nelson/post/3967606 留個言給我。
 */

/*
 * 檢查網址裡頭有沒有 "/article/" 字串,
 * 有的話就代表是單篇文章。
 */
var isArticle = false;
if (document.URL.indexOf("/article/") > 0)
	isArticle = true;

if (isArticle)
{
    if (document.addEventListener)
		document.addEventListener('load', init, false);
    else
		window.attachEvent('onload', init);
}

function init()
{
	// "Content" 是文章的主要區塊
	var CONTENT = document.getElementById("articleBlock");
	var DIVs = CONTENT.getElementsByTagName('div');
	for (var i in DIVs)
	{
		var x = new String(DIVs[i].className);
		if (x.indexOf("articleLink") == 0)
		{
			DIVs[i].innerHTML =
				document.getElementById("divAdSenseContentScript").innerHTML + DIVs[i].innerHTML;
			break;
		}
	}
}

按Nelson 及平凡小人物的方式,很快就可以讓單篇文章自動擁有FunP推文按鈕,不過,我比較想在主頁上的每一篇文章旁就看到推文按鈕,不用點進去看也能看到。因此多花了不少時間在測試及資料搜尋。

其中,最主要遇到的問題是:
在 innerHTML 加入了 java script 後,該 java script 並不會執行!!

在主頁中,可能有 10 篇文章,每一篇文章的網址不同,要能動態取出每一篇文章的網址,再動態加入 FunP推文按鈕 的 script 內,才能達到目的。不過,因為網頁已產生完畢,所以瀏覽器不會再去執行剛生出來的 script code,也就看不到改後的效果了。在 FireFox 內使用 FireBug 就會發現,剛才出來的 script code 以灰色字顯示。

找了很多資料,但許多實在是超過我可以理解的範圍,似乎是有解,又好像很麻煩... 最後,看到Racklin's 阿土伯程式大觀園: 推推王 推文按鈕貼紙 加強版
程式碼:http://blogger-ext2.googlecode.com/svn/trunk/3rd/funp_button2.js
function funp_genBtnByClass() {
	for (i=0;i<document.getElementsByTagName("div").length; i++) {
		if (document.getElementsByTagName("div").item(i).className == "funp_button"){
			var objDiv = document.getElementsByTagName("div").item(i);
			var url = objDiv.innerHTML;

            if (url.length ==0) url = "?url="+encodeURIComponent(document.URL);
            else url="?url="+encodeURIComponent(url);

            objDiv.innerHTML= '<iframe src="http://funp.com/tools/buttoniframe.php'+url+'" height="69" width="60" scrolling="no" frameborder="0" marginheight="0" marginwidth="0"></iframe>';
		}
	}
}

if (window.attachEvent) window.attachEvent('onload', funp_genBtnByClass);
else window.addEventListener('load', funp_genBtnByClass, false);

if (typeof BloggerExt != 'undefined') {
  if(typeof BloggerExt.registerHook == 'function') BloggerExt.registerHook(funp_genBtnByClass);
}

阿土伯直接使用 FunP推文按鈕 script 所產出的 iframe,避掉在 innerHTML 內加入 script 的方式,讓動態產生的 HTML 可以正常顯示。於是我先手動加入我想要的 FunP推文按鈕,去看它生出來的 HTML是什麼,最後修改程式碼如下:
// 說明請參考 http://blog.yam.com/dllee/article/17641242
var needAddBtn= false;
var onlyOne=false;
// 目前只處理網誌的部分
if (document.URL.indexOf("/blog.yam.com/") >= 0)	needAddBtn = true;
// 如果網址有 article 表示是在瀏覽單篇文章
if (document.URL.indexOf("/article/") >= 0)	onlyOne = true;

if (needAddBtn)
{
	if (window.addEventListener)
		window.addEventListener('load', addFunP, false);
	else
		window.attachEvent('onload', addFunP);
}

function addFunP()
{
	var CONTENT = document.getElementById("articleBlock");
	var DIVs = CONTENT.getElementsByTagName('div');
	// 取出天空網誌文章的連結的正規表示法 
	var pattern = new RegExp("http://blog.yam.com/.*/article/[0-9]+", "i");
	var btnStr;
	for (var i in DIVs)
	{
		var x = new String(DIVs[i].className);
		if (x.indexOf("post_titlediv")==0)
		{	// 找到文章標題內的連結
			var myUrl = DIVs[i].innerHTML.match(pattern);
			btnStr='<div style="font-size: 0px; float: right; margin-left: 10px;">'
			+'<iframe height="66" frameborder="0" width="60" scrolling="no" marginwidth="0" marginheight="0" src="http://funp.com/tools/buttoniframe.php?url='
			+myUrl[0]+'&s=7"></iframe></div>';
		}
		else if (x.indexOf("post_content")==0)
		{	// 找到文章內容,加入 FunP 按鈕 HTML
			DIVs[i].innerHTML = btnStr + DIVs[i].innerHTML;
			if(onlyOne) break;	// 單篇文章時找到就可以離開了
		}
	}
}

在以上的程式中,是先找出 post_titlediv 內的文章 URL,再使用它去產生 FunP推文按鈕 的 iframe,接著找到 post_content,再把剛才的按鈕 HTML 加到文章內文的一開頭。這樣的方法,在文章列表及單篇文章中都可以使用。唯獨在單篇文章時,引用文章的區塊也是使用 post_content,於是再加上判斷,在單篇文章模式(URL 內有 /article/)只要找到一篇文章就結束,避免在引用文章內也出現推文按鈕。



以上的說明,我想大部分的人都不想知道,比較想知道的是「到底如何用?」「如何趕快加到自己的格內?」 以下就是說明囉

先下載附件:addFunP_yam.js (請按右鍵另存新檔)
將它存放到您可以直接連結的網頁空間,例如 googlepages,記下它的 URL。

到天空部落的管理介面,增加一個自定欄位(或是加在現有的自定欄位內也可以),加入以下的程式碼:
<script src="http://Your.URL/addFunP_yam.js" language="JavaScript" type="text/javascript"></script>

儲存後,記得重新產生 blog 頁面,回到網誌頁面,就可以看到每篇文章都會有FunP推文按鈕了。在寫文章時,不必再加入任何的程式碼,這個 script 會自動幫您處理

後記:
1. 如果您需要的是不同的按鈕型態或是希望放在不同的位置或是非天空網誌,您將需要修改 javascript 才能達到想要的功能。
2. 沒想到天空部落新版的編輯程式會自動幫您重新編排 HTML TAG 內的屬性,這也導致以上 script 內的程式碼與原始內容不符!! 所有列出的程式都有原始碼的載點,請自行下載確認。
3. 天空部落新增的「自動儲存」功能實在是太方便了,一邊寫、自動儲存,就可以立即看,比預覽還方便


2008-11-01 增訂
感謝RRobiKing使用及測試,原本的程式無法適用於其他版型,我原本以為,同樣都是天空部落,不是都用相同的 CSS 架構嗎?! 看了RRobiKing的網頁內容才發現... 還真是大不同
以下測試讓另一版型以及日記(daily diary)也可以適用。
// 說明請參考 http://blog.yam.com/dllee/article/17641242
var needAddBtn= false;
var onlyOne=false;
// 目前處理網誌及日記的部分
if (document.URL.indexOf("/blog.yam.com/") >= 0 || document.URL.indexOf("/diary.blog.yam.com/") >= 0)	needAddBtn = true;
// 如果網址有 article 表示是在瀏覽單篇文章
if (document.URL.indexOf("/article/") >= 0)	onlyOne = true;

if (needAddBtn)
{
	if (window.addEventListener)
		window.addEventListener('load', addFunP, false);
	else
		window.attachEvent('onload', addFunP);
}

function addFunP()
{
	var CONTENT = document.getElementById("articleBlock");
	var DIVs = CONTENT.getElementsByTagName('div');
	// 取出天空網誌/日記文章的連結的正規表示法
	var pattern = new RegExp("http://.*blog.yam.com/.*/article/[0-9]+", "i");
	var btnStr;
	for (var i in DIVs)
	{
		var x = new String(DIVs[i].className);
		if (x.indexOf("post_titlediv")==0 || x.indexOf("articleTitleDiv")==0)
		{	// 找到文章標題內的連結
			var myUrl = DIVs[i].innerHTML.match(pattern);
			btnStr='<div style="font-size: 0px; float: right; margin-left: 10px;">'
			+'<iframe height="66" frameborder="0" width="60" scrolling="no" marginwidth="0" marginheight="0" src="http://funp.com/tools/buttoniframe.php?url='
			+myUrl[0]+'&s=7"></iframe></div>';
		}
		else if (x.indexOf("post_content")==0 || x.indexOf("articleSummary")==0 || x.indexOf("articleBody")==0)
		{	// 找到文章內容,加入 FunP 按鈕 HTML
			DIVs[i].innerHTML = btnStr + DIVs[i].innerHTML;
			if(onlyOne) break;	// 單篇文章時找到就可以離開了
		}
	}
}
您可以直接下載附件addFunP_yam.js (請按右鍵另存新檔),安裝方式如前述。
或請參考 RRobiKing 的「網誌文章加funP推推王貼紙-天空部落yam版」有圖文說明喔

後記:
原本以為天空編輯器的自動重新編排 HTML TAG 內的屬性,會導致 script 原始碼顯示上的問題,在今天測試後發現,主要是因為 pre 這個 TAG 還是會處理其內部的文字,只要符合 HTML 的,還是會處理,而導致的顯示異常。在此先向天空小尖兵說聲抱歉。而解決方法,就是在 pre 內的程式碼,要先把 大於 > / 小於< 符號,改用 &gt; / &lt; 的取代後,再放入 pre 內就可以正常顯示原始碼了。 內的程式碼與原始內容不符!! 所有列出的程式都有原始碼的載點,請自行下載確認。

誰推薦這篇文章:
留言 (19) | 引用 (1) | 人氣 () | 轉寄
此分類上一篇:部落格觀察排名破 2000 | 主頁 | 此分類下一篇:天空部落+FunP按鈕測試中
引用 (你可以針對此文寫一篇屬於自己的blog/想法,並給作者一個通告)
引用
+ 紫色幻想空間 + 於<『網路』利用 Javascript 增加 FunP 推文貼紙到 Blog 本文內 ( 適用天空部落 ) ......> 引用本文
提要:好用的功能 感謝
引用時間: 2009-01-14 22:27:40
留言 (19筆)
19.
ya~
謝謝版主....
總算有點頭緒了~

3Q again .....and...again .....
板主回覆:
 
加油囉 ^__^
loveka999 於 2009-07-23 18:15:46 留言 |

18.
(1)親愛的版主,謝謝你提供這麼好的資訊,可是我把以下程式碼貼到自由欄位後,仍然沒有出現推文的貼紙耶~是哪裡弄錯了嗎?
<script src="http://https://cid-2e23def08d5a0528.skydrive.live.com/self.aspx/%e6%96%b0%e8%b3%87%e6%96%99%e5%a4%be/rfup%7C_push.js" language="JavaScript" type="text/javascript"></script>

(2)不好意思,另外想請教你關於我部落格的文章區塊跑到下方去的問題該怎麼解決呢?如果不是很懂問題點,請看我的部落格就知道....http://blog.yam.com/loveka999

以上,先謝謝你的幫忙~
板主回覆:
 
Skydrive 不能這樣直接外連,所以,請您申請其他支援直接外連的服務,
如 miroko (http://www.miroko.tw)

我看了您的 Blog 您加了太多有的沒有,把整個網頁的 CSS 架構都破壞了,
建議您把不必要的 javascript 先刪除,再一個一個加入。
一個加入後,確認是您要的,再留下,
如果加入後,就是格式大亂,那就是那個 js 有問題。
 
loveka999 於 2009-07-23 17:10:38 留言 |

17.
請問板大能幫我看看嗎?
我的設定一直都無法成功吶~不知道原因!!麻煩您了.....謝謝!
我在自訂欄位的語法如下:
<script src="http://bao9108.googlepages.com/addFunP_yam.js" language="JavaScript" type="text/javascript"></script>
板主回覆:
 
您好,

剛才去您的格走走 http://blog.yam.com/bao9108

發現 FunP 按鈕都加上啦 ^__^
bao9108 於 2009-05-24 01:02:04 留言 |

16.
我是IE7的瀏覽器
謝謝版大願意幫這個忙
那我就等待你的好消息~感恩啦~
板主回覆:
 
因為您的網誌,讓我找到留言版分隔線的設定,真的是感謝您。
所以您的這個問題,我一定會找時間處理的,希望在這幾週內可以處理掉...
jschristine 於 2009-04-21 20:25:07 留言 |

15.
補上我的問題網址:
http://blog.yam.com/jschristine/article/20448020
只有這篇的第一張圖是用超連結
板主回覆:
 
我再使用 IE7 開,與 IE6 一樣有問題...
會找時間再看為什麼...
因為最近太忙(連網誌的更新頻率都減低了),
可能要多等一下,可以測試時,會再麻煩您測試看看唷 ^__^
jschristine 於 2009-04-21 03:24:59 留言 |

14.
最近發現一個問題,不知版主能否幫我解決...
就是funp的推文按鈕有成功放入每篇文章頁面,位置是在右上角,
但是我發現如果在文章開頭使用超連結的圖片,而且寬度超過約560px,在funp按鈕完成導入後,第一張圖片就會消失了...
但如果沒有使用圖片超連結或是直式的圖片的話,第一張圖片則不會消失,
我在想這是不是超連結跟funp按鈕相沖呢?
如果版大方便的話可否教我要如何解決這個問題呢?
謝謝~

p.s我是使用版大提供的funp按鈕 js 檔
板主回覆:
 
我使用 FireFox3 及 IE8 查看都 OK 唷,
會發生問題的是 IE6... 可能要找個時間再除錯。
IE6 真的是很麻煩 XD
jschristine 於 2009-04-21 03:21:57 留言 |

13.
謝謝丫~
搞好久才搞好~~
只是不知道有沒成功~~
等等再找人幫我試試~~
板主回覆:
 
有看到您的網誌內有推文按鈕了,
應該是 OK 囉 ^_^

(好久之前有打回文,但可能沒送出吧 XD )
ya0410 於 2009-04-12 13:02:42 留言 |

12.
感謝版主的分享,按照你的解說流程已經可以在單篇文章顯示FunP的貼紙了^^
板主回覆:
 
恭喜唷 ^_^
 
anny0716 於 2009-04-04 02:19:30 留言 |

11.
dllee 兄有沒有加黑米按鈕的 javascript 呢 ? 最近考慮把黑米按鈕也加上去 不過找了一些文章好像沒有天空適用的
板主回覆:
 
黑米呀... 我還沒加入黑米說...

因為要測過才會有... 所以... 等我有時間申請黑米,加入黑米按鈕 JavaScript 時,
一定第一個通知您 ^__^
 
pclong 於 2009-01-12 23:14:43 留言 |

10.
確實放在文章開頭比尾巴好多了
我也來測試看看好了!
板主回覆:
 
如果有什麼問題,再告訴我囉 ^__^
 
eric0212 於 2009-01-10 15:38:28 留言 |

9.
昨晚突然發現在首頁看不到 funp 推文標簽了 不知道天空又改了什麼
不過內文的右上角倒還是看的到
板主回覆:
 
我猜應該是最近新增的讀者感受,天空還在調整中,
所以,有時會怪怪的。
不知道調整好了沒... 之前試用, 在 FF 調好位置,沒想到
用 IE 竟然是不能看 >_< 最後決定還是先不使用它了...
 
pclong 於 2008-12-20 11:04:57 留言 |

8.
感謝版主的教學分享

少了版主的分享,不知要研究到何年何月

沒這方面的天份 XD
板主回覆:

恭喜您, 您也成功加入 FunP 按鈕了 ^_^
也感謝您的成功加入後的回覆 ^^

看了一下您的 blog 網頁原始碼,原來您也與 RRobiKing 是相同的 CSS 架構,
得用新版才能見效,看來,似乎我的版型是比較少人用了 >_<

各位的回覆,就是我寫作的原動力,也希望天空 blog 好友們,
若套用最新版 addFunP_yam.js 還有問題的話,請留言,我會看一下您的
blog CSS 是否還有新的樣式,並視狀況持續修改它。
chien0130 於 2008-11-02 00:54:54 留言 |

7.
感謝版主的教學分享

少了版主的分享,不知要研究到何年何月

沒這方面的天份 XD
chien0130 於 2008-11-02 00:54:20 留言 |

6.
耶!!辛苦版主了!!
我已經確認程式執行okok囉!
文章中的連結也已做更新 
謝謝你的大力幫忙 (^_^)/
板主回覆:

感謝您的測試 ^_^

對了,看您的 blog 還沒加入「部落格軌道」,可以用以下的連結申請:

http://www.blog-orbit.com/refer.php?id=dllee

讓我成為您的介紹人 ^_^

加入「部落格軌道」可以讓您的部落格觀察名次提升,也有助於 BloggerAds
的廣告收益喔,因為 BloggerAds 會參考部落格觀察的名次。

可以用 google 看一下別人是如何玩「部落格軌道」
http://www.google.com.tw/search?hl=zh-TW&q=部落格軌道+教學
RRobiKing 於 2008-11-01 10:42:55 留言 |

5.
哇哈哈!
謝謝你客製化(算嗎XD)
雖然我”日記”還是無效果
但”網誌”已經OK了哦!
.
晚點再來寫推薦感謝文m(_ _)m
板主回覆:

日記沒效果呀.... 我再查查看...

天空部落的編輯器每編一次,在網誌內的原始碼就被它改一次,
每次就得全部重貼 java 原始碼,真的是很討厭耶...
之前去反應,在編輯器內不要把 pre TAG 內的資料重排,
但似乎只有我一個人有這樣的需要,沒人要理我 :'(
RRobiKing 於 2008-10-31 23:29:25 留言 |

4.
此篇為私密留言
RRobiKing 於 2008-10-31 20:29:23 留言 |

3.
此篇為私密留言
RRobiKing 於 2008-10-31 20:27:26 留言 |

2.
此篇為私密留言
RRobiKing 於 2008-10-31 15:37:40 留言 |

1.
增加一個自定欄位(或是加在現有的自定欄位內也可以)
請問是加在自由欄位還是其他的欄位
我一您的方式先下載附件,傳到空間,加入程式碼
但還是無法顯示

板主回覆:

後端管理介面
└→自定欄位
    下方 [加入] 自由欄位
在自由欄位內加入程式碼。
儲存後,記得重新產生 blog 頁面,就可以了。

您的 blog 網址是什麼?
我的程式碼只能用於 天空部落 的網誌,
如果不是需要改程式碼才能用。
kiki 於 2008-10-10 16:00:33 留言 |

發表你的留言 (字數限制 最多 2000 個中文字)
私密留言: 是 否
Name:





是 否
內容:
系統公告
部落格貼紙

My Blog History 台灣部落格列表
Add to Technorati Favorites Join My Community at MyBloglog!
Free PageRank Checker site statistics
MyHotPost 台灣部落格列表 dllee 統計 ping
藍眼觀注 BO樂區什麼都有... 現在就去看看!
 ◆另開新頁與我MSN◆
廣告(收益全數做公益)
搜尋天空網誌
搜尋:
個人檔案
個人圖檔
ID:dllee
暱稱:dllee
地區:桃園縣
  • 訂閱 |
    • 我要訂閱此部落格的
    • 日記
    • 網誌
    • 相簿
  • 好友 |
    • 好友功能
    • 觀看好友列表
    • 觀看人緣列表
  • 人氣 |
  • 簡介 

文章分類
  • 自製軟體 (10)
  •  程式語言 (18)
  • Ubuntu (4)
  •   程式語言.BCB (2)
  •   程式語言.C# (8)
  •  應用軟體 (41)
  •   MSN (8)
  •  網站架設 (51)
  •   部落軌道 (6)
  •  電腦硬體 (8)
  • 遊戲育樂 (14)
  • 未分類 (4)
  • 日常生活 (43)
  • 網路硬碟 (17)
部落格大串連
推薦好站不可錯過
  • 紫晶數位--電腦遊戲
  • miroko 網路硬碟
  • Delphi.Ktop 程式論壇
  • 文建會兒童文化館中文繪本
  • 兒童英文繪本
  • 為為的快打高手
  • 遊戲世界
  • 小遊戲天堂
  • 好玩遊戲網
  • 好玩遊戲天堂遊戲區
  • Web Game @Live
  • 網路電視線上直播
  • 無理雪兒~
  • 小雪狼 Graffiti
  • dllee在痞客邦
Google 廣告
dllee的感謝您的留言 ^_^
  • cctsai:
    如同婚姻專家 ...
  • trylife:
    多谢啦,已经搞定了
  • trylife:
    繁体字啊 昏倒; ...
  • megan2fantac:
    友情推薦...
  • cctsai:
    看得懂字 卻不了解...
  • 八折:
    下載完囉 真的有ㄟ~...
  • 網頁設計:
    收到親手寫的卡片應該超...
  • 八折:
    還是找不到= = ...
  • 八折:
    搞得很煩 ...
  • 小羽:
    我是羽~ 這種東西...
dllee的最近文章發表
  • 解決 Ubuntu...
  • 野兔家三萬踩踩樂獎品收...
  • 在 Windows...
  • 在 Windows...
  • 幫親友拯救...
  • 中秋節搶鍵盤最後機會
  • [開箱文]技嘉鍵盤滑鼠組入手
  • [轉貼]...
  • [轉貼]...
  • [轉貼] 瞎密?...
  • [推]88水災心連心!...
  • 天空部落之快速推文到B...
  • 是作公益?還是為名利?
  • 電腦調得愈快愈好嗎?
  • 天狗吃日、太陽變月亮
部落軌道 Blog Orbit
☞ 點我加入部落軌道 ☜
☞ 點我加入BO樂區 ☜

ShoutMix chat widget
Plurk.com
感謝您留下足跡
Blogger in the world
世界上誰在看dllee
MyBlogLog
人氣指數
當日人次:
累積人次:
RSS 訂閱
RSS2
ATOM
贊助商
CC授權
其它資訊
本部落所刊登之內容,皆由作者個人所提供,不代表 yam 天空 本身立場。
POWERED BY
POWERED BY 天空部落
會員登入│免費註冊