ppBlogでも絵文字機能を使いたいっっ!

久しぶりのppBlogカテゴリでの投稿です。ていうかお待たせしてスミマセンでした。

ことの始まりはあゆさんからのリクエストでした。じゅげむでコメント欄に絵文字を使いたい!と。そのときに教えてもらったのがこちらのサイト。stroll:blogさん。色々な興味深いスクリプトを提供されています。で,参考に…というか利用させていただいたのがこちらのエントリ。コメントにカスタマイズ絵文字入力機能

私はじゅげむユーザではないので良く分からないのですが,
HTMLが編集可能なblogであれば、すべてのblogで設置可能なはずです。
とのお言葉を頼みの綱にして設置にチャレンジ!…と思ったら先日のじゅげむメンテナンス一泊二日旅行。むー。気になる。早く挑戦したいともんもんとしながら待っておりましたよ。

なんか前フリが長いですね。さっさと設置方法だけ書け!という声が聞こえてきそうなのでさっさと書きます。

もっと読む»
追記:なんだかOperaではバージョンによってうまく表示されたりされなかったりしています。Google It!の機能を使うとそこで表示が止まってしまうことは確認しましたが,回避作は今のところ思いつきません。また,MacのSafariではコメントの画像が表示されないとの未確認情報もあります。私はMacを所有していないので確認のしようがありません。もしよろしければおかしな画面のスクリーンショットを送っていただきたく。お願いします。>>有志の方々。おかげさまで解決しました。ありがとうございました。では早速。まずは絵文字を使いたいわけですから画像がないと始まらない訳ですよ。で,naoKはau使いなのでstroll:blogさんのご紹介の中からau風の絵文字を配布されている☆SWEETS☆さんにお邪魔していただいてまいりました。ていうかこれ,まんまauの絵文字なんですが大丈夫なんでしょうか

404 File Not Found

いよいよスクリプトの設置になるのですが,stroll:blogさんは,恐らく皆がソースを見て分かりやすいようにスクリプトをテンプレート内に記述されています。確かにサイトのソースを見てみると非常に見易い。ただ,詳しい反面それが煩わしいと感じることもあるわけで。私は出来ればシンプルスマートにできればそれに越したことはない主義なので,スクリプトを外部ファイルに書くことにしました。

ppBlogではjavascriptの定義ファイルがあります。script.jsという非常に分かりやすいファイルがそれです。今回もそれに追加してゆきます。

まず,画像設定スクリプト。最初の
<script type="text/javascript">
<!--
と,最後の
// -->
</script>
を除いた部分をscript.jsの最後の部分に追加します。
// コメントにカスタマイズ絵文字入力機能:画像設定
function getCommentEmojiList() {
var list = new Array();
// 画像名、画像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;
}
↑この部分です。それから画像名,画像URLをそれぞれ設定されてください。私は画像ファイルをauという名前のフォルダに入れ,それをImagesフォルダの中に放り込みましたので,例えば
list[list.length/] = new Array('ニコッ', 'Images/au/au_001.gif');
という感じにしてゆきます。必要なだけ画像の設定をしたら次に進みますよ。画像出力スクリプト。これも先ほどの要領でscript.jsに追加します。ただし今回は初めの2行と最後の3行を除きます。
// コメントにカスタマイズ絵文字入力機能:画像リスト出力
function writeCustmizeEmojiTagList() {
// コメントを入力するテキストエリアを指定
var textarea = 'document.comform.c_com';
// ***************** 設定ここまで *****************
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;
}
}
↑ここまで。ここでの設定はコメントを入力するテキストエリアの指定です。formタグのnameとtextareaタグのnameを指定します。デフォルトではformタグが"comform",textareaタグが"description"となっています。ppBlogではmodulesフォルダ内のcomment.inc.phpがその働きをしています。なのでこのファイルを開いてみると,20行目付近にこんな一行があるかと。
<form method="post" action="index.php">
これにはnameの指定がありませんね。なので勝手につけてしまいます。何でもいいのですがデフォルトの指定にならって"comform"としてみます。
<form name="comform" method="post" action="index.php">
こんな感じで。更にtextareaタグのnameですが,35行目付近に
<textarea name="c_com" id="c_com" cols="70" rows="5" style="width:97%;background:#f7f7f7;"></textarea><br />
という記述があると思います。コレには最初から"c_com"というname指定があるのでscript.jsに追加した部分の設定をデフォルトのdescriptionではなくc_comと書き換えます。
// コメントを入力するテキストエリアを指定
var textarea = 'document.comform.c_com';
このように。comment.inc.phpに戻って,今度は絵文字を表示させるスクリプトを一行書きます。
<script type="text/javascript">writeCustmizeEmojiTagList();</script>
これを書いたところに絵文字が現れるのですが,コメントを記入する部分の上に表示させるのが自然だと思うので,35行目付近の
<div class="content">
という部分の上の行に入れましょう。これでコメント欄に絵文字が表示されて,クリックすると
[ニコッ]
のような表示が入ると思います。

