クリボウ氏の BloggerでもCategory を参考にカテゴリを(やっと)設置しました.
やっと,と書いたのは,クリボウ氏でも取り上げられているのが去年の11月末であるようにかなり前から知っていました.知っていてやれてなかったからです.
理由は唯一つ.
まず,Bloggerは完全な静的Webページ生成ですので,カテゴリ分けなんかの機能は大変難しい,というコトがあります. 標準でサポートされていません.
クリボウ氏とその更に元にされたBlogger Categoriesは同GoogleのサービスGoogle Blog Searchを利用する方式で,
あるキーワードに対するサイト内検索の結果(のフィード)をそのカテゴリの一覧としてJavascriptで表示する方法です.
(実際には,HTMLページでサイトフィードを見られるようにRSSやAtomフィードをJavascriptに変換する別サービスFeed2JSを内部で使っています. かなり大掛かり・・・)・・・ 詰まりは,Blog Search にインデックスされないと全く利用できなく,やむなく諸々準備だけはして見送っていたのです.
しかし,イツマデ(5ヶ月・・・!)経ってもサイト内検索結果が得られない
googleのblogスペースではなく,ftpで他サーバにhtmlファイルをアップロードしているのでインデックスされるのに時間がかかるのかな――とある程度は覚悟しておりましたが・・・
5ヶ月経っても『マッチするものがありません』. 仕様がないのでここ数日色々Blog Searchで遊んでみました.すると自分のPostもそこにはある・・・.
-+-+-+-
Blog Search(及び,Google検索サービス)では
検索演算子と呼ばれるものが利用できますが.
少し試してみると
・
blogurl:[自分のblogの完全URL] ではマッチする結果がない
・
blogurl:[blogのURLの一部分(キーワード)](自分の場合は"~red_one") だと自ブログの記事を出してくれました.
#やはりβ版なだけあって,不具合が多々あるのか.まあ,なので後者でカテゴリサーチを利用できるっぽい, と分かり昨日あれこれ設置していました.
ただし,検索ロボットが収集した検索結果ですのでゴミが少なからずあります.
他サイトのインデックス,削除したPostだったり,Postの固定リンクurl(=タイトル)が変わって古いインデックスが残っていたり,と.
あと,検索順が一貫していないのも問題かな.
なかなか直ぐには解決しそうにない問題なので,多少のことは多めに見てやってください^^;
ここからは
[蛇足] さて,カテゴリ表示するために検索用のリンクスポットを作らなければならないのですが, これが一々面倒くさい.
アンカータグの構成は以下のよう,
<a href="http://[カテゴリ一覧表示ページのurl]?url=[ブログurl]&tag=[カテゴリ名]" >[カテゴリ名]</a>
と非常に長い.
リンクスポットに title属性 を付けたり,キーワードに intitle:演算子 を付けるなどした場合,更に長くなる.
自分は各Postにカテゴリを設定する(つもりでいた)ので,これを1つPostを書く度に書かなくてはならない. 複数カテゴリがある場合は何個も何回も. 非常に面倒なのでJavascriptを組んでみた.
まず,
<h4 class="post-category">[ keywords ]</h4>
とう感じにカテゴリをPostの適当なところに書く(毎回,これは仕様がない).
複数カテゴリがある場合は keyword を " / " で区切る.
Javascriptでページ読み込み時にこれを分解してキーワード毎のアンカーを挿入するスクリプトです.
function ktg ()
{
this.target = "カテゴリ一覧表示ページのurl";
this.loc = "ブログurl(の一部でもいいっぽい)";
this.opt = "intitle:";
this.tag = "h4";
this.cname = "post-category";
this.ank = function (_tok) {
var href = this.target + "?url=" + this.loc + "&tag=" + this.opt + _tok;
var titl = "'category search, \"" + _tok + "\"'";
var doc = "<a href=\"" + href + "\" title=" + titl + " >" + _tok + "</a>";
return doc;
}
this.make = function (_url, _loc) {
if (_url) { this.target = _url; }
if (_loc) { this.loc = _loc; }
var doc = document.getElementsByTagName(this.tag);
for (var i=0; i < doc.length; i++) {
if (doc[i].className != this.cname) { break; }
var tok = doc[i].innerHTML.split(' ');
doc[i].innerHTML = "category: [ ";
for (var j=1; j < tok.length-1; j+=2) {
doc[i].innerHTML += this.ank (tok[j]);
if (j+1 < tok.length-1) { doc[i].innerHTML += " / "; }
}
doc[i].innerHTML += " ]";
}
}
return this;
}
var ka = new ktg();
・
赤と
オレンジの部分に関しては自分のブログの環境に合わせて適宜変更してください.
・
緑の部分は好みで変更願いまふ.
後は,
<body onLoad="ka.make();">
とすればo.k.
:Javascriptなし
:Javascriptでリンクスポット化
また,大まかなカテゴリはサイドバーにリスト表示しているけど,これもJavascript. カテゴリは後々増えていく可能性があるので,増やすたんびにブログを再構築するのでは非効率的.
ですので,Javascriptファイルを外部ファイルとして切り離し, そのソースコードを変更するだけでよくした.
#これはBlogger単体だけでやってる人には,ちっと意味ないか・・・orzトリアエズ,自分の例を示します.
function ktg ()
{
this.list = new Array('blog','Blogger','Web','illust','days'); //カテゴリのリスト
// 省略
this.show = function () {
document.write("<ul id=\"category_show\">");
for (var i=0; i < this.list.length; i ++) {
document.write("<li>[ " + this.ank(this.list[i]) + " ]</li>");
}
document.write("</ul>");
}
// 省略
return this;
}
var ka = new ktg();
先程のコードに埋め込む感じで以上を追加します. テンプレートの方は,
<head>
<!-- head要素内 -->
<script type="text/javascript" src="http://[ファイルまでのパス/ファイル名]"></script> //外部JSファイルの読み込み
</head>
<!-- 省略 -->
<div id="sidebar">
<!-- sidebar内 -->
<h2 class="sidebar-title">Categories</h2>
<script type="text/javascript"><!--
ka.show();
//-->
</script>
<!-- 省略 -->
</div>
というくらいかな.
カテゴリリストの階層化など,今後考える余地はまだありそう.
:カテゴリリスト表示例
少しプログラムを書けるくらいの知識があれば,内容も分かると思うので個人でもカスタマイズしてください.
・・・長っ!
――最近,履歴書みたいな文章しか書いてないから, 崩した長文を目一杯書いてしまった.
予想以上に長くなってしまいましたが あんま参考になっていないのは重々承知です.読んで頂いてありがとうございます.
[閉じる] このカテゴリーを応用して,キーワードを空にしたカテゴリサーチすれば, 全Postが参照できるのではないのか?
と思いやってみました. [
コチラ] 右・サイドバーにも設置→
検索結果が時系列順でキチンと表示されるなら,ケッコウいいかも. 最新20件から次の20件・・・とかいう感じにページを進めることができるのでは.
何気にすごいぞ Blogger Categories.
Blogger / util
3 comments:
Well done!
[url=http://qehcjdrh.com/eycg/wzje.html]My homepage[/url] | [url=http://slabdfqc.com/llfa/nduu.html]Cool site[/url]
Thank you!
My homepage | Please visit
Well done!
http://qehcjdrh.com/eycg/wzje.html | http://izrkillt.com/kvfw/nbny.html
Post a Comment