記事一覧

CSSをRSSに適用する

■1カラムスキンに使うプルダウンメニューの方法を求めて
色々なCSS解説サイトやスクリプト配布サイトを放浪していました。
テンプレートとして配布しても大丈夫なものをきちんと
探せたので、もう少しかかりますが配布に取り掛かろうとおもいます。

ちなみに「こんなプルダウンメニューは?」と教えていただいた
ものがあったのですが、それは書籍付録のスクリプトを利用しており、
出版元に問い合わせたところ「再配布になるから止めてね」と
お返事をいただいたので、使用はとりやめました。
せっかく情報をいただいたのに申し訳ありません。
お心遣い、ありがとうございました!

■で、配布可能そうなCSSプルダウンメニューを紹介している
WEB公房きくちゃん」さんより、
RSSを人間にも見れる状態にするCSSのご紹介。

実はもともとこれ、Web Diary Pro ver3用に作られていたらしく、
そのままver4にも利用できます。
CSSを適用するとどうなるか、実際にこのサイトのRSSでやって
おりますので「RSS」をクリックしてみてくださいませ。

■ Web Diary Pro4 でのやり方 ■

1.「webliberty>RSS.pm」を開き、45行目あたりにある
  XMLの記述の2行目に次のように書き加える。

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="スタイルシートのアドレス" type="text/css"?>

2.「weblibery>App>RSS.pm」を開き、203行目あたりにある
  XML宣言の直下に、上記と同じようになるようコードを記述。

 ※スタイルシートのアドレスは、好きな場所に置いて決めて下さい。
  絶対値パスでやると一番問題ないかと。

3.スタイルシートを書く。
  これは参照ページそのままのものを、最初の行だけ
 「@charset 'utf-8';」に書き換えます。

4.スタイルシートと書き換えたRSS.pmをそれぞれアップロード。

ちなみにこれはRSSを押した人がびっくりしないようにしたい人や、
ソース丸見えのRSSが格好悪いと感じる人以外には
あまり意味のないカスタマイズですので、無理にやる必要性はありません。

Web Diary ProでRSSが配信されない場合

■実は、このサイトのRSSは今まで配信できない状態でした。
まさかーと思って自分のリーダーに読み込もうとしたところ、
ものの見事に読み込んでくれず、こりゃ大変だとサポート掲示板のログを
あさってきました。すると同様の質問が多く過去にも出ていました。

どうも無料レンタルサーバーによくある
自動広告挿入スクリプトがXMLにも入れられてしまうため、
一番最初に空白の行ができてしまい、うまく配信されない状態に
なってしまうようです。このサーバーも無料レンタルなので、
ほっとくと最初の行に広告タグをいられれてしまいます。

で、この問題はWeb Diary Pro側では対処できません。
サーバー側の仕様なのですから仕方ないわけです。
同様の問題にお嘆きの方は、自身のレンタルサーバーの質問掲示板や
「広告を非表示にするには?」などのQ&Aを参照なさると
解決策が見つかると思われます。

■ちなみに無料Xreaの場合、「x」フォルダ内にWDPを設置するか
広告非表示用の.htaccessをWDPと同じフォルダ内に入れるかすれば
この問題は回避できます。(このサイトでは.htaccessを使用)
どちらにせよちゃんと手動で広告を入れないといけないわけですが。

参考≫
・XREA SUPPORT BOARD - rss表示について
・はやわかり XREA - .htaccess を使って広告自動挿入を無効にする

■オマケ。RSSって何ぞや?という方にも分かりやすい解説ページ付きで
簡単に主要リーダーへの登録ボタンも作ってくれるサイト。
・RSS アイコン 2.0 - 説明ページつきRSSアイコンを無料作成
ナビゲーション下部、Operaバナーと一緒に貼ってありますので
興味のある方はどうぞ。

WebDiaryProで「記事の内容」の一部を隠す

JUGEMカスタマイズ講座さんからまたひとつ、
「記事の内容」の一部を隠す』の導入方法。
これを導入すると、<hr />と書き込んだところから下が
隠し記事として折りたたまれます。
「続きを見る」の簡易版やネタバレ用として使えるかも。

ネタバレボタン導入が面倒だったという方にも
簡単にできるカスタマイズです。

■「記事の内容」の一部を隠す■

1.「skin>diary.html」を開き、${ARTICLE_TEXT}に
  ついているdivのclass属性を確認する。

<div class="text">
<!--ARTICLE_ICON_START--><p>${ARTICLE_ICON}</p><!--ARTICLE_ICON_END-->
${ARTICLE_TEXT}
</div>

2.「skin>common.css」を開き、最後のほうでもいいので
  次のスタイルを記入する。
  このとき、(1)で調べたclass属性名を使います。

.text hr {
display: none;
}

