2005年05月12日

在FC2回應欄加上繪文字

在FC2回應欄加上繪文字終於試成功!!感謝日本的stroll::blog,發明這麼好用的東東,這隻程式是stroll::blog寫的,小倩在這裡用中文的方式介紹給大家,另外也感謝在vera在emmily家提供這個資訊

◎本教學來源(日本的stroll::blog):http://melrose.jugem.cc/?eid=199

  • 難易度: 難,建議具備HTML和CSS基礎者嘗試,建議在試本篇之前先試成功在FC2的文章發表時加上繪文字這篇
  • 可使用的BLOG: 可編輯完整的樣版HTML檔,且回應欄禁止使用HTML語法的BLOG(回應欄可用語法的BLOG可直接用貼圖語法插入繪文字圖片)
  • 注意事項: 回應數量太多時,繪文字的轉換時間也會變長,同樣的道理,繪文字如果登錄太多時也會影響到顯示速度,所以建議不要放太多繪文字上去(不要超過20個).
  • 準備繪文字: 準備繪文字圖片,並上傳到FC2的檔案庫內, 此部份請見之前的相關教學,請不要再在本篇問這類的問題
  • 請留意共有三段SCRIPT程式需要加入到樣版的HTML檔內,在修改前建議您先備份原本的樣版HTML檔
  • 樣版的HTML如何進入和修改請見:中文化教學這篇

*設置方法-指定繪文字的圖片路徑及名稱
程式一:(以下程式需修改畫像名和畫像URL):

<script type="text/javascript">
<!--
// コメントにカスタマイズ絵文字入力機能:画像設定
function getCommentEmojiList() {
var list = new Array();
// 修改以下設定:繪文字的名稱(画像名)和繪文字的URL(画像URL)設定
list[list.length] = new Array('画像名', '画像URL');
list[list.length] = new Array('画像名', '画像URL');
list[list.length] = new Array('画像名', '画像URL');
return list;
}

function getCustmizeEmojiAttribute() {
// 画像タグに含める属性値(alt属性以外)
var att = 'border="0" style="vertical-align:middle"';

// ***************** 設定ここまで *****************
att = (att != '') ? (' ' + att) : '';
return att;
}
// -->
</script>


修改範例:
// 繪文字的名稱和繪文字的URL設定範例(為了避免非漢字的中文轉換失敗,建議畫像名不要用中文字)
list[list.length] = new Array('f10', 'http://blog6.fc2.com/p/petlife/file/f10.gif');
list[list.length] = new Array('f09', 'http://blog6.fc2.com/p/petlife/file/f09.gif');
上述的語法修改好請放到樣版HTML檔的</head>的上一行


*回應欄繪文字的轉換-設置方法

程式二:(以下程式需修改(2)(3)):

<script type="text/javascript">
<!--
// コメントにカスタマイズ絵文字入力機能:画像変換
function changeCustmizeEmojiTag() {
// (1)回應欄全體的ID
var commentAreaIdName = '';
// (2)回應欄的HTML Tags
var commentAreaTag = 'div';
// (3)各回應欄的CLASS名
var commentBodyClassName = 'abc';

// ***************** 設定ここまで *****************
var list = getCommentEmojiList();
var att = getCustmizeEmojiAttribute();
var objComArea;
var classComArea;
var objComBody = new Array();
if (commentAreaIdName != '') {
objComArea = document.getElementById(commentAreaIdName);
if (!objComArea || !objComArea.innerHTML) return;
classComArea = objComArea.getElementsByTagName(commentAreaTag);
} else {
classComArea = document.getElementsByTagName('*');
}
for (var i = 0; i < classComArea.length; i++) {
if (classComArea[i].className == commentBodyClassName) objComBody[objComBody.length] = classComArea[i];
}
for (var i = 0; i < objComBody.length; i++) {
objComBody[i].innerHTML = getStringCustmizeEmojiTag(list, objComBody[i].innerHTML, att);
}
}

function getStringCustmizeEmojiTag(list, s, att) {
for (var i = 0; i < list.length; i++) {
s = s.split('[' + list[i][0] + ']').join('<img src="' + list[i][1] + '"' + att + ' alt="' + list[i][0] + '" />');
}
return s;
}
changeCustmizeEmojiTag();
// -->
</script>


需修改的部份:(2)回應欄的HTML Tags(3)各回應欄的CLASS名
搜尋樣版HTML裡的這個字<%comment_body>,並留意這句前後的語法

範例一(小熊系列樣版):<div class="entry_text"><%comment_body></div>
(2)回應欄的HTML Tags
var commentAreaTag = 'div';
(3)各回應欄的CLASS名
var commentBodyClassName = 'entry_text';