…ここまで,大丈夫でしょうか?絵文字が表示されない,またはクリックしても反応がない場合はどこか間違っています。もう一度見直してみましょう。

さて,最後にこの[ニコッ]を絵文字に変える部分です。しつこくscript.jsに追加していきましょう。今回も最初2行,最後3行は除いてコピペです。
// コメントにカスタマイズ絵文字入力機能:画像変換
function changeCustmizeEmojiTag() {
// (1)コメント全体のタグの id 属性
var commentAreaIdName = '';
// (2)コメント全体のタグ名
var commentAreaTag = '';
// (3)各コメントの class 属性
var commentBodyClassName = 'body';
// ***************** 設定ここまで *****************
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;
}
今回追加した部分の設定項目について,1,2番については'',3番は'body'としてください。そして,お使いのtemplate.htmlを開き,
%_body_%
の下の行に次のスクリプトを追加してください。
<script type="text/javascript">changeCustmizeEmojiTag();</script>
basic以外のテンプレートを利用されている方はtemplate.htmlの%_body_%を囲んでいるdivタグにclass="body"と追加してください。テンプレートsimple,3paneともに
<div id="column-center" class="body">
↑こんな感じで。今度はutils.phpをいじります。10/16追記:絵文字変換スクリプトの位置を変えました。template.htmlに記述した方は該当スクリプトを削除してください。utils.phpを"return $DIVISION['header'/]"で検索して2番目に
return $DIVISION['body'/] = $body.$_com.NL.$header.NL.'<p class="center">'.$back.NL.' '.$main.'</p>'.NL;
という箇所があると思います。これの<p class="center">の前にスクリプトを挿入します。
return $DIVISION['body'/] = $body.$_com.NL.$header.'<script type="text/javascript">changeCustmizeEmojiTag();</script>'.NL.'<p class="center">'.$back.NL.' '.$main.'</p>'.NL;
↑こんな感じ。10/9 16:10早くも注記:早速訂正します。ダブルクォーテーションをシングルクォーテーションにウンタラカンタラと見た記憶がある方はこの部分が変更になっていますのでご注意ください。utils.phpを"LinkMe"で検索してヒットした行(2箇所あります)の最初のほうのみ修正します。,
$link = "|<a href=\"#\" title=\"$ttl\" onclick='return ToClipBoard(\"\",\"$url?UID=$id\")'>LinkMe</a>n ";
↑これのonclick〜以下を次のように修正します。
$link = "|<a href=\"#\" title=\"$ttl\"$copy>LinkMe</a>n ";
onclick〜以下を$copyに変更

ふぅ。これでコメント欄での絵文字使用が可能になったはず,であります。がしかし,がしかし。naoK,これを記事にも表示できるようにしてみました。しかしながら,それには更にファイルをいじらなくてはならないので,記事を分けて書きますね。とりあえず今回はここまで。記事本文に絵文字を表示させたい方はこちらをご覧ください。

はてなブックマーク delicious livedoorクリップ Buzzurl

— posted by naoK at 12:29   [ ppBlog ] Comment [40]  TrackBack [1]

思えば一年前の今日,こんなこと書いてました。
  • と思ったけど,まだblog始めてませんでした…
  • [ 1年前スクリプト by naoK ]
同じカテゴリからランダムピックアップ

この記事に対するコメント・トラックバック [41件]

Up1. りえっぺ — 2004/10/09@14:38:32

やってるうちにわかんなくなっちっただー・・・

2. あこ — 2004/10/09@15:07:28

関係あるかどうかわかりませんが、
今日naoKさんのブログに飛んできたら
スクリプトエラーが出ました。
私側の問題かもだけど、
今までは大丈夫だったので
一応報告しときまーす。

Owner Comment naoK  2004/10/09@15:10:43

> りえっぺさん
やっぱりわかりにくいですかねぇ…いろんなファイルに手を入れますから。ていうか私の説明が悪すぎるのです,きっとorz

