サイドバー

サイドバーにはサイドバーモジュールと呼ばれる単位(divブロック)でデータが出力されます。モジュールは「最近の記事」や「最近のコメント」が1つのモジュールとなっています。

全体構造

<div class="sidebar">
 <div class="side-a">
   <div class="side-a-top"></div><div class="side-a2">
     サイドバー前半
     </div><div class="side-a-bottom"></div>
  </div>
 <div class="side-b">
   <div class="side-b-top"></div><div class="side-b2">
     サイドバー後半
     </div><div class="side-b-bottom"></div>
 </div>
</div>

サイドバー装飾のため複数のブロックが置かれていますが、基本的には両サイドバーへの対応を見越した次ような構成です。

<div class="sidebar">
  <div class="side-a">
    サイドバー前半
  </div>
  <div class="side-b">
    サイドバー後半
  </div>
</div>

モジュール

モジュールはサイドバーのブロックの別名です。モジュールは次の構造をしています。

<div class="hatena-module" id="モジュールID">
<div class="hatena-moduletitle">タイトル</div>
<div class="hatena-modulebody">
(内容)
</div> <!-- hatena-modulebody -->
</div>

ul.hatena-section

モジュール内で使用するリスト要素は、(はてなダイアリーからの)慣例として ul.hatena-section の中にli要素として出力されます。

ulは出力されないこともあるので、ulの存在を前提とした位置調整(マージンやパディング)は推奨できません。必ず、div.hatena-module にて内部の出力域を正しく設定するための padding を設定してください。

informationモジュール

<div class="hatena-module" id="side-information">
<div class="hatena-moduletitle">Information</div>
<div class="hatena-modulebody">
<ul class="hatena-section">

日記帳の説明やRSSなどへのリンクが出力されるクラスです。タイトル部は標準で非表示に設定されています。*1

RSS以外のLIRS, hina-diのリンクを消したい場合は次のようにします。

a.side-lirs, a.side-hina { display:none; }

※Ver2.00より前はinfomationとスペルミスしています。

*1 : はてなテーマで表示が崩れるのでタイトルを出力しているだけです

最近の記事

<div class="hatena-module" id="side-recent-diary">
<div class="hatena-moduletitle">最近の記事</div>
<div class="hatena-modulebody">
<ul class="hatena-section">
	<li><a href="~">adiary 1.43リリース情報</a></li>
		:
</ul>

記事が1件もなかったり、非表示に設定されているときは出力されません。

最近のコメント

<div class="hatena-module" id="side-recent-comment">
<div class="hatena-moduletitle">最近のコメント</div>
<div class="hatena-modulebody">
<ul class="hatena-section">
	<li><a href="~">記事タイトル</a>
	    <span class="author"><a href="~">名前</a></span></li>

コメントが1件もなかったり、非表示に設定されているときは出力されません。

最近のトラックバック

<div class="hatena-module" id="side-recent-trackback">
<div class="hatena-moduletitle">最近のトラックバック</div>
<div class="hatena-modulebody">
<ul class="hatena-section">
	<li><a href="~">トラックバックを受信した記事タイトル</a>
	    <span class="tb-from">from</span>
	    <a href="~">送信元ブログ名</a> <span class="author">送信元執筆者</span></li>

トラックバックが1件もなかったり、非表示に設定されているときは出力されません。

送信元執筆者は存在しないときは出力されません。

カテゴリ一覧

<div class="hatena-module" id="side-category-list">
<div class="hatena-moduletitle">カテゴリ一覧</div>
<div class="hatena-modulebody">
<ul class="hatena-section main-category">
	<li><a href="http://adiary.blog.abk.nu/&category?cat=adiary">adiary</a>
	    <a class="switch" href='~'>▼</a> (139)
	<ul class="hatena-section sub-category">
		<li><a href="~">アナウンス</a> (6)</li>

カテゴリが1種類しか存在しないとき、非表示に設定されているときは出力されません。

サブカテゴリがあり閉じられる機構が付いているため若干複雑になっています。上位カテゴリには ul.main-category、サブカテゴリには ul.sub-category がクラス出力されます。