範例二(spring_flower):<p><%comment_body></p>,如果你的<%comment_body>前面的標籤並沒有設定class名,請自訂一個名字,如:abc
自訂一個class名,改成:
<p class=abc><%comment_body></p>
(2)回應欄的HTML Tags
var commentAreaTag = 'p';
(3)各回應欄的CLASS名
var commentBodyClassName = 'abc';

範例三(cafe):<div class="td"><%comment_body></div>
(2)回應欄的HTML Tags
var commentAreaTag = 'div';
(3)各回應欄的CLASS名
var commentBodyClassName = 'td';

本段程式的放置位置:加在<!--/comment-->的前一行...


*回應表單繪文字圖片的顯示-設置方法
程式三:(以下程式需修改回應欄位的指定):

<script type="text/javascript">
<!--
// コメントにカスタマイズ絵文字入力機能:画像リスト出力
function writeCustmizeEmojiTagList() {
// 本段程式需修改此:回應欄位的指定
var textarea = 'document.comform.leavecomment';

// ***************** 設定ここまで *****************
var list = getCommentEmojiList();
var att = getCustmizeEmojiAttribute();
for (var i = 0; i < list.length; i++) {
window.document.write('<a href="javascript:;" onClick="addCustmizeEmoji(' + textarea + ', \'' + list[i][0] + '\');"><img src="' + list[i][1] + '"' + att + ' alt="' + list[i][0] + '" /></a>');
}
}

// reference from jugem.jp (c)
function addCustmizeEmoji(obj, tag) {
var item = '[' + tag + ']';
if (document.selection) {
obj.focus();
sel = document.selection.createRange();
sel.text = item;
} else if (obj.selectionStart || obj.selectionStart == '0') {
var startPos = obj.selectionStart;
var endPos = obj.selectionEnd;
obj.value = obj.value.substring(0, startPos)
+ item + obj.value.substring(endPos, obj.value.length);
} else {
obj.value += item;
}
}
writeCustmizeEmojiTagList();
// -->
</script>

修改方式:
先搜尋樣版HTML檔的<form method="post" action="./">
將form加上name的屬性,修改後成為:<form name=comform method="post" action="./">

搜尋comment[body]這個字,查看裡面的id的值:
範例一:<textarea id="comment" cols="35" rows="8" name="comment[body]"></textarea><br>
id則為:comment
將上面的這一行改成
var textarea = 'document.comform.comment';

範例二:
<textarea id="leavecomment" cols="50" rows="8" name="comment[body]" tabindex="4"></textarea>
id則為:leavecomment
將上面程式的的這一行改成
var textarea = 'document.comform.leavecomment';

修改完成後將這段SCRIPT 放到剛才的回應框語法<textarea id="comment"...> 這段的前面,這樣顯示出來的繪文字會才會在回應內容輸入框的正上方.

◎如何知道是哪一段程式設錯:
  • 回應欄上面的表情符號圖片變成叉燒包-請檢查程式一的圖片路徑
  • 回應欄上面已經會出現表情符號的小圖了,但點了不會帶到回應框裡-程式三的var textarea = 'document.comform.leavecomment';設定錯誤.
  • 回應內容不會轉成表情符號-程式二的(1).(2).(3)設定錯誤,或SCRIPT放錯位置
  • 改樣版時,請重新將本語法COPY進新樣版,並重新確認,程式二和三需要修改的值

Posted by petlife at 樂多Roodo! │12:40 │回應(33)引用(0)FC2應用
工具:編輯本文
Ads by Roodo! 

引用URL

http://cgi.blog.roodo.com/trackback/178552
回應文章

TITLE:
SECRET: 0
PASS: fb469d7ef430b0baf0cab6c436e70375
測試一下...[f07][f10]
Posted by 小倩 at 2005年05月12日 03:43

TITLE:
SECRET: 0
PASS: 74be16979710d4c4e7c6647856088456
我怎麼弄都是叉燒包圖耶[f05]
確定圖檔位置沒錯
每個步驟也都重新注意過了還是一樣[f01]
Posted by Emily at 2005年05月12日 06:07

TITLE:
SECRET: 0
PASS: fb469d7ef430b0baf0cab6c436e70375
是回應欄上面的表情符號圖片出不來嗎?
可以貼一下這裡設的語法出來嗎?
list[list.length] = new Array('画像名', '画像URL');

Posted by 小倩 at 2005年05月12日 07:04

TITLE:
SECRET: 0
PASS: 74be16979710d4c4e7c6647856088456
不可以咧..小倩
我的回應欄上只會出現表情圖的名稱而已呢
而且表情圖也有框線[f10]

Posted by jovy at 2005年05月12日 08:04