> あこさん
報告ありがとうございます。ホントダー。何だこのエラーは。調べなくちゃ…

4. ブログ?┃∀・)ニヤニヤ — 2004/10/09@15:39:51

homepageてすとちゃんです。どうやって組み込もうか・・・
続き »


5. りえっぺ — 2004/10/09@16:47:45

駄目だー
後の方法
Operaじゃエラーかかる・・・

前の方法
IEだとリンクできない・・・

UpOwner Comment naoK  2004/10/09@16:53:33

> りえっぺさん
やっぱり同じビルドを入れて検証してみないとダメみたいですね。
とりあえずはエラーの出ない前の方法でしのいでください。スミマセン。

7. りえっぺ — 2004/10/09@17:15:04

Version7.60
Build 7141
なら大ジョブでした。はぁと

8. りえっぺ — 2004/10/09@17:16:23

http://snapshot.opera.com/windows/w760p1.html
これだすね。
7.54とか7.53はエラーかかるぅーうっ

Owner Comment naoK  2004/10/09@17:18:23

おー,スナップショット版ではもう7.60なんてのが出ているのですね。
しかしそれより前のバージョンだとエラーが出るってことは,Operaの問題なのかな…
しかしなぜうちのOperaはエラーが出ないのだ。英語版だからなのかな?

10. りえっぺ — 2004/10/09@17:28:16

んー
バージョンによるかもえーん
Operaはバージョンによって全然違うし。

UpOwner Comment naoK  2004/10/09@17:33:26

そうなると厄介だなぁ。どうしよう…

12. りえっぺ — 2004/10/09@17:41:36

早く7.60が正式版(日本語版)になればいいんですけどね。
FireFoxでは大ジョブだし。
まぁOpera人口のがFireFoxより少ないから・・・
注意書きさえしておけばおkかも〜

13. りえっぺ — 2004/10/09@17:53:04

MacのSafariではコメントの絵文字表示されない模様。。。汗
京セラのエッヂ(Opera7.0)では大ジョブみたいでつ。

Owner Comment naoK  2004/10/09@17:53:10

りえっぺさん,日本語版をインストールしたらこちらでもエラー発生しましたあちゃぁ

でも,今までとは違うところでエラーが出ているような…"そういえばこうさぎが"のエントリで止まってませんか?

それなら何とかなるかも…

15. りえっぺ — 2004/10/09@17:56:42

ぬぉうっ
ニアミス。
あたしOpera7.60にバージョンアップしちゃったからなー...えーん

UpOwner Comment naoK  2004/10/09@17:58:33

Safali,ダメですかぁ。Macは確認しようがないからなぁ…

しかしH",恐るべし…

17. りえっぺ — 2004/10/09@18:03:24

もしかしてOpera日本語版7.23とかなら大ジョブだったりして。。。ベーッ

18. りえっぺ — 2004/10/09@18:18:23

Opera日本語版7.23おkでしたニコッ

19. りえっぺ — 2004/10/09@18:22:01

が、7.23だと続きを読むがダメでつうっ

Owner Comment naoK  2004/10/09@18:23:30

のわー,ますます不思議だー。
しかし困ったな…

Up21. あゆ — 2004/10/10@00:57:46

な、なんか私が明日の運動会準備に追われている間、すごいことになってるぅ・・・うっ
責任感じちゃうですグスン。あたしがこんな事やって♪なんておねだりしなければ・・・ドクロ
ちなみに、Sleipnirでは、キレイに見えてますよ!

Owner Comment naoK  2004/10/10@01:11:20

> あゆさん
いやぁ,ちと苦労しましたが,こんな感じで設置できます。

運動会終わったら挑戦してみてくださーいはぁと

23. りえっぺ — 2004/10/10@03:34:09

さらに検証
Opera
バージョン7.54
Build 3865
なら大ジョブですた。
でもあたしの所は大ジョブだけどnaoKちゃんの所エラーかかってる・・・汗

Owner Comment naoK  2004/10/10@11:57:10

えぇぇー汗
りえっぺさん,もしよければうちのエラーの画面,もう一度キャプチャしていただけませんか?
メールでも構いませんので。

よろしくお願いします。

25. りえっぺ — 2004/10/10@14:38:38

http://r32.s1.xrea.com/data/1.jpg
遅くなってゴメソ。
さっきもう一つのPCの
Opera(英語バージョンのはず)
バージョン7.54
Build 3865
XPs1でプリントスクリーンしてきまちた。
うちのpageはなぜかそのまま表示できるしコメントも出来る。
なぜだーー。不思議現象。

