FC2blogの独自タグに関しては結構知ってるつもりの私でしたが、先月知らないタグを他ユーザ様から教えて頂きまして。 「え? 何時からこんなのが?」 という狼狽と 「おお!これで・・!」 という嬉しさが合半ばしたものでありました。
皆様は <%search_word> とか <%tag_word> 等のタグは御存知でしたでしょうか。 私は従来、個別表示時のタイトルや自blog検索時のKWを表示させるのに <%sub_title> を使用していたのですが、この独自タグは半角スペースから始まるのと、タグ検索時には tag:〜 という接頭語が付いて来るというのもあって「ちょっとな〜」 とか思っていたのでした。
( 0}.fuga{〜 のようなユーザタグ登録も考えたりしました )
〜_word という独自タグは其の辺りを見越してシステムサイドが用意して下さったものと思われ、検索中のKW(ユーザタグ)そのものを取得できます。 search_area , tag_area のみで出力される(それ以外では空文となる)これらの変数は考えようによっては其々の「モード専用変数」とも考えられる訳ですが、一般変数でありますのでareaタグで囲う手間無くテンプレート中の何処でも使える訳です。(便利)
この2つのタグには色々な用途が考えられます( Ash/Asgard 改訂では早速利用させて貰いました)が、以前の記事に書いた <%sub_title> を用いてblog内検索時の結果表示頁中のKWをハイライトさせる方法をもうちょっとマシなものにできないか試みてみました。
【 設置法 】 テンプレート(の記事部分)が以下のようである時
<div id="ID名">
<!--topentry-->
* エントリ(記事)内容 *
<!--/topentry-->
</div>
<!--search_area--><script type="text/javascript"><!--
function HKW() { if(document.getElementsById){
var Style="background:yellow";
var A=document.getElementById("ID名");
var KW="<%search_word>";
var H='<span style="'+Style+'">'+KW+'</span>';
var R= new RegExp( KW, "g");
A.innerHTML=A.innerHTML.
replace(R,"DMY").
replace(/<([^>]*)DMY([^<]*)>/g,"<$1"+KW+"$2>").
replace(/DMY/g,H) ;
} }
HKW();
//--></script><!--/search_area-->
【 解 説 】 上記ソースですとKW部分はイエローの背景色でハイライトされますが、強調方式をどのようにするかはスクリプト中の以下の行、
var Style="☆";
☆の部分を変更すれば(例: font-weight:bolder )自由に設定できます。
前回の記事ではKWと同じ文字列がtitleやclass名にあった場合、或いは title や html 等がKWとして検索された場合、タグ内に存在する文字列にも強調タグが付いて( HTML 構造が)破壊されてしまうという問題がありました。
今回はKWを強調タグ付きに直接変換するのでなく、一度ダミー文字列に置換し、タグ中のダミーのみ素のKWに戻す事によりこれを回避しています。 その問題の他に、スクリプトがtopentryブロック以降に出力されないとKWを強調できない、という条件があった為(何処に出力されるか判らない)プラグイン化に困難があった訳ですが、今回そちらの回避方法も何とか見出す事ができましたので上記を多少改変したものを共有pluginに登録してみました。
|
★
びといん
びといん
Edit 11/05 00:15 |
意外に知らない事って多いですよね。 |
|
★
daniel
daniel
Edit 11/05 16:20 |
どうもこんにちは。 (どちらかと思ったらネコパンチ様とは) |
|
★
びといん
びといん
Edit 11/05 20:52 |
有り難うございます。 |
|
★
daniel
daniel
Edit 11/06 10:14 |
「思い付きを力技で実現」 というのも中々できないことで。 |
| . |