TITLE:
SECRET: 0
PASS: 74be16979710d4c4e7c6647856088456
我找到原因啦!
原來我乎略了'畫像名' 這個東東[f05]
感謝妳囉[f03]
Posted by Emily at 2005年05月12日 09:06

TITLE:
SECRET: 0
PASS: fb469d7ef430b0baf0cab6c436e70375
恭喜Emily試成功了[f09]
Dear jovy
你程式二好像放錯地方了要放到<!--/comment-->的上一行(有個反斜線喔!)
Posted by 小倩 at 2005年05月12日 10:42

TITLE:
SECRET: 0
PASS: ec6a6536ca304edf844d1d248a4f08dc
好的,無論有艱難我一定要弄成功,哼哼!!!![f01]
Posted by 桌子 at 2005年05月12日 12:28

TITLE:
SECRET: 0
PASS: 74be16979710d4c4e7c6647856088456
哇~~這個看起來好難喔......
(我是電腦白癡喵)
不過看到小倩及其他網友們這麼用心地加上這些繪文字讓blog更生動
就覺得你們真是太棒了!!
一定要大大的拍手一番~~
(((((((((((拍))))))))))))))))))
太棒太棒了!!
^_______________^
[f10][f10][f10][f10][f10][f10]

Posted by 大隻喵 at 2005年05月12日 14:20

TITLE:
SECRET: 0
PASS: fb469d7ef430b0baf0cab6c436e70375
之前看日文說明在試時真的很辛苦,一下子按了圖不會出現在回應欄裡,一下子回應內容上的繪文字不會轉成圖...
不過後來研究出它的邏輯之後就簡單多了,所以現在應該不會太複雜,但可能不適合常改樣版的人吧![f09]
Posted by 小倩 at 2005年05月12日 15:20

TITLE:
SECRET: 0
PASS: ec6a6536ca304edf844d1d248a4f08dc
耶 [f10]v 成功了!!!!!

thank you 小倩
Posted by 桌子 at 2005年05月12日 15:32

TITLE:
SECRET: 0
PASS: 74be16979710d4c4e7c6647856088456
那個paipo reader真的很棒耶,多謝処ン的好介紹!!
Posted by Lady Ruffle at 2005年05月13日 03:40

TITLE:
SECRET: 0
PASS: 74be16979710d4c4e7c6647856088456
是成功了
可是為什么會有框線呀
Posted by jovy at 2005年05月13日 03:42

TITLE:
SECRET: 0
PASS: fb469d7ef430b0baf0cab6c436e70375
Dear jovy :
是你的CSS設定問題,
把兩個CSS裡的border:1px改成border:0px
.entry_text img
.pay img
Dear Lady Ruffle :
我也是正好發現,放上去試試看,我還沒在中文的BLOG測,如果中文的BLOG也能支援的話,可能會大力的推薦給大家,但目前測加入FC2的BLOG就會輪撥大家的標題.
Posted by 小倩 at 2005年05月13日 07:47

TITLE:
SECRET: 0
PASS: 74be16979710d4c4e7c6647856088456
太深奧了,最近小忙,沒空研究。[f01]
不過,有這個還真是可愛。[f09]
Posted by scarlet at 2005年05月13日 11:46

TITLE:
SECRET: 0
PASS: ec6a6536ca304edf844d1d248a4f08dc
小倩,那個paipo reader我也跟著你的腳步註冊了一個,的確很好用,也嘗試抓天空部落的 RSS也成功了,不過怎麼我試來試去只能設三個 RSS 網址,加第四個時不管怎樣也加不進去,到底是什麼理由[f01]
Posted by 桌子 at 2005年05月13日 15:18

TITLE:
SECRET: 0
PASS: fb469d7ef430b0baf0cab6c436e70375
Dear scarlet
等你有空時再來研究吧!以你的功力一定可以馬上成功的。
Dear 桌子
不會呀!我加入七個網址了,有可能是你第四個網址的RSS有問題。
如果輸入BLOG的網址時,它抓不到正確的RSS的話,你可以直接輸入RSS的位置,像目光的我輸入0.92版的才成功.
Posted by 小倩 at 2005年05月13日 16:37

TITLE: scarlet
SECRET: 0
PASS: 74be16979710d4c4e7c6647856088456
被你說中了[f07]!
我還真的一次就成功了![f06]

小倩真是太了解我了。[f09]
Posted by scarlet at 2005年05月14日 03:02

TITLE:
SECRET: 0
PASS: d9b1d7db4cd6e70935368a1efb10e377
不過,這個真是太勞師動重了!

我看以後可能不太敢換版面![f10]
Posted by scarlet at 2005年05月14日 03:05

