[hnsドキュメント]

ハイパー日記システム Version 2.10

テーマ機能


テーマ機能とは?

日記の見た目(スタイル,背景,文字色など) を「テーマ」として定義でき, また あらかじめ用意されている「テーマ」を指定することで,日記の見た目を 簡単に変更できる機能です.


テーマの利用方法

インストールされているテーマを使用するのはとても簡単です.

するだけです。

hnsの配布物には, japanese , ruribaka , anti_windoze , english という 4つのテーマが含まれています。 デフォルトは「japanese」です。 テーマ「anti-windoze」を利用するには,config.ph で

$Theme = "anti-windoze";

と設定するだけです.

また http://www.h14m.org/dist/contrib/theme/ に寄贈されたテーマがあります。
tar.gz されたテーマをウェブ日記ディレクトリ (~/public_html/diary/) に置いて

  1. $ gzip -dc *.tar.gz | tar xvf -
    (又は $ tar zxvf *.tar.gz)

として展開しテーマ名としてそのディレクトリ名を指定するだけで 利用できます.


テーマの実体

テーマは,ウェブ日記ディレクトリ(~/public_html/diary/) にテーマ名 をつけたディレクトリ名で必要なファイルが置かれます. テーマに必要なファイルとは,

です.theme-static.ph, head.txt, foot.txt はなくても構いません。 head.txt と foot.txt はテーマ・ディレクトリに存在する場合、そちらが表示されます (~/diary/conf/ にあるものは無視されます)。

theme.ph では、以下のような設定が可能です。


テーマの作成

テーマを作成するということは,theme.ph を作成することと,画像を用意することです.

生成されるHTMLタグも自由に変更することが可能ですが, テーマを作成する場合, 正しいHTMLを生成するようチェックすることが望まれます.

README の記載

テーマでユーザ変数・マークを定義した場合,利用可能なユーザ変数と その意味,マークとその意味を必ず記載したドキュメントを添付願います. テーマに関する説明は,READMEファイルに記載することが望まれます.

テーマの READMEファイルの記載例:

利用可能なユーザ変数
TENKI   天気

利用可能な MARK
!!      びっくり
(^^)    にっこり
(^^;    汗
ばか    ばか
(笑)    笑
後ろ    後ろ姿
v(^^)   Vサイン

theme.ph の作成と設定

theme.ph は Perl script ですので Perl の文法に従う必要があります.

デフォルトの設定は、コメント・アウトしてある場合があります。 変更をほどこす部分は # を削除して、変更を加えて下さい。

% cd ~/public_html/diary
% mkdir yours
% cp japanese/theme.ph yours
% vi yours/theme.ph

などとします。


ユーザ変数

使用可能なユーザ変数を、

package HNS::Hnf::UserVar;
$Templates{変数名} = "テンプレート";

という形式で設定します。

使用可能なパラメータは、

パラメータ名 説明
%value hnf で指定した値
%user{USER_VAR_NAME} USER_VAR_NAME が出力される文字列

です。

ex)
package HNS::Hnf::UserVar;
$Templates{'BASHO'} = "@%value";
$Templates{'TENKI'} = "天気: %value %user{BASHO}";

マーク

使用可能なマークと画像ファイル名を

package HNS::Hnf::Command::MARK;
$List{'(^^)/~'} = 'icons/bye.gif';

のように設定します。


HTML 設定

hns-2.20 からは、テンプレートを動的生成用と静的生成用に別々に 設定可能になりました。別々に設定する場合は、例えば、動的生成用の変数が $NextTemplate{dynamic}、 静的生成用の変数が $NextTemplate{static} のようになります。

package は HNS::ExtHTML。

$DOCTYPE
ドキュメント・タイプ
デフォルト値
qq(<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/REC-html40/loose.dtd">\n);
$Head{dynamic}
<head></head>内に入れる文字列
デフォルト値
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
 body { background: white }
 h3.new { margin-left: 1em }
 div.uservar { font-weight: bold; }
 div.section { margin-left: 2em; margin-top: 0 }
 div.sub { margin-left: 1em; margin-top: 0 }
 div.list { margin-left: 1em }
 div.fn { margin-left: 1em; margin-top: 0 }
 div.url { margin-bottom: 0 }
 pre {
  white-space:  pre;
  padding:      0.5em;
  border-color: #ffeeb0;
  border-style: outset;
  border-width: 4px
 }
 a.hide:link { color: black; text-decoration: none }
 span.bold-red { color: red; font-weight: bold }
 div.bold-red { color: red; font-weight: bold }
--></style>
);
$BodyVal
<body ほげほげ>のほげほげの所に入る文字列
デフォルト値 undef
$DynamicPrintFunc
動的にメッセージを出力する関数へのリファレンス
デフォルト値 undef

出力分フッタ表示

package は HNS::Collection。

変数名 説明 デフォルト値
$FootMessages{'HasContent'} 1日以上の日記を出力した場合のフッタ・メッセージ。 %num は出力した日記数に展開 "以上、%num 日分です。\n";
$FootMessages{'NoContent'} 指定した日記が無かった場合のフッタ・メッセージ "該当するものはありません。\n";

PIM(Personal Infomation Management)

予定

package HNS::PIM::Schedule

