2005-12-14 Wed
Nucleus で Web Bookmark を作成した最大の理由は、自分へのコメントを非公開で残すことにあったのですが、Nucleus で構築すると簡単に検索できてしまうので、その回避策です。
Blog 自体を非公開にしていれば、Blog の設定で「常に検索対象にする」を「いいえ」にするだけで事足りますが、僕のように一覧を表示していると、その Blog で検索した場合、有無を言わさず検索対象となり、赤裸々なコメントが露呈し恥ずかしい思いをすることになります。もっとも簡単な解決方法は、「検索ページ」のスキンを作成しないことですが、ブックマークが膨大になってくると、検索機能を利用したい場合も出てくると思われますので、ログイン状態では通常運用、それ以外は強制的に検索する Blog を指定するようにしておきます。
「/nucleus/forms/searchform.template」を開くと、下から 3 行目ぐらいに以下のようなコードがあります。
<input type="hidden" name="blogid" value="<%formdata(id)%>" />
見慣れない Nucleus の変数がありますが、その文字列から察するに、value が開かれている Blog ID となり、その Blog と「常に検索対象にする」が「はい」になっている Blog を検索対象とするようです。当サイトは現在、複数の Blog を設置しているのですが、公開しているのはメインの「Heartfield」で、その Blog ID の「1」を常に value に指定します。そのときに「<%if(loggedin)%>」を使って、以下のようにします。
<input type="hidden" name="blogid" value="<%if(loggedin)%><%formdata(id)%><%else%>1<%endif%>" />
これで、メンバーがログインしている時は、通常どおりに検索機能が利用できます。
これでも十分ですが、まだ完全ではありません。Nucleus で検索すると、URI にこんなものがついてきます。
?query=検索語句&amount=0&blogid=1
「amount」というのはなにかわかりませんが、「blogid」というのは明らかですよね。つまり、ここに手動で数字を打ち込めば、その Blog で検索できてしまうわけです。だから、「検索ページ」のスキンを作成しないのが一番安全なのですが、ここでも「<%if(loggedin)%>」を使って隠蔽することができます。つまり、ログインしている時は通常の検索結果を表示するようにスキンを作成し、それ以外は空白にするとか、ダミーのコードを記述するわけです。当サイトではこんな感じです。
<%if(loggedin)%>検索結果のテンプレート<%else%>見つかりませんよー<%endif%>
まあはっきりいって、ここまでして隠したいなら書くな、ということなんですが(笑)、好奇心の赴くまま探求してみました。このように、作り手が予期せぬ方法でアクセスしてきた場合に、表示されることはあると思いますので、隠しているからといって見られて困るようなことは書かない、というのが大原則です。
このように、「<%if(loggedin)%>」をうまく使うと、外部には基本的に未公開になるので、メモ代わりに Nucleus を使うこともできますね。ただ、多用すると重くなるので、程々にしましょう。
…もし、何らかの方法で「pushman's Clip」のコメントが検索できたら、こっそりと教えてください(笑)。見られて困るようなことは書いてませんが、こういうこともできるんだ、ということが発見できると楽しいので。
« Old 2005-12-14
Nucleus で Web Bookmark
2005-12-14 New »
Blog によっては「ドラフトに追加」にチェック