TITLE:
SECRET: 0
PASS: fb469d7ef430b0baf0cab6c436e70375
原網站寫的比較複雜,而且不是針對FC2來寫的,所以之前在研究哪一段加在哪時花了一些時間,還參考了另一間有加回應繪文字的FC2的日本BLOG的原始碼才試成功,但了解規則後還滿簡單的,只是每換一次版面就要加一次...而且還要對對看CSS的參數有沒有改,這也是滿累的...

Posted by 小倩 at 2005年05月14日 05:09

TITLE:
SECRET: 0
PASS: 74be16979710d4c4e7c6647856088456
實在挺活該的。[f01]
被我亂改,又不能用了[f04]
Posted by scarlet at 2005年05月14日 05:27

TITLE:
SECRET: 0
PASS: 74be16979710d4c4e7c6647856088456
注意Form的name有沒有設,以及程式二的那幾個值有沒有修改
Posted by 小倩 at 2005年05月14日 05:35

TITLE:
SECRET: 0
PASS: 74be16979710d4c4e7c6647856088456
// (1)回應欄全體的ID
這是指什麼?

Posted by scarlet at 2005年05月14日 07:27

TITLE:
SECRET: 0
PASS: fb469d7ef430b0baf0cab6c436e70375
(1)回應欄全體的ID
這個可以不用輸入,寫了反而容易錯,他是用CSS繼承的概念.
我幫你看了一下這句錯了,id="comment"就可以了
<textarea id="var textarea = 'document.comform.comment'" cols="40" rows="8" name="comment[body]"></textarea>
另外你<%comment_body>前後的語法是什麼?目前設的怪怪的...
Posted by 小倩 at 2005年05月14日 10:08

TITLE:
SECRET: 0
PASS: 74be16979710d4c4e7c6647856088456
<br>
<%comment_body>
<div class="comment_state">

Posted by scarlet at 2005年05月14日 10:47

TITLE:
SECRET: 0
PASS: fb469d7ef430b0baf0cab6c436e70375
<br>
<%comment_body>
<div class="comment_state">
改成下面這樣試試看
<br>
<span class=abc><%comment_body></span>
<div class="comment_state">

然後(1).(2).(3)改成這樣
// (1)回應欄全體的ID
var commentAreaIdName = '';
// (2)回應欄的HTML Tags
var commentAreaTag = 'span';
// (3)各回應欄的CLASS名
var commentBodyClassName = 'abc';
Posted by 小倩 at 2005年05月14日 11:32

TITLE:
SECRET: 0
PASS: d9b1d7db4cd6e70935368a1efb10e377
好唄!
自已來招供到底是怎麼一回事。[f09]

本來一次就設好了,結果東改西改的,
有問題。後來找記事本的檔案來貼時,
卻一堆錯誤,
除了程式二的地方之外,
自已把程式三要改的東西貼錯了。[f01]
果然不適合愛改版的人用。(指)

感謝小倩的幫忙。[f10]
Posted by scarlet at 2005年05月14日 12:08

TITLE:
SECRET: 0
PASS: 74be16979710d4c4e7c6647856088456
[f02]呵呵
這個一看就知道小弟我玩不起....
好像天書哦[f09]
Posted by 約克夏飼主 at 2005年05月16日 23:46

TITLE:
SECRET: 0
PASS: fb469d7ef430b0baf0cab6c436e70375
還好啦~但真的不建議常換樣版的人用
Posted by 小倩 at 2005年05月17日 08:11

TITLE:
SECRET: 0
PASS: 74be16979710d4c4e7c6647856088456
我終於設好了,謝謝小倩的詳細解說。
Posted by 流光 at 2005年05月29日 08:42

TITLE:
SECRET: 0
PASS: fb469d7ef430b0baf0cab6c436e70375
不客氣!!不過程式二那裡的語法真的不好找...所以你後來用abc的那個方法算是最省事的.
Posted by 小倩 at 2005年05月29日 11:15

TITLE:
SECRET: 0
PASS: 74be16979710d4c4e7c6647856088456
嘻嘻!!我也成功囉=v=~感動!!
謝謝小倩唷[f10](親一個)
Posted by Raining at 2005年06月8日 17:35

TITLE:
SECRET: 0
PASS: fb469d7ef430b0baf0cab6c436e70375
恭喜喔!!不過自從加了這些有的沒的東西後,我就很懶得再換樣版了...

PING:
TITLE: Summary ?
BLOG NAME: Log of Distractions
最近修改版面的心得整裡 ?1) Free Photographs : ( 高解析度的照片來源整裡 )Where To Find Great Free Photographs ...我使用的 : morgueFile & Image * After裡面介紹的網站大部処ヘ都還沒障o過:P2) コメントにカスタマイズ絵文字入力機能 from stroll::blog-> 小倩的教學



Posted by 小倩 at 2005年06月9日 01:34
Posted by fioricet prescription at 2006年11月27日 04:03