特に変更する必要のない設定は、
customize_dir/customize.ph にまとめられています。
customize.pl で対話的に設定を変更することができます。
customize.pl を実行してみましょう。
% pwd
/home/foo/public_html/diary
% perl customize.pl
すると,以下のように
分類が表示されます。
*** TDS Customizer ***
0: quit
1: IdentInfo
2: Represention
3: Parsing
4: i18n
5: Extend Fearture
6: System Setting
7: Admin Setting
分類を選択すると、
設定画面に移行します。
例えば、2. representation を選んだとすると、
input number [0]
>2
*** Representation ***
0: quit
1: allow all monthly access (No)
2: display number in recent output (3)
3: reverse topic in recent mode (Yes)
4: display neighbour number on access to specified day (0)
5: auto replace (Yes)
6: enable escaping in replacing (No)
7: style name ()
となりますので、
変更したい項目を選び、値を入力します。
input number [0]
>1
allow all monthly access [yN]: y
*** Representaion ***
0: quit
1: allow all monthly access (Yes)
...
以下、各項目について説明します。
何も入力せずただ Enter を入力すると,現在の設定をそのまま引き継ぎます。
1.1.IdentInfo
個人情報を設定します。
- Title of Diary
- 日記のタイトル
- Author Name
- 著者名
- mail address
- 著者のメールアドレス
- URL of diary
- 日記の URL
1.2.Representation
- allow all monthly access
- 月単位のアクセスを許すか。 N にすると、動的モードでは ./?200012 というアクセスを許さなくなります
(エラーが表示されます)。
静的モードでは d200012.html などの月単位の日記 HTML* を生成しません。
- display number in recent output
- カレント*で最新何日分を出力するか。
- reverse topic in recent mode
- カレント*で逆順表示をするか
- display neighbour number on access to specified day
- 動的モード時に ./CCYYMMDD とアクセスされた際、隣接する何日分の日記を表示するか。
./20000115 とアクセスされたとき,
0 だと 2000年01月15日分だけ、1 とすると前後一日分を含めて
2000年01月13日〜15日を表示します。
- auto replacing
- URL変換/用語変換/辞書変換をするか。
- enable escaping in replacing
- 自動変換対象文字列の直前に '\' を置くと置換を禁止するか。 \hoge と記述すると hoge が自動変換の対象であっても自動変換しません。
url.dat などとあわせて使用すると効果的です。
- style name
- スタイル名。各種スタイルが選べます。
- auto hyper linking
- http://, ftp:// で始まる語に自動的にリンクを張るか
- auto parse listing
- ・などから始まる行をリストと見做すか
- continue line by /\$/
- 行末に '\' を置くと継続行と見なすか。 Y にすると,
あいう\えお
と記述した際,日記 HTML* には
あいうえお
と改行を入れずに出力します。
- warn if reserved command used
- 予約コマンドを警告するか。行頭に空白があれば警告しません(予約コマンドと見なされなくなるため)。
- show warning only in author access
- 警告を著者アクセス*の時のみ表示するか
- jcode of tdf file
- tdf ファイル*の漢字コード。 undef と指定すると自動判別します。
euc にするとコード変換を行わなくなるため若干動作が速くなります。
- output jcode
- 出力するときの漢字コード。
1.5.Extend Feature
- max display number as Schedule
- 予定表に最大何件出力するか。
- max display number as Todo
- Todo リストに最大何件出力するか。
- future limit on display
- 現在日時からみて何ヶ月先までの予定を出力するか。 2000年01月15日時点でこの項目が 2 となっていると,
2000年03月15日までの予定のみ表示します。
- future limit on display (specified by asta)
- * 指定をした Schedule data の場合,最近何個までを出力するか。 2000年01月15日時点でこの項目が 2 となっていると,
"*/*/18 毎月定例飲み会" とした場合,
2000/01/18 と 2000/02/18 の予定のみ表示します。
- allow all search to non-author
- Author 以外でも全ての日記への検索を許可するか。全日記への access が server への負荷となるため,
default では n となっています。
- use signature search method
- シグネチャ法を使用した検索を行うか?。シグネチャ法を使用すると検索が速くなりますが,その分ディスクスペースを
必要とします。
- signature directory
- シグネチャ法を利用する際に使用するディレクトリ。
- mail2tdf: signature string
- mail2tdf 用のメールで、それ以下をカットするための署名の始まり文字列
- mail2tdf: additional acceptable mail-address
- mail2tdf を受け取るメールアドレス(群)。著者アドレスに指定したもの以外を、カンマ区切りで入力します。
1.6.System Setting
- directory which HTML file is located
- 静的にて HTML ファイルが置かれるディレクトリ
- hostname lookup
- アクセスログを取る際、IP アドレスからホスト名を探索するか。
- logging rejected agent
- 拒否したアクセスのログを取るか
- logging robot agent
- ロボットアクセスのログを取るか
- cookie expire
- クッキー有効期限。+1y, +1m, +1d などと指定してください。
- cache survival period
- キャッシュ生存期間。日にちで指定します。
1.7.Administration
- enable password system without authorized ID
- authorizd ID を使用せずに管理するか。 Y にすると,クッキーを使用せずパスワードのみで各種管理が行えるようになります。
- enable customizer.cgi
- customizer.cgi を有効にするか
- FTP server name
- FTP を使用するときのサーバ名
- diary dir on server
- サーバ上の diary dir。絶対パスで指定すること
- web dir on server
- サーバ上の web diary dir。絶対パスで指定すること
- customize dir on server
- サーバ上の customize dir。絶対パスで指定すること
- user name on ftp server
- ftp server 上のユーザー名
- write method to server
- webからの更新の手段として何を使うか:auto, direct, ftp のどれか
- user name on ftp server
- ftp server のユーザ名
出力される HTML の雛形をカスタマイズする方法を説明します。
TDSは、指定された雛形ファイル(skelton.html など)を元に、
要求された日記ファイルを整形、表示します。
<!--#macro cmd="CONTENT" --> のように、
SSIに似た記法でマクロを埋め込みます。
<html>
<head>
<title><!--#macro cmd="TITLE" -->:<!--#macro cmd="EXPLAIN" --></title>
</head>
<body>
<h1><!--#macro cmd="TITLE" -->:<!--#macro cmd="EXPLAIN" --></h1>
<!--#macro cmd="DIARY_CONTENT" --></body>
</head>
のような skelton.html があった場合、
TITLE, EXPLAIN, DIARY_CONTENT の場所に、
要求に基づいた適当な文字列を挿入します。
<html>
<head>
<title>ほげ日記:最新版</title>
</head>
<body>
<h1>ほげ日記:最新版</h1>
<hr>
<h2>1999/07/01</h2>
<h3>テスト</h3>
<p>
ほげほげ
</p>
</body>
</head>
使用できるマクロについて説明します。
<!--#macro cmd="MACRO_NAME" var="VALUE" -->
という形式で指定します。
- DIARY_CONTENT or CONTENT
- 日記本体。
- NUMBER_OF_DIARY
- 表示された日数。
- TITLE
- 日記タイトル
- EXPLAIN
- 表示している日記の説明(最新版、何年何月分など)。
- LAST_MODIFIED var="format"
- 最終更新時刻。format で出力フォーマットを指定。 format は以下のとおり(web_diary_dir*/lib/DateTime/Format.pm から抜粋)。
%% |
PERCENT |
%a |
day of the week abbr |
%A |
day of the week |
%b |
month abbr |
%B |
month |
%c |
ctime format: Sat Nov 19 21:05:57 1994 |
%d |
numeric day of the month |
%e |
DD |
%D |
MM/DD/YY |
%h |
month abbr |
%H |
hour, 24 hour clock, leading 0's) |
%I |
hour, 12 hour clock, leading 0's) |
%j |
day of the year |
%k |
hour |
%l |
hour, 12 hour clock |
%m |
month number, starting with 1 |
%M |
minute, leading 0's |
%n |
NEWLINE |
%o |
ornate day of month -- "1st", "2nd", "25th", etc. |
%p |
AM or PM |
%r |
time format: 09:05:57 PM |
%R |
time format: 21:05 |
%s |
seconds since the Epoch, UCT |
%S |
seconds, leading 0's |
%t |
TAB |
%T |
time format: 21:05:57 |
%U |
week number, Sunday as first day of week |
%w |
day of the week, numerically, Sunday == 0 |
%W |
week number, Monday as first day of week |
%x |
date format: 11/19/94 |
%X |
time format: 21:05:57 |
%y |
year (2 digits) |
%Y |
year (4 digits) |
%Z |
timezone in ascii. eg: PST |
%z |
timezone in format -/+0000 |
- TDS
- 使用している TDS、TDS home page へのリンク
- TDS_BANNER
- TDSホームページへのバナー
- VERSION
- 使用している TDS のヴァージョン
- DIARY_URL
- 日記の URL
- BASE_URL
- DIARY_URL からパス部を抽出したもの
- CHARSET
- キャラクターセット(iso-2022-jp, euc-jp, shift_jis,us-ascii のどれか)
- MAIL_ADDRESS
- 著者のメールアドレス
- MAILTO var=text
- 著者への mailto
- AUTHOR_NAME
- 著者の名前
- YEAR, MONTH
- 表示された日記の年、月
- EXIST_YEARS
- 日記が存在する年の範囲:1995-1999 などと表示する
- COUNTER
- カウンターを表示。全アクセス/今日のアクセス(訪問回数) という書式
- COUNTER_ALL, COUNTER_TODAY, COOKIE_TIMES
- 全アクセス、今日のアクセス、訪問回数。
1.00-alpha2 より COUNTERコマンドに統合されました。1.00-beta2 より、動的モードの場合のみ復活しました。
静的モードでは警告がでます。
最新版のみ表示します。
- TODO
- Todo リスト
- SCHEDULE
- 予定表
- RECENT var=text
- 最新版へのリンク
- (NEXT,PREV,THIS)_MONTH var=text
- 次、前、今月の日記へのリンク
- SELECT_YEAR_MONTH
- ジャンプする年月の選択オプション
- SELECT_(JUN,PART)
- ジャンプする旬の選択オプション
- SELECT_CATEGORY
- ジャンプするカテゴリの選択オプション
- SUMBIT_JUMP var=label
- ジャンプのサブミットボタン
- SUMMARY var=text
- 日記一覧へのリンク
- CALENDAR
- カレンダー
CGIが使える設定の時のみ表示します。
- SEARCH_INPUT_KEYWORD
- 検索語入力ボックス
- SEARCH_SUBMIT var=label
- 検索サブミットボタン
- SEARCH_RESULT
- 検索により見つかった日記数
- SEARCH_SELECT_OBJECT
- 検索対象の選択オプション
- SEARCH_SELECT_SORT
- 検索結果を表示する順番の選択オプション
- SEARCH_CHECKBOX_TITLEONLY var=text
- タイトルのみ表示するチェックボックス
- SEARCH_CHECKBOX_UNUSE_SIGNATURE_METHOD var=text
- シグネチャ法を不使用にするチェックボックス
CGIが有効な設定の時のみ表示します。
- COMMENT_INPUT_NAME
- 名前の入力ボックス
- COMMENT_INPUT_CONTENT
- 一言の内容の入力ボックス
- COMMENT_SUBMIT var=label
- 一言サブミットボタン
- COMMENT_SHOW var=num
- 一言を最新順に表示
- COMMENT_COOKIE_OK var=text
- 名前をクッキーで食わせるか
- URL_LIST var=text
- 置換リストへのリンク
- AUTHOR_MANAGEMENT var=text
- 著者管理へのリンク
- TDF_EDITOR var=text
- tdf_editor へのリンク
- LOG_ANALYSE var=text
- アクセスログ解析へのリンク
- POWER
- ヲレパワーグレードへのリンク
- TOC_*
- 目次機能は、1.00-alpha2 より廃止されました
- CHARSET
- charset
- CAPTURED_ANTENNA
- 補足アンテナ表示
特定の意味を持つ表示部(PIM,一言など)の範囲を次のような書式で指定します。
<!--#begin cmd="PIM" -->
...
<!--#end cmd="PIM" -->
- PIM
- Personal Information Management。TODOリスト、スケジュールの表示部を囲みます。
最新版のみ表示します。
- COMMENT
- 一言機能の表示部を囲みます。最新版のみ表示します。
- SEARCH
- CGIが可能な時のみ表示:<form action="search.cgi" method="post">, </form> に変換
4.1.テンプレートとは?
4.2.コマンドテンプレート
NEW メンテ
CAT TDS
久しぶりに TDS のメンテ。
template だけで済ますのはアレなので、
TDS::StringTable.pm 作って、
GetText() で呼び出すようにした。
ドキュメントもしこしこ補完。
cake さんとこのスタイルを作ってみたり。
LINK /~tom/tds_test/ ちょっとテストしてみる。
などの tdf を、どのように HTML に展開するかのテンプレートを指定します。
デフォルトの template.ph では、
package TDS::Tdf::Command::DIARY;
$Template = qq(<h2><span class="tds-date"><a href="%href" name="%anchor">%date</a></span></h2>\n);
$EndTemplate = "<hr>\n";
$DateFormat = "%year/%month/%day(%week)";
package TDS::Tdf::Command::NEW;
$Template = qq(<h3 class="tds-title"><a name="%anchor" href="%href">%mark</a>%cat %ext_attrs</h3>\n<div class="tds-content">);
$EndTemplate = "%footnote</div>\n";
$Mark = "○";
package TDS::Tdf::Command::SUB;
$Template = qq(<h4><span class="tds-subtitle"><a name="%anchor" href="%href">%mark</a> %ext_attrs</span></h4>\n);
$EndTemplate = "";
$Mark = "_";
となっているため、上記 tdf は、
<h3><span class="tds-title"><a name="03-4" href="?19990903#03-4"><img src="image/ball.gif" alt="○" border=0 height=16 width=16></a>[TDS] メンテ</span></h3>
<p >久しぶりにTDS のメンテ。
template だけで済ますのはアレなので、
TDS::StringTable.pm 作って、
GetText() で呼び出すようにした。
ドキュメントもしこしこ補完。
</p>
<p >cake さんとこのスタイルを作ってみたり。
<a href="/~tom/tds_test/">ちょっとテストしてみる。</a></p>
と変換されます。
- $Template
- 開始コマンドテンプレート
- $EndTemplate
- 終了コマンドテンプレート
- $Mark
- マークテンプレート。%mark に展開される
- $DateFormat(DIARY コマンドのみ)
- 日付表示フォーマット。%date に展開される
- $HrefTemplateDynamic
- 動的モードでのリンクテンプレート。%href に展開される
- $HrefTemplateStatic
- 静的モードでのリンクテンプレート。%href に展開される
- $Anchor
- アンカーテンプレート。%anchor に展開される
設定文字列内で使用できるパラメータについて説明します。
- %year,%month,%day,%y,%m,%d
- 対象日記の年月日
- %Year,%Month,%Day,%Y,%M,%D
- 対象日記の年月日の 2byte 表示
- %0m, %0d
- 対象日記の月日。2 桁の zero-padding。
- %week
- 対象日記の曜日の英語表記(Sun,Mon,Tue...)
- %Week
- 対象日記の曜日の日本語(日、月、火、、、)
- %week_holy
- 対象日記の曜日の英語表記。日曜、祝日なら赤で囲む
- %Week_holy
- 対象日記の曜日の日本語表記。日曜、祝日なら赤で囲む
- %part,%jun
- 対象日記の旬 ('a', 'b', 'c' 表記)
- %high
- 日の一桁目:14 なら 1、23 なら 2、4 なら 0
- %href
- リンク先の URL。静的・動的モード、対象コマンドに合わせて適切に展開されます。
- %anchor
- アンカー
- %1,%2,%3,%4
- 第n引数
- %ext_attrs
- 拡張属性
- %new
- NEW のカウンタ
- %sub
- SUB のカウンタ
- %fn
- FN のカウンタ
- HD
- %hd_counter
- 2.2.1 などの章、節番号
- DIARY
- %date
- 日付
- CAT
- %var
- カテゴリーの値
- NEW
- %mark
- マーク
- %cat
- カテゴリ
- SUB
- %mark
- マーク
- IMG
- %width,%height
- 指定した画像の幅、高さ
4.3.表示説明文テンプレート
現在表示されている分についての説明のテンプレートです。
具体的には、「最新分」、「月別」、「旬別」、「日別」です。
- $Recent
- 最新分の説明
- $Month
- 月別分の説明
- $Part
- 旬別分の説明
- $Day
- 日別分の説明
- $EachPart
- それぞれの旬の説明。"すべて,上旬,中旬,下旬" などとカンマで区切る
- $Search
- 検索の場合の説明
- %num
- 最新分表示数
- %year,%month,%day,%part
- (略)
- %keyword
- 検索語
4.4.TODO テンプレート
- $ContentTemplate
- 各アイテムのテンプレート
- $BeginTempate
- 開始テンプレート
- $EndTempalte
- 終了テンプレート
- $Delim
- 優先度と内容を区切るデリミタ。%delim に展開
- $NormalColor
- 通常優先度の文字色
- $EmphasisColor
- 強調優先度(80以上)の文字色
- $StrongColor
- 再強調優先度(90以上)の文字色
- %priority
- 優先度
- %content
- 内容
- %delim
- 区切り
- %color
- 文字色
4.5.予定表テンプレート
package TDS::PIM::Schedule;
- $ContentTemplate
- 各アイテムのテンプレート
- $BeginTempate
- 開始テンプレート
- $EndTempalte
- 終了テンプレート
- $Delim
- 優先度と内容を区切るデリミタ。%delim に展開
- $TodayColor
- 今日分の予定の文字色
- $NormalColor
- 通常の文字色
- %year,%month,%day,%week,%week_holy
- (略)
- %content
- 内容
- %delim
- 区切り
- %color
- 文字色
4.6.マクロテンプレート
各マクロの表示ラベルのテンプレート。
マクロ名と同一。
$LAST_MODIFIED = "%a, %d %b %Y %H:%M:%S %Z";
$RECENT = "[最新版]";
$REFRESH = "[更新]";
$NEXT_MONTH = ">>";
$PREV_MONTH = "<<";
$THIS_MONTH = "==";
$SUBMIT_JUMP = "ジャンプ";
$SUMMARY = "[一覧]";
$CATEGORY = 'ALL';
$SEARCH_SUBMIT = "検索";
$SEARCH_RESULT = "<p>%diary 日 %num 件の日記にマッチしました</p>";
$SEARCH_SELECT_SORT = "新しい順,古い順";
$SEARCH_SELECT_OBJECT = "指定した月,最近3ヶ月,最近一年,すべて";
$AUTHOR_MANAGEMENT = "[著者管理]";
$TDF_EDITOR = "[TdfEditor]";
$URL_LIST = "[URL リスト]";
$DICTIONARY = "[辞書]";
$LOG_ANALYSE_ANCHOR = "[アクセス解析]";
$COMMENT_SUBMIT = "送る";
$COMMENT_SHOW_ALL_SUBMIT = "過去のを表示";
一覧表示のためのテンプレート。
- $YearTemplate
- 年始め
- $YearEndTemplate
- 年終わり
- $MonthTemplate
- 月へのリンク
- $MonthNolinkTemplate
- $TDS::System::AllowAllMonthly = 0 の時の月へのリンク
- $MonthEndTemplate
- 月終わり
- $PartTemplate
- 旬別へのリンク
- $PartTemplateNone
- 日記が存在しない旬へのリンク
- $PartEndTemplate
- 旬終わり
- $EachPart
- 旬の説明: "上旬,中旬,下旬"
- $MonthlyHrefTemplateDynamic
- 月への href(動的)
- $MonthlyHrefTemplateStatic
- 月への href(静的)
- $PartlyHrefTemplateDynamic
- 旬への href(動的)
- $PartlyHrefTemplatestatic
- 旬への href(静的)
4.8.カウンターテンプレート
package TDS::AccessLog::Counter;
- %all
- 全アクセス数
- %today
- 今日のアクセス数
- %times
- 訪問回数
- $DefaultComment
- デフォルトのコメント内容
- $CommentItemTemplate
- 各アイテム(名前とコメント分のセット)の表示テンプレート
- $CommentShowTemplate = qq(<table summary="comment" border=1>%content</table>\n);
- コメント全体の表示テンプレート
- %name
- 書込んだ人の名前
- %comment
- コメント文
- %content
- コメント中身全体
- $TableBorder
- テーブルの幅
- @WeekString
- 曜日文字列配列
- $NextTemplate
- 次月へのリンクラベル
- $PrevTemplate
- 先月へのリンクラベル
- $ThisTemplate
- 今月へのリンクラベル
- $HrefTemplateShowed
- 現在表示されている日へのリンクラベル
- $HrefTemplateUnshowedDynamic
- 現在表示されていない日へのリンクラベル(動的)
- $HrefTemplateUnshowedStatic
- 現在表示されていない日へのリンクラベル(静的)
- $UseTable
- カレンダーとして <table> を使用するか。'auto' とすると UA によって自動判別する
- @NoTableBrowsers
- 上記自動判別の際、<table> を使用しない UA の配列。デフォルトでは qw(lynx w3)。
4.11.template.ph による設定
以上の設定を template.ph に書くことによって反映されます。
必ずファイルの末尾に
1;
をつけてください。
詳しくはサンプルの template.ph を見てください。
多分そっちのほうが早いでしょう。
4.12.skelton.html による設定
(注意)0.01系での <!--#config name=value --> 形式のテンプレート設定は、
将来的に廃止されます。
template.ph による設定に移行してください。
すべての tdf コマンド*のテンプレートを
<!--#config new_template="<dt>%y%m%d</dt><dd>" -->
などのように指定する事が出来ます。
コマンド名は小文字で指定して下さい。
終了タグは、
<!--#config new_end_template="</dd>" -->
と _end をつけます。
指定できるパラメータは、
使用できるパラメータをご覧ください。
その他に、
- date_format
- 日付フォーマット。$TDS::Tdf::Command::DIARY::DateFormat にセット
- new_mark, (topic_mark)
- トピック*(NEW) につけるマーク。$TDS::Tdf::Command::NEW::Mark にセット
- sub_mark
- サブトピック*(SUB)につけるマーク。$TDS::Tdf::Command::SUB::Mark にセット
を指定できます。
なお、0.01 系の date_h_level, add_paragraph_anchor, use_title は
廃止されました。
デフォルトでは、
日付、トピック*、サブトピック*は、それぞれ
tds-date,tds-title,tds-subtitle というクラス名で囲われています。
CSSなどでご自由に設定して下さい。
通常カスタマイズは
web_diary_dir* 以下の
- skelton.html
- summary_skelton.html
- dictionary_skelton.html
- template.ph
によって行いますが、
これらのカスタマイズファイル群を「スタイル」としてまとめ、
スタイル名をつけることにより、
いくつものカスタマイズ群を使い分ける事ができます。
例えば、
web_diary_dir*/styles/tom を生成し、
そこに skelton.html などを置き、
customize.ph で $TDS::Style::Name = q(tom); とすると、
実際に使用されるのは
web_diary_dir*/skelton.html ではなく、
web_diary_dir*/styles/tom/skelton.html になります。
標準添付のスタイルは、
- japanese: 日本語
- simple: 単純
- hns: hns like
- tom: 私の
- cake: cake さんの
- tak3: 武井さんの
- t-hermes: T-HERMES さんの
の五つです。