3.「skin>footer.html」を開き、
  <!--SKIN_FOOTER_START-->~<!--SKIN_FOOTER_END-->間の
  好きなところに「記事の一部を隠す」のスクリプトを入れる。

4.上記スクリプトの最後の部分を(1)で確認したclass名に書き換える。

gTextVisible = '↓[続きを表示]'; /* 「続き」を表示するためリンク */
gTextHidden = '↑[続きを隠す]'; /* 「続き」を隠すためのリンク */
gTextPosition = 0; /* 「続きを隠す」を表示する位置 0:「続き]の前 1:「続き」の後ろ 2:両方 */
gTextSequel = new Array();
initSequel('div','text');

スキンによってclass名が違う場合は、
各自それにあわせて太文字部分を書き換えてください。
設定方法は元記事にならいます。

WebDiaryProのコメント等をツリー化する

前もって宣言していたとおり、JUGEMカスタマイズ講座さんの
ツリー化スクリプトver2」をWDPに導入するための解説です。
これを導入すると、⇒のナビゲーションのようにコメントやエントリーが
日付ごとや記事ごとにまとめられます。

ちょっとした前置きがあります。
ご了承のうえでスクリプトの追記を行ってください。

●JUGEMと同じ記述式にするため、「年」「時間・分」を
 ナビゲーションからばっさり切り捨てます。
 それが嫌だという方までは独自フォローできません。
●ナビゲーションに「new!」の表記がでるようにしている場合、
 それもばっさり切り捨てます……。
 保持する良い方法が見つかりませんでした。すいません。
●<dl><dt>を<ul><li>に書き換えます。
 CSSでリストマークを変えたり画像を使うデザインにしている場合、
 デザインが変わってしまいますので各自調節をお願いします。
●ツリー化を行うのは「最新エントリー」「最新コメント」
 「最新トラックバック」の3つです。リンクやカテゴリは
 元々WDPはツリーになっているので必要ありません。

それでは解説です。自分流ですので他にもやり方はあるかもしれません。

■ツリー化スクリプトver2を導入する■

1.「最新エントリー」部分(<!--SKIN_LIST_HEAD_START-->~<!--SKIN_LIST_FOOT_END-->)を以下のように書き換える

<!--SKIN_LIST_HEAD_START-->
<h2>最新エントリー</h2>
<div class="block" id="newentrylist">
<ul>
<!--SKIN_LIST_HEAD_END-->

<!--SKIN_LIST_START-->
<li><a href="${ARTICLE_URL}">${ARTICLE_SUBJ}</a> (${ARTICLE_MONTH}/${ARTICLE_DAY})</li>
<!--SKIN_LIST_END-->

<!--SKIN_LIST_FOOT_START-->
</ul>
</div>
<!--SKIN_LIST_FOOT_END-->

  

2.「最新コメント」部分(<!--SKIN_CMTLIST_HEAD_START-->~<!--SKIN_CMTLIST_FOOT_END-->)を以下のように書き換える

<!--SKIN_CMTLIST_HEAD_START-->
<h2>最新コメント</h2>
<div class="block" id="commentlist">
<ul>
<!--SKIN_CMTLIST_HEAD_END-->

<!--SKIN_CMTLIST_START-->
<li>${ARTICLE_SUBJ}<br />
<a href="${INFO_PATH}?mode=comment&amp;no=${ARTICLE_PNO}#comment">${ARTICLE_NAME} (${ARTICLE_MONTH}/${ARTICLE_DAY})</a></li>
<!--SKIN_CMTLIST_END-->

<!--SKIN_CMTLIST_FOOT_START-->
</ul>
</div>
<!--SKIN_CMTLIST_FOOT_END-->

3.「最新トラックバック」部分(<!--SKIN_TBLIST_HEAD_START-->~<!--SKIN_TBLIST_FOOT_END-->)を以下のように書き換える

<!--SKIN_TBLIST_HEAD_START-->
<h2>最新トラックバック</h2>
<div class="block" id="tblist">
<ul>
<!--SKIN_TBLIST_HEAD_END-->

<!--SKIN_TBLIST_START-->
<li>${TRACKBACK_TITLE}<br />
<a href="${INFO_PATH}?mode=trackback&amp;no=${TRACKBACK_PNO}#trackback">${TRACKBACK_BLOG} (${TRACKBACK_MONTH}/${TRACKBACK_DAY})</a></li>
<!--SKIN_TBLIST_END-->

<!--SKIN_TBLIST_FOOT_START-->
</ul>
</div>
<!--SKIN_TBLIST_FOOT_END-->

※改造のポイント
 ・<div id="○○"> <ul><li>~</li><ul> </div>のように、idをふったdivで
  リストタグを囲む。
 ・リスト内容のリンクタグ<a>~</a>の範囲を変えないこと。
 ・時間表記は日付のみにすること。
 ・スキンによっては違いがあるかもしれませんが、
  上の3つを最低限守っていればスクリプトが働くようです。
 ・<h2>~<h2>の間は自由に書き換えてもOK。