UpOwner Comment naoK  2004/10/10@14:41:28

うわぁ,またここかぁ。
ええと,UAがIE6.0とか,そういうオチじゃないですよねぇ…そんなことないですよねぇ…あるわけないよなぁ…

27. りえっぺ — 2004/10/10@14:49:57

UAはIE6.0にしてるよ。(Operaのね)
Operaで見てみようか?

28. りえっぺ — 2004/10/10@14:52:17

おお。
Operaで認識させたらおkでした。
目から鱗。
でもほとんどの人IE6.0にしてるよなー。。。たぶん。

Owner Comment naoK  2004/10/10@14:53:35

あー,やっぱりそうなんだ…
実はコレ,UA判定をしてます。私でなくppBlogのデフォルトで。どうもパーマリンクをクリップボードに送るjavascriptのところで引っかかっていたので,UAがIEの場合だけこのjavascriptを有効にするようにしているのです。苦し紛れの逃げ技なのですが。

Operaって,デフォルトのUA指定はIEなんでしょうか?だと困るなぁ…何か考えないと。

30. りえっぺ — 2004/10/10@14:58:39

そそ。
デフォルトがIE6.0なんだよ。
あと、IE6.0にしておかないと
企業のページキックされやすいからこれにしてる。
でも、あたしのページはUAがIE6.0でも大ジョブだたーよ。
なんでじゃろ〜うっ

UpOwner Comment naoK  2004/10/10@15:01:27

そうかぁ。確かにりえっぺさんのところ,UAがIE6.0でも大丈夫ですね。なんなのだ,一体…

引き続き調査いたします!

32. りえっぺ — 2004/10/10@15:04:08

Opera7.53日本語版でも
UAをOperaにするとおkですた。
UAがIE6.0ではダメだー

Owner Comment naoK  2004/10/10@15:06:53

色々ありがとうございます,りえっぺさん。
で,いまりえっぺさんとこのソースを確認したんですが,OperaのUAがIEでもきちんとIEじゃない判定をされているみたいです(謎

うわーなんなのだー。

34. りえっぺ — 2004/10/10@15:14:11

こうなりゃトコトンって事で
新パソコンXP pro SP2
Opera
バージョン7.54
Build3865
入れました。はぁと
やぱりUA operaだと大ジョブですが
IE6.0だとダメポ。えーん
うちのページはどちらでもおk−でつ。うっ

Owner Comment naoK  2004/10/10@15:23:27

いやぁ,ほんとにすいませんりえっぺさん(ペコペコ
もう一度ソースを見直してみます。

Up36. りえっぺ — 2004/10/10@15:30:41

ガガーンえーん
Safariだとうちのページコメントを押すボタンがないそうでつ。。。ァゥゥ汗

Owner Comment naoK  2004/10/10@15:36:03

実はSafariのほうが根は深い問題かも。
これはぼーちゃんからも情報を頂いているのですが,Operaとはまったく別のところで表示がおかしくなっているので…

38. りえっぺ — 2004/10/10@15:39:43

ァゥゥーえーん
むじかしいでつねー。。。涙

Owner Comment naoK  2004/10/10@15:42:03

困ったなぁ。

Owner Comment naoK  2004/10/10@15:45:16

素のppBlog1.3.5だとOperaでも大丈夫かも。
てことはうちだけの問題だ…汗

よーし,この際だからバージョンアップしてしまうか。そうすれば後の問題はSafariだけだ。

Up41. りえっぺ — 2004/10/10@15:58:50

あたし1.33だよー
1.35入れてエラーかかったので
すぐに元のバージョンのファイルに戻したの。。。

あたしはコメントの所の絵文字スクリプト外してしまった。。。
SafariでSENDボタンが出なくなるらしーので。。。

本文は絵文字入ってても大ジョブみたいよー@Safari

この記事に対する TrackBack URL:

設定によりTB元のページに、こちらの記事への言及(この記事へのリンク)がなければ、TB受付不可となりますのであらかじめご了承下さい。

コメントをどうぞ。 名前(ペンネーム)と画像認証のひらがな4文字は必須で、ウェブサイトURLはオプションです。

ウェブサイト (U):

タグは使えません。http://・・・ は自動的にリンク表示となります

ニコッ ムカッ えーん あちゃぁ ベーッ ラブリー ムンク 汗 ネムー 風邪 グスン はぁと zzz うっ いかり ダッシュ グッ ドクロ ケーキ

     

[Top ↑]