過去の月別一覧

<div class="hatena-module" id="side-month-list">
<div class="hatena-moduletitle">過去ログ</div>
<div class="hatena-modulebody">
<ul class="hatena-section">
	<li><a href="~/200710">2007年10月</a> <span class="count">(<span>2</span>)</span></li>
	<li><a href="~/200709">2007年09月</a> <span class="count">(<span>2</span>)</span></li>

標準では出力されず、設定により出力できます。記事が1件も存在しない月は出力されません。

検索

<div class="hatena-module" id="side-search">
<div class="hatena-moduletitle">検索</div>
<div class="hatena-modulebody">
<form method="GET" action="~" name="search" id="side-search-form">
<input type="text" name="word" size="12" value="" id="side-search-textbox">
<input type="submit" value="検索" id="side-search-submit"><br>
<input type="radio" name="all" value="0" >タイトル
<input type="radio" name="all" value="1" checked>全文
</form>
</div> <!-- hatena-modulebody -->
</div> <!-- hatena-module -->

これはulではなくフォームで出力されます。フォーム内要素のIDはVersion2.003以降からの追加です。

管理メニュー

<div class="hatena-module" id="side-login">
<div class="hatena-moduletitle">管理メニュー</div>
<div class="hatena-modulebody">
<ul class="hatena-section">
<li><a class="login" href="/?login" title="ログイン"><span>ログイン</span></a>

デフォルトでは非表示になっていますが、通常右上に表示されるログインや管理、日記を書くなどのリンクをサイドバーに配置したいときに使用します。具体的には右上の表示をオフにし、サイドバーの表示をオンにします。

(cssサンプル)
div.adminmenu { display: none; }
div#side-login { display: block; }

システム情報

<div class="hatena-module" id="side-system-info">
<div class="hatena-moduletitle">System info</div>
<div class="hatena-modulebody">
Apache : worker<br>
Runtime : mod_perl2<br>
RDBMS : PostgreSQL<br>
</div></div>

システム情報は標準では常に出力されます。消去したい場合はCSSで次のようにします。

div#side-system-info { display: none; }

トラックバック欄

<div class="refererlist tb">
	~トラックバック欄ヘッダ~
	<ul class="tb">
		~トラックバックURL~
		~トラックバック表示欄~
	</ul>
</tb>
  • div.tb はトラックバックがあるか、トラックバックを受信可能であるときに出力されます。
  • div.refererlist は、はてな互換のためのクラス出力です。使用しないでください。

トラックバック欄ヘッダ

<div class="caption">
	<a class="switch" href="~"><span class="open">▼</span></a>
	<a href="~"><span class="caption-title">トラックバック</span>
	<span class="num">(10件)</span></a>
</div>

コメント欄ヘッダとほとんど同じです。閉じるスイッチはこちらを参照

トラックバックURL

<li class="tb-url"><span class="tb-url">TB-URL</span>&nbsp;
 http://xxxxx.yyy.zz/085/tb/E1d</span></li>

実際にはSPAM対策のため出力の一部にJavaScriptを使用していますが、HTMLとしてみれば上のとおりです。

トラックバック表示欄

トラックバック1つは次の形式をしています。

<li>
	<a class="switch" href="~"><span class="close">▼</span></a> 
	<span class="title"><a href="~" title="">adiary 1.40 の新機能について</a></span> 
	<span class="blog_name">adiary開発日誌</span>
	<span class="author">なまえ</span>
	<div class="excerpt">~トラックバックの概要~</div>
