スポンサーサイト[スポンサー広告]

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
コメント

2008/10/21(火)

最新記事の要約で改行コードを消す[インターネット]

タグ: ブログ FC2ブログ ブログカスタマイズ JavaScript

まず、コメントの要約で改行タグを消す方法について、出力がすっきりするように書き換えた。

<ul>
<div id="rcomment">
<!--rcomment-->
<li &align>
<a href="<%rcomment_link>#comment<%rcomment_no>" title="<%rcomment_body>">Re: <%rcomment_etitle></a>
<div style="text-align:right"><%rcomment_name> <%rcomment_year>/<%rcomment_month>/<%rcomment_day> <%rcomment_hour>:<%rcomment_minute>
</div>
</li>
<!--/rcomment-->
</div>
</ul>

<script type="text/javascript">
  var str = document.getElementById("rcomment").getElementsByTagName("a");
  for(i = 0; i < str.length; i++){
    str[i].title = str[i].title.replace(/<br \/>/g, ' ')
  }
</script>

このやり方を使えば、IEのときに最新記事の要約(<%recent_body>)で改行コードが入ってしまうのも取り除けそうだ。ということで、最新記事のプラグインのHTMLも、同じような方法で書き換えた。

<ul>
<div id="rbody">
<!--recent-->
<li &align>
<a href="<%recent_link>" title="<%recent_body>"><%recent_title></a>
<div style="text-align:right"><%recent_year>/<%recent_month>/<%recent_day>(<%recent_wayoubi>)
</div>
</li>
<!--/recent-->
</div>
</ul>

<script type="text/javascript">
  var str = document.getElementById("rbody").getElementsByTagName("a");
  for(i = 0; i < str.length; i++){
    str[i].title = str[i].title.replace(/\r\n/g, ' ')
  }
</script>

以前のやり方では不可能だったのが、このように処理を変えたことで置換できるようになった。

コメント(0) | トラックバック(0) | この記事のURL
コメント

2008/03/22(土)

コメントの要約で改行タグを消す[インターネット]

タグ: ブログ FC2ブログ ブログカスタマイズ JavaScript

FC2ブログで使用できる変数の中に、<%topentry_comment_list_body>と<%rcomment_body>がある。これらは、以前は改行タグが含まれない仕様だったようだ。それが、現在は改行タグが入ってしまう。2005年に、ユーザーフォーラムで不具合報告があるのに、ずっとそのままだ。

<%rcomment_body>を、最近のコメントのtitleとして使いたかったので、この問題が解決するまでは、JavaScriptで改行タグを取り除くことにした。句読点がないコメントも考慮して、スペースに変換する仕様にした。

<ul>
<!--rcomment-->
<li &align>
<script type="text/javascript">
var rcomment_str = '<%rcomment_body>';
rcomment_str = rcomment_str.replace(/<br \/>/g, ' ');
document.write('<a href="<%rcomment_link>#comment<%rcomment_no>" title="' + rcomment_str + '">Re: <%rcomment_etitle></a>');
</script>
<noscript>
<a href="<%rcomment_link>#comment<%rcomment_no>" title="<%rcomment_body>">Re: <%rcomment_etitle></a>
</noscript>
<div style="text-align:right"><%rcomment_name> <%rcomment_year>/<%rcomment_month>/<%rcomment_day> <%rcomment_hour>:<%rcomment_minute>
</div>
</li>
<!--/rcomment-->
</ul>

これを、最近のコメントのプラグインにある、HTMLの編集に貼る。このブログで使っているものをそのまま載せているので、タグや出力形式はお好みで。

追記:
最新記事の要約で改行コードを消すの記事に続く。
コメント(2) | トラックバック(0) | この記事のURL
コメント
使わせていただきました。ありがとうございます。

最近の記事でtitle="<%recent_body>"を使っていますが、この改行もできれば無くしたくて...いじってみましたが、エラーになってしまいました。

recent_bodyだとそのままですかね。。。
by paruparu
<%recent_body>は、もともと改行タグを出力しませんが、この場合は改行コードを削除したいということですね。
Firefoxでは、何もしなくても詰めて表示されるので、今まで気づきませんでした。

改行コードを除去できないか試したのですが、よい方法が見つかりませんでした。
JavaScriptで文字列を置換する際に、まず<%recent_body>の内容を変数に代入するのですが、途中に改行があると、そのまま改行が入って展開されます。

例)
var recent_str = '<%recent_body>';

var recent_str = 'あいうえお
かきくけこ';

この状態は、JavaScriptの文法としておかしいので、エラーになってしまいます。
<%recent_body>が、改行コードを出力しない仕様になればよいのですが。
by 犬かい

2008/02/09(土)

日付で記事をまとめる[インターネット]

タグ: ブログ 忍者ブログ ブログカスタマイズ JavaScript

忍者ブログでは、日付で記事をまとめる機能が実装されていないようだ。同じ日の記事は、日付の表示を1回だけにしたかったので、試用していたときにJavaScriptで作った。FC2ブログでは、<!--same_day-->というのがあるので、もっと簡単にできる。

まずは、直前の記事と日付が同じなのかどうかを判定する、isSameDate()という関数を作る。同じだったらtrue、違っていたらfalseを返す。仕組みは、before_entry_dateに直前の記事の日付を保持しておいて(最初は空っぽにする)、引数として指定したcurrent_entry_dateと一致するか確認するというもの。

<script type="text/javascript">
var before_entry_date = "";
function isSameDate(current_entry_date)
{
  if(current_entry_date != before_entry_date){
    before_entry_date = current_entry_date;
    return false;
  }
  return true;
}
</script>

実際に日付を表示する部分では、現在の日付を引数として渡して、この関数を呼び出す。trueなら日付を表示させる。

<script type="text/javascript">
if(isSameDate('<!--$entry_year-->/<!--$entry_mon-->/<!--$entry_day-->') == false){
  document.write('<!--$entry_year-->/<!--$entry_mon-->/<!--$entry_day-->');
}
</script>
<noscript>
<!--$entry_year-->/<!--$entry_mon-->/<!--$entry_day-->
</noscript>
コメント(0) | トラックバック(0) | この記事のURL
コメント
| ホーム |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。