@WeekString
曜日文字列配列
デフォルト値
('<font color="red">日</font>',
'月', '火', '水', '木', '金',
'<font color="blue">土</font>');
$ContentTemplate
各予定のテンプレート
デフォルト値
qq(<li><strong>%month/%day%week</strong> 
%content</li>\n);
$BeginTemplate
予定を囲むテンプレート(開始)
デフォルト値
"<ul>";
$EndTemplate
予定を囲むテンプレート(終了)
デフォルト値
"</ul>";

ToDo

package HNS::PIM::Todo;

$ContentTemplate
各項目のテンプレート
デフォルト値
"<li><strong>%priority</strong>%content</li>\n";
$BeginTemplate
Todo リストを囲むテンプレート(開始)
デフォルト値
"<ul>";
$EndTemplate
Todo リストを囲むテンプレート(終了)
デフォルト値
"</ul>";

カレンダー

テーブル使用

package HNS::Calendar::Table;

@WeekString
曜日文字配列
デフォルト値
('<font color="red">日</font>',
'月', '火', '水', '木', '金', 
'<font color="blue">土</font>');
$TableBorder
表枠
デフォルト値 0
$NextTemplate
来月へのリンク.%year は年へ,%month は月へ変換されます.
デフォルト値
qq(<a href="$HNS::System::MyDiaryURI?%year%month">来月</a>);
$DayCurrentTemplate
現在表示されている日記へのカレンダーからのリンク. %ruri は $ENV{'REQUEST_URI'} に,%{ymd} は YYYYMMDD に, %calendar_day は日に変換されます.
デフォルト値
qq(<a href="%ruri#%{ymd}0">%calendar_day</a>);
$DayNonCurrentTemplate
現在表示されていない日記へのカレンダーからのリンク。 %hrefは日記のURLに変換されます。
デフォルト値
qq(<a href="%href">%calendar_day</a>);

スタイル

package HNS::Style;

$Templates{Table}->{pim}
スタイルTable の PIM 表示テンプレート. %schedule は予定表示に,%todo は ToDo表示に変換されます.
qq(
<hr>
<tablt summary="pim" width="100%">
<tr>
 <th align="left">予定</th>
 <th align="left">TODO</th>
 <th align="left">Link</th>
</tr>
<tr>
 <td valign="top">
 %schedule
 </td>
 <td valign="top">
 %todo
 </td>
 <td valign="top">
 %link
 </td>
</tr>
</tablt>
);
$Templates{Table}->{head_style}
スタイルTable のヘッダ・レイアウトのテンプレート.%pim は $Templates{Table}->{pim} で定義した内容となります.
qq(
%pim
<hr>
<table summary="calendar">
<tr>
<td rowspan="2" valign="top">
%calendar
</td>
<td valign="top">
%unagi
</td>
</tr>
<tr>
<td valign="bottom">
%direct_calendar
</td>
</tr>
</table>
<hr>
);

1日分ヘッダ/フッタ・テンプレート

package HNS::Diary

$Head
日記の日付表示部分.%year は年へ,%month は月へ,%high は日の十の位に,%{day} は日に,%week は曜日に,%user{HOGE} はユーザ変数HOGE へ変換されます.
デフォルト値
qq(
<h2><a class="hide" href="%href" [実際は1行]
name="%name">%year年%month月%day日(%week)</a>
[<a href="$HNS::System::MyDiaryURI?%month%day">n年日記</a>]</h2>
);
$UserVar
ユーザ変数の内容を表示。
デフォルト値
qq(<div class="uservar">
 %user{TENKI}%user{BASHO}%user{TAIJU}%user{TAION}%user{SUIMIN}
 %user{BGM}%user{HOSU}%user{HON}%user{KITAKU}%user{WALK}%user{RUN}%user{YOTEI}
</div>);
$Foot
1日分の終了
qq(<hr>\n);

コマンド・テンプレート

package HNS::Hnf::Command::NEW

$Template
NEW のテンプレート.%new は当該セクションのセクションID に %cat は カテゴリー表示(アイコン表示)に,%content は当該セクションの内容に変換されます.
デフォルト値
qq(
<h3 class="new"><a class="hide" name="%name" title="%name" href="%href">#%mark</a>
%cat %content</h3>
<div class="section">\n);
$EndTemplate
NEW の終了テンプレート。%boardlinkは、board.cgi使用時にboard.cgiへの リンク文字列に、%boarddataは掲示板情報の本文埋め込みに置き換えられます(使用しない時はなくなります)。
デフォルト値
"</div>%boarddata %boardlink<!-- end of NEW -->\n";

掲示板機能

package Board;

$ReadStr
その記事に対するコメントへのリンクの文字列です。%numは記事数に置き換えられます。
デフォルト値
'コメントを読む(%num)';
$SepStr
デフォルトでは$ReadStrと$WriteStrの間に表示される文字列です。 設定ファイルで$HideReadLinkWhenNoMsgに1が指定されていて、 日記記事に対する掲示板記事がない場合は$ReadStrも共に表示されません。
デフォルト値
'|';
$WriteStr
その記事に対するコメントを投稿する画面へのリンクです。
デフォルト値
'コメントする';
$LinkStr
掲示板への読み込み、書き込みのリンク文字列です。この文字列がテーマ中の%boardlinkの場所に入ることになります。
デフォルト値
'<div class="boardlink" align="right">[ %readstr %sepstr %writestr ]</div>';
$HeadStr
本文中のコメントが埋め込まれた部分の先頭に表示される文字列です。
デフォルト値
'<h4 class="comment">この記事へのコメント</h4>';

ハイパー日記システム Version 2.10


Index