</li>
  • 最初のスイッチにより、トラックバックの概要は表示をオン/オフされます。(display: block/none
  • トラックバックの仕様により、ブログ名、トラックバックの概要は存在しないことがあります。その場合span/div要素ごと出力されません。*1
  • トラックバック元記事を書いた人(span.author)はadiaryの拡張仕様であり、現在のところadiary以外から送信されたトラックバックでは存在しません。(span.author ごと出力されません)

*1 : タイトルが空の場合は"(no title)"として出力されます。

コメント欄

全体構造

<div class="comment">
	~コメント欄ヘッダ~
	~コメント表示欄~
	~コメントフォーム~
</div>
  • div.comment はコメントがあるか、コメントフォームが存在するとき出力されます。
  • div.comment には id が出力されていますが、これはJavaScriptのためのものです。可変しますので、使用しないでください。

コメント欄ヘッダ

コメントがあれば表示されます。

<div class="caption">
	<a class="switch" href="~"><span class="open">▼</span></a>
	<a href="~"><span class="caption-title">コメント</span>
	<span class="num">(4件)</span></a>
</div>

最初のスイッチは記事の閉じるスイッチと同じです。次いで、コメント欄自身へのリンク、コメント数となっています。

コメント表示欄

コメント表示欄はコメントかあるときにのみ出力されます。コメントの表示は、複数記事表示のときは本文を省略形表示します。単一記事表示のときはコメント全文を表示します。これにより若干、クラス構造が違います。

コメント表示形式(単一表示)

<div class="commentshort"><div class="commentbody">
	~1つ目のコメント~
	~2つ目のコメント~
</div></div>

1つのコメントの構成。

<div class="comment-one">
<div class="commentator"><p>
	<span class="canchor"><a name="~" href="~この場所へ~">#</a></span>
	<span class="commentator author">なまえ</span>
	<span class="comment-date">2006年08月06日(日) 午後6時19分</span>
	<span class="system-msg"></span>
</p></div>
<div class="comment-text"><p class="ni">1行目<br>2行目<br>最後の行</p></div>
</div>	<!-- end of comment-one -->

div.comment-one が1つのコメントの区切りです。これらクラスのうち span.author はコメント欄以外でも使用されるクラスです。

span.system-msg にはログイン時に「非公開」*1または「非表示」*2の文字が入ることがあります。出力形式は以下のとおりです。

<strong class="hidden-com">(非公開コメント)</strong>
<strong class="void">(非表示)</strong>

コメント表示形式(複数表示)

<div class="commentshort"><div class="commentshortbody">
	~1つ目のコメント~
	~2つ目のコメント~
</div></div>

※Ver1.43以前は div.commentshortbody は出力されません。ご注意ください。

1つのコメントの構成。

<p><span class="canchor"><a name="~" href="~この場所へ~">#</a></span>
	<span class="commentator">なまえ</span>
	『1行目2行目最後の行』
 <span class="comment-date">(2006/08/06 18:19)</span></p>

コメント本文はある文字数以上*3になると省略して表示され、また文中の改行はすべて無視されます。

単一記事表示のときにあった「非公開」または「非表示」は「なまえ」の手前 span.commentator 中に出力されます。

*1 : 非公開コメント

*2 : コメントを許可してから表示する場合に設定するもの

*3 : 標準では64文字以上。日記帳の詳細設定から変更可能

コメントフォーム

コメントを書き込むためのフォームです。単一記事表示のときのみ出力されます

<form method="post" action="~" class="comment">
<br><p><span class="canchor">#</span>
  <input name="name" size="15" value="" type="text"> 
  <input name="post" id="post_comment" value="投稿" type="submit">
</p>
<textarea name="comment_txt" cols="60" rows="3"></textarea>
</form> <!-- end of comment form -->

表示に関連する要素のみ書いてあります。

本文の拡張クラス

テーマによって装飾可能にするために、本文に細かいクラスが出力されています。それについて解説します。

aタグ

リンク(aタグ)は通常のHTML記述の他、記法によるリンクによって生成されます。記法によるリンクの場合、必ず"tag"クラス(tag正式名のクラス)が付き、+α記法名のクラスが付きます。ただしhttp記法では付きません。

-[g:google検索]、[google:google検索:その2]
-[w:Wikipedia]、[wiki:Wikipedia:その2]
-[http://adiary.org/:adiary official]

表示例

出力HTMLソース

<ul>
	<li><a href="<略>" title="Google検索" class="tag google">google検索</a>、
	    <a href="<略>" title="Google検索" class="tag google">その2</a></li>	
	<li><a href="<略>" title="Wikipedia" class="tag wikipedia">Wikipedia</a>、
	    <a href="<略>" title="Wikipedia" class="tag wikipedia">その2</a></li>
	<li><a href="http://adiary.org/">adiary official</a></li>
</ul>

table の odd/even クラス

tableを記法により出力する際、行ごとに odd と even が出力されます。oddとevenで背景色を微妙に変えることで、テーブルを装飾することができます。

(CSSソース)
tr.odd  td { background-color:#fcfffc; }
tr.even td { background-color:#ecfff8; }
(本文)
|*adiary Version|*リリース日|
|β1|2006-07-10|
|RC1|2006-12-11|
|1.00|2006-12-20|
|1.20|2007-03-02|
|1.40|2007-06-27|

表示例

adiary Versionリリース日
β12006-07-10
RC12006-12-11
1.002006-12-20
1.202007-03-02
1.402007-06-27

記事内の索引

[*toc]タグで出力される索引一覧は ul.toc の入れ子によって出力されます。現在のところ2階層までです。

<ul class="toc">
	<li><a href="~">全体構造</a></li>
	<li><a href="/theme_doc/satsuki-sidebar#p2">モジュール</a>
	<ul class="toc">
		<li><a href="~">ul.hatena-section</a>
	</li></ul></li>
</li></ul>

本文のクラス

記事本文の記法と直結するクラスが存在します。

なるべくなら対応するようにしてください。

block要素

blockquote, pre, div.box に対して枠線を出したり背景色を変えることを推奨します。これらはブロック記法と関連して大変よく使われます。

この中はblockqutoeです。

strong、em要素

記法タグ[bf:強調1][em:強調2]で使われるHTML要素です。テーマ背景色に対して設定される方が望ましいです。

強調1強調2

hiddenクラス

その部分を見えなくする記法です。「クリックして(マウスオーバーして)みてください」などの表示のために指定します。背景色と同じ色をフォントカラーとして指定してください。

(CSS設定例)
div.day .hidden, div.day .hidden a, .hidden strong, .hidden em {
	color:			#fff;
	background-color:	#fff;
}
サンプル
>>hidden
この中は見えません。[bf:強調表示にしても][em:見えません。]
<<
↑[h:ここも見えません。]←

サンプル

commentクラス(pre中)

preブロックの中にコメントを書く記法があります。

(CSSサンプル)
pre span.comment	{ color: #b50; }
pre strong.comment	{ color: #b50; font-weight: bold; }
(記法)
>||#
<html><body>
基本的にはソースがそのまま表示されますが、このように#{強調}や##{強調}ができます。
</body></html>
#||<
<html><body>
基本的にはソースがそのまま表示されますが、このように強調強調ができます。
</body></html>

検索ハイライト

検索語に対して、ハイライト表示が行われます。全検索語に対してspan.highlightが出力されます。また同時に第1検索語から順に「span.highlight0, span.highlight1, span.highlight2, span.highlight3……」が出力されます。

例えば「検索 ハイライト 全検索語 出力で検索」したとき、上の段落のソースは次のようにハイライトされます(注:途中改行を付加していますが、実際には1行で出力されています)。

<span class="highlight highlight0">検索</span>語に対して、<span class="highlight highlight1">ハイライト</span>表示が行われます。
全<span class="highlight highlight0">検索</span>語に対して<span class="mono">span.highlight</span>が出力され、
また同時に第1<span class="highlight highlight0">検索</span>語から順に
「span.highlight0, span.highlight1, span.highlight2, span.highlight3……」が
<span class="highlight highlight2">出力</span>されます。

標準ではGoogleライクな配色がspan.highlight4まで指定されていますが(テーマの)フォント色によっては文字が見えないことがあります。その場合は適時オーバーライドしてください。

(base.cssによる記述)
span.highlight	{ background-color: #0a0; font-weight: bold; text-decoration: inherit; }
span.highlight0	{ background-color: #ff6; }
span.highlight1	{ background-color: #aff; }
span.highlight2	{ background-color: #9f9; }
span.highlight3	{ background-color: #f99; }
span.highlight4	{ background-color: #f6f; }