4.「skin>footer.html」の</body>直前にツリー化スクリプトを記入する。
  これはJUGEMカスタマイズ講座さんにあるそのままでOK。

※2008/12/26 追記
 JUGEMカスタマイズ講座さんが行方不明のため、暫定的にスクリプトを
 こちらにも記述しておきます。著作元はJUGEMカスタマイズ講座さんに
 あり、ご指摘等があった場合削除いたします。

<script type="text/javascript">
<!--
function makeTreeElements (idName,objList) {
if (!objList.innerHTML) return;
var objLink = objList.getElementsByTagName('a')[0];
var linkUrl = objLink.getAttribute('href');
if (idName.indexOf('comment') > -1 || idName.indexOf('tb') > -1) {
var tmpText = objList.innerHTML.split("⇒");
tmpText[0] = tmpText[0].slice(0,tmpText[0].search(/<BR/i));
this.base = Array('<a href="',linkUrl,'">',tmpText[0],'</a>').join('');
this.elem = objLink.innerHTML;
} else if (idName.indexOf('entry') > -1) {
var tmpText = objList.innerHTML;
tmpText.match(/\((\d\d\/\d\d)\)/);
this.base = Array('<strong>[',RegExp.$1,']</strong>').join('');
this.elem = Array('<a href="',linkUrl,'">',objLink.innerHTML,'</a>').join('');
} else if (idName.indexOf('link') > -1) {
var tmpText = objList.innerHTML;
if ( tmpText.match(/\[(.+)\](.+)/) ) {
this.base = Array('<strong>[',RegExp.$1,']</strong>').join('');
this.elem = Array('<a href="',linkUrl,'" target="_blank">',RegExp.$2,'</a>').join('');
}
}
return this;
}
function createTreeList(idName,option) { // version 2.2
var objFocus = this.document.getElementById(idName);
if (!objFocus) return;
if (!objFocus.innerHTML) return;
var objLists = objFocus.getElementsByTagName('li');
var linkList = new Array();
var outText = new Array();
if (objLists.length > 0) {
for (i=0;i<objLists.length;i++) {
var chckFlag = true;
var elemText = new makeTreeElements(idName,objLists[i]);
if (!elemText.base || !elemText.elem) return;
for (j=0;j<linkList.length;j++) {
if ( linkList[j].base.indexOf(elemText.base) > -1 ) {
chckFlag = false;
linkList[j][linkList[j].length] = elemText.elem;
}
}
if (chckFlag) {
var tmpNum = linkList.length;
linkList[tmpNum] = new Array();
linkList[tmpNum][0] = elemText.elem;
linkList[tmpNum].base = elemText.base;
}
}
if (linkList.length > 0) {
outText[outText.length] = '<ul>\n';
for (i=0;i<linkList.length;i++) {
outText[outText.length] = Array('<li>',linkList[i].base,option.top).join('');
if (linkList[i].length > 0 && option.sort) linkList[i].reverse();
for (j=0;j<linkList[i].length;j++) {
outText[outText.length] = (j == linkList[i].length - 1) ? option.end : option.list;
outText[outText.length] = Array(linkList[i][j],option.leef).join('');
}
outText[outText.length] = Array(option.btm,'</li>').join('');
}
outText[outText.length] = '</ul>\n';
objFocus.innerHTML = outText.join('');
}
}
}
var gTreeOption = new Array;
gTreeOption['sort'] = false; /* ツリー内の表示順 true:並び替える false:そのまま */
gTreeOption['list'] = '⇒ '; /* ツリー用マーク(通常) */
gTreeOption['end'] = '⇒ '; /* ツリー用マーク(末端) */
gTreeOption['leef'] = '<br />\n'; /* 各枝の末尾 */
gTreeOption['top'] = '<br />\n'; /* ツリー本体の最初 */
gTreeOption['btm'] = ''; /* ツリー本体の最後 */
createTreeList('newentrylist',gTreeOption); // 最新エントリリストのツリー化
createTreeList('entrylist',gTreeOption); // エントリリストのツリー化
createTreeList('commentlist',gTreeOption); // 最新コメントリストのツリー化
createTreeList('tblist',gTreeOption); // 最新トラックバックリストのツリー化
createTreeList('linklist',gTreeOption); // リンクリストのツリー化
// -->
</script>

  最後の部分だけ書き換えます。

createTreeList('newentrylist',gTreeOption); // 最新エントリリストのツリー化
createTreeList('commentlist',gTreeOption); // 最新コメントリストのツリー化
createTreeList('tblist',gTreeOption); // 最新トラックバックリストのツリー化

…といっても必要のない「リンク」と「エントリー」を削るだけなのですが。

改造や設定などは元の記事そのままでできます。
ツリー化カスタマイズ応用編」もあわせて使用できますので、もしよろしければお試しくださいませ。

Web Diary Proのコメント欄に絵文字をつける

タグが使えないコメント欄でも絵文字を可能にする
「stroll::blog」さんのスクリプトです。
それに「6畳一間に魚とカメとヒト2人」さんの解説を元に、
Web Diary Proのコメント欄につける場合をメモ。

※使用にあたっての注意など、「stroll::blog」さんの記述を
 ご覧になってお使い下さい。
 また、参考にしました両サイト様に感謝です。

参考≫
 stroll::blog | コメントにカスタマイズ絵文字入力機能
 迷える子羊 | Ver4.10 絵文字入力機能設置方法

■コメント欄に絵文字を追加する■

1.画像設定スクリプトの設定
  「skin>header.html」を開き、<head>~</head>内に次の
  スクリプトを記入する。

<script type="text/javascript">
<!--
// コメントにカスタマイズ絵文字入力機能:画像設定
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;
}
// -->
</script>

 ※太文字部分をそれぞれ書き換えてください。
  「画像名」がそのまま絵文字のalt属性になります。
  その他追記したい属性は「画像タグに含める属性値」へ。
  ここの属性はそのまま弄らなくとも問題ありません。

2.「skin>comment.html」を開き、28行目あたりにある
  formタグに次の箇所を追加。

<form action="${INFO_PATH}" method="post"
id="comment_form">
<fieldset>
<legend>投稿フォーム</legend>
  ↓
<form action="${INFO_PATH}" method="post"
id="comment_form" name="comform">
<fieldset>
<legend>投稿フォーム</legend>

3.画像リスト出力スクリプトを入れる
  同じく「skin>comment.html」内のURL用フォーム近くに
  次のソースを入れる。

<dt>URL</dt>
<dd><input type="text" name="url" size="30" value="${FORM_URL}" /></dd>

<!-- コメント欄に絵文字を追加 -->
<dt>絵文字</dt>
<dd><script type="text/javascript">
<!--
// コメントにカスタマイズ絵文字入力機能:画像リスト出力
function writeCustmizeEmojiTagList() {
// コメントを入力するテキストエリアを指定
var textarea = 'document.comform.text';

// ***************** 設定ここまで *****************
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>
</dd>
<!-- コメント欄に絵文字を追加 ここまで -->

 ※太字部分は「stroll::blog」さんのところのスクリプトを
  Web Diary Pro用に書き換えてあるところです。
  スキンによってidが異なる場合は書き換えが必要ですが、
  普通ならば上記のままでOKです。

4.画像変換スクリプトの設定
  「skin>footer.html」を開き、次のソースを</body>の直前に
  入れる。

<!-- コメント絵文字用スクリプト -->
<script type="text/javascript">
<!--
// コメントにカスタマイズ絵文字入力機能:画像変換
function changeCustmizeEmojiTag() {
// (1)コメント全体のタグの id 属性
var commentAreaIdName = 'comment';
// (2)コメント全体のタグ名
var commentAreaTag = 'div';
// (3)各コメントの class 属性
var commentBodyClassName = 'text';

// ***************** 設定ここまで *****************
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>
<!-- コメント絵文字用スクリプトここまで -->

  ※太文字の部分が「stroll::blog」さんと
   「6畳一間に魚とカメとヒト2人」さんの説明とは異なる部分です。
   コメント欄にこのスクリプトを適用するので
   'comment'となっています。

これでコメント欄に絵文字が追加されました。
ただし、このスクリプトはコメント数が多くなると、
「画像への変換処理に時間がかかり、
 また、登録した画像の数が多すぎても同様」
とのことですので、絵文字の登録しすぎに気をつけてください。

+ + + + + + + + + + + + + + + + + + + + + + + + + +

■「コメント一覧を表示する」にすると絵文字がでません。

「コメント一覧でも絵文字を表示」をご覧下さい。

■「タグエディタで絵文字を挿入」と併用できる?

問題なく使用できます。
 スクリプトを沢山入れると、それぞれが影響して使えないものが
 でてくる場合がありますが、私が実験したところどちらも
 問題なく利用できます。

 「6畳一間に魚とカメとヒト2人」さんではタグエディタ絵文字の代わりとして
 このスクリプトを利用していましたが、その場合では
 管理人の書いた日記の内容のみしか絵文字が変換されませんでした。
 設定の仕方によっては両方ともこのスクリプトで絵文字が
 追加できるかもしれませんが、自分にはちょっと分からないです。

 ※追記:「迷える子羊」さんで
  絵文字機能を管理者&コメント欄に併用する方法が公開されました。
  管理画面で絵文字imgタグがずらずら描き込まれるのが嫌だ!
  という方にはおすすめの機能です。 

ページ移動