- スキンの作り方 - details
- スキン概要 (6)
- HTML テンプレート (7)
- 動作設定 『skin.cgi』 (7)
- そのほか、補足とか。 (2)
sys.css
2006.05.03 水曜日
このファイルは、その他ページで使用する『カスケーディング・スタイル・シート(CSS)』です。
実際に中を見たほうが分かりやすいでしょう。
カスタマイズできることは多くありませんので、オプション程度のものだと思ってください。
実際に中を見たほうが分かりやすいでしょう。
カスタマイズできることは多くありませんので、オプション程度のものだと思ってください。
テンプレート内で外部ファイルを使用する
2006.05.03 水曜日
テンプレート内で、独自の画像ファイルやCSSファイルなど外部ファイルを使用する(参照する)場合、 直接参照せずにスキンディレクトリを示す !skindir! を使うことをオススメします。 これでユーザがスキンディレクトリを変更した場合にも対応できます。
<img src="!skindir!/img/test.gif">
<link href="!skindir!/style.css"> など。
<link href="!skindir!/style.css"> など。
エントリのソート
2006.05.03 水曜日
main.html では、エントリを並び替えて表示させることができます。『ソート』とは、ある1つの項目を「種」に、任意の規則でエントリを並び替える機能です。
ランクとは異なり、ランクは絶対的なソートであるのに対し、ソートは一時的なものです。
config.cgi の $default_sort にて標準のソートを設定することができますが、ここに設定する書式も同じものです。
main.html でエントリをソートさせたい場合、ソートの実行ボタンとメニューを main.html 内に置く必要があります。 ソートの「種」に使える項目は標準のものに加え、 skin.cgi で設定した項目も対象にすることができます。
以下が、ソートフォームの HTML 記述例です。
注目するポイントは、<option> タグに指定している value の値です。 これがソートさせる形式で、ここを変更することで任意の規則でソートさせることができます。
date_fig_z を分解すると「date」は日時で、「fig」は数字として、「z」は降順で、 つまり「日時を対象に、数字と判断して降順でソートする」ということになります。 ソート形式には標準で以下が指定できます。
1つめの規則
$name{'read'} の項目を対象にしたいのであれば、「read」と指定するだけです。
2つめの規則
3つめの規則
ランクとは異なり、ランクは絶対的なソートであるのに対し、ソートは一時的なものです。
config.cgi の $default_sort にて標準のソートを設定することができますが、ここに設定する書式も同じものです。
main.html でエントリをソートさせたい場合、ソートの実行ボタンとメニューを main.html 内に置く必要があります。 ソートの「種」に使える項目は標準のものに加え、 skin.cgi で設定した項目も対象にすることができます。
以下が、ソートフォームの HTML 記述例です。
<form action="!script!">
<input type="submit" value="ソート">
<select name="sort">
<option value="date_fig_z">新しい順</option>
<option value="no_fig_a">登録順</option>
</select>
</form>
<input type="submit" value="ソート">
<select name="sort">
<option value="date_fig_z">新しい順</option>
<option value="no_fig_a">登録順</option>
</select>
</form>
注目するポイントは、<option> タグに指定している value の値です。 これがソートさせる形式で、ここを変更することで任意の規則でソートさせることができます。
date_fig_z を分解すると「date」は日時で、「fig」は数字として、「z」は降順で、 つまり「日時を対象に、数字と判断して降順でソートする」ということになります。 ソート形式には標準で以下が指定できます。
1つめの規則
- no
- エントリ番号を対象に
- rank
- ランク名を対象に
- date
- 更新日時を対象に
- name
- 名前を対象に
$name{'read'} の項目を対象にしたいのであれば、「read」と指定するだけです。
2つめの規則
- fig
- 数値として
- txt
- 文字列として(文字コード順)
3つめの規則
- a
- 昇順でソートする
- z
- 降順でソートする
スキンの動作設定 skin.cgi
2006.05.02 火曜日
rgt.cgi、main.html、reg.html、edit.html はこのファイルをベースにして動きます。
使うことのできる項目はこのファイルで管理されていて、用意したい項目や項目の名前はここで設定します。 (項目とは「コメント」や「特技」などのことです)
要点を絞って解説します。
スキンの名前・バージョンなど
主に RGT が、今どのような名前のスキンを使用しているか、判断するためのものです。
あまり神経質にここを変える必要はないと思います。
main.html で使用できるタグ !ver! で表示されるテキストです。
登録できる画像のサイズ設定
(横幅、縦幅) ピクセル数指定です。
曜日のテキスト設定
main.html で使用できるタグ !wd! で表示される日時(曜日)のテキストです。
日曜から土曜日まで。
月のテキスト設定
main.html で使用できるタグ !mon! で表示される日時(月)のテキストです。
1月~12月まで。
日時の数値設定
main.html で使用できるタグ !mo! !da! で表示される半角数字の日時(月、日)が10 より小さいとき、先頭に 0 を付けます。(0=付けない 1=付ける)
使うことのできる項目はこのファイルで管理されていて、用意したい項目や項目の名前はここで設定します。 (項目とは「コメント」や「特技」などのことです)
要点を絞って解説します。
スキンの名前・バージョンなど
主に RGT が、今どのような名前のスキンを使用しているか、判断するためのものです。
あまり神経質にここを変える必要はないと思います。
main.html で使用できるタグ !ver! で表示されるテキストです。
$ver = 'スキンの名前、バージョンなど';
登録できる画像のサイズ設定
(横幅、縦幅) ピクセル数指定です。
@maxsize = (500, 120);
曜日のテキスト設定
main.html で使用できるタグ !wd! で表示される日時(曜日)のテキストです。
日曜から土曜日まで。
@weekdays = ('SUN','MON','TUE','WED','THU','FRI','SAT')
月のテキスト設定
main.html で使用できるタグ !mon! で表示される日時(月)のテキストです。
1月~12月まで。
@month = ('Jan', ~ ,'Dec')
日時の数値設定
main.html で使用できるタグ !mo! !da! で表示される半角数字の日時(月、日)が10 より小さいとき、先頭に 0 を付けます。(0=付けない 1=付ける)
$date_fig = '0';
エントリのランク
2006.05.02 火曜日
RGT では、エントリ(記事)にランク(例:役職等)を割り振り、ランクごとに並べて表示させることができます。
ページ表示時に、 @rank に設定された値の←(左側)のものから上位に並び、また各ランクの最大登録数を @rank_max にて設定できます。 main.html のテンプレート(エントリ部)をランクごとに変えることもできます。(詳細は『HTMLテンプレート』カテゴリ参照)
※注意!:ランクに使える文字は半角英数字に限定されます。
実際の使用例
上記のように設定した場合、エントリが「1.Guildmaster 2.Member」の順序に並べられ、 「最大登録数は GuildMaster が 1、 Member が上限なし(0=上限なし)」となります。
(上限なしであっても、config.cgi の $max を超える数は登録できません)
@rank = ('ランクA', 'ランクB') ;
@rank_max = ('ランクAの最大数', 'ランクBの最大数') ;
@rank_max = ('ランクAの最大数', 'ランクBの最大数') ;
ページ表示時に、 @rank に設定された値の←(左側)のものから上位に並び、また各ランクの最大登録数を @rank_max にて設定できます。 main.html のテンプレート(エントリ部)をランクごとに変えることもできます。(詳細は『HTMLテンプレート』カテゴリ参照)
※注意!:ランクに使える文字は半角英数字に限定されます。
実際の使用例
@rank = ('Guildmaster', 'Member') ;
@rank_max = ('1', '0') ;
@rank_max = ('1', '0') ;
上記のように設定した場合、エントリが「1.Guildmaster 2.Member」の順序に並べられ、 「最大登録数は GuildMaster が 1、 Member が上限なし(0=上限なし)」となります。
(上限なしであっても、config.cgi の $max を超える数は登録できません)
項目を決める
2006.05.02 火曜日
RGT では、項目は無制限に用意できます。
例えばこのように記述します。
こう記述すると、RGT は『項目名(タグ名)「age」・詳細名「年齢」という項目を1つ使う』と認識します。
ここで設定された項目は、main.html、reg.html、edit.html でタグとして使うことが出来ます。(この場合、!age! と ?age? が使用できるようになる)
skin.cgi
main.html、reg.html、edit.html
実際に表示されるページのHTML
と、このように利用します。
つまり skin.cgi、各テンプレートファイル、そして実際に表示されるページは関連しあっているわけです。『HTML テンプレート』のカテゴリもご覧になってください。
$name{'項目名(タグ名)'} .= '項目名(詳細)';
例えばこのように記述します。
$name{'age'} .= '年齢';
こう記述すると、RGT は『項目名(タグ名)「age」・詳細名「年齢」という項目を1つ使う』と認識します。
ここで設定された項目は、main.html、reg.html、edit.html でタグとして使うことが出来ます。(この場合、!age! と ?age? が使用できるようになる)
skin.cgi
...
$name{'age'} .= '年齢';
...
$name{'age'} .= '年齢';
...
▼
main.html、reg.html、edit.html
...
?age?( !age! )
...
?age?( !age! )
...
▼
実際に表示されるページのHTML
...
年齢( 15 ) (←15は登録されたデータの例です)
...
年齢( 15 ) (←15は登録されたデータの例です)
...
と、このように利用します。
つまり skin.cgi、各テンプレートファイル、そして実際に表示されるページは関連しあっているわけです。『HTML テンプレート』のカテゴリもご覧になってください。
選択メニューの項目
2006.05.02 火曜日
登録・変更フォームでは通常、各項目はテキストボックス <input type="text"> や テキストエリア <textarea></textarea> として使われますが、選択メニュー(<select>~</select>)として使う場合の記述です。
メニューの内容は半角の「,(コンマ)」で区切り追加していきます。
大量のメニューを作成する場合、
と分けて書くこともできます。
※この場合、メニュー内容は「項目A~項目I」となります。
規則的な数値で構成されるメニューを大量作成する場合、
とすることで楽に作成できます。 ただし、この扱いには注意してください。 あまりにも大量の選択肢を作成する場合、処理にとても時間が掛かり負荷も大きくなります。 選択肢数は多くても1000個以内に留めてください。 選択肢が多すぎると実際に選ぶときも面倒になるので、 普通にテキストボックスにした方がいい場合も多いはずです。
メニューの内容は半角の「,(コンマ)」で区切り追加していきます。
$menu{'項目名'} .= '項目A, 項目B, 項目C,';
大量のメニューを作成する場合、
$menu{'項目名'} .= '項目A, 項目B, 項目C,';
$menu{'項目名'} .= '項目D, 項目E, 項目F,';
$menu{'項目名'} .= '項目G, 項目H, 項目I,';
$menu{'項目名'} .= '項目D, 項目E, 項目F,';
$menu{'項目名'} .= '項目G, 項目H, 項目I,';
と分けて書くこともできます。
※この場合、メニュー内容は「項目A~項目I」となります。
規則的な数値で構成されるメニューを大量作成する場合、
$menu{'項目名'} .= '1_100+'; (1~100まで)
$menu{'項目名'} .= '100_1-'; (100~1まで)
$menu{'項目名'} .= '1_100+10'; (1~100まで+10ずつ)
$menu{'項目名'} .= '1_50+,50_1-'; (1~50までと50~1まで)
$menu{'項目名'} .= '1_50+,あ,い,う'; (1~50までと「あ」「い」「う」)
$menu{'項目名'} .= '100_1-'; (100~1まで)
$menu{'項目名'} .= '1_100+10'; (1~100まで+10ずつ)
$menu{'項目名'} .= '1_50+,50_1-'; (1~50までと50~1まで)
$menu{'項目名'} .= '1_50+,あ,い,う'; (1~50までと「あ」「い」「う」)
とすることで楽に作成できます。 ただし、この扱いには注意してください。 あまりにも大量の選択肢を作成する場合、処理にとても時間が掛かり負荷も大きくなります。 選択肢数は多くても1000個以内に留めてください。 選択肢が多すぎると実際に選ぶときも面倒になるので、 普通にテキストボックスにした方がいい場合も多いはずです。
フォーム内容の確認
2006.05.02 火曜日
登録・変更フォームでは各項目が正しく入力されているか調べる必要があります。 登録・変更の実行時に、どのようなチェックを行うかをここで設定します。 1 なら入力されているか確認します。(必須項目とする場合に設定します) 0 でオフです。 初期設定は 0 なので確認が不要な項目は記述しなくて構いません。
(0=オフ 1=項目が入力されているか?)
ただ、これでは簡単なチェックしか出来ないため、詳細なチェックを行いたい場合は、JavaScript などでチェックルーチンを自作された方がいいでしょう。
(0=オフ 1=項目が入力されているか?)
$check{'項目名'} = 1;
ただ、これでは簡単なチェックしか出来ないため、詳細なチェックを行いたい場合は、JavaScript などでチェックルーチンを自作された方がいいでしょう。
改行を残す項目
2006.05.02 火曜日
通常、データ登録時に全項目の改行を取り除いています。(データ保存上問題があるためです) しかし <textarea></textarea> の項目など(コメントとか)改行を残しておきたい場合もあります。 その場合、以下の記述をします。
(0=改行を取り除く 1=改行を残す)
(0=改行を取り除く 1=改行を残す)
$enter{'項目名'} = 1;
スクリプトを追加する
2006.05.02 火曜日
メインページの表示処理に、Perl スクリプトを追加することができます。
Perl の知識が必要ですので注意してください。 skin.cgi の中では自由に変数・サブルーチンなどを追加できます。 また、rgt.cgi 側の変数やサブルーチンを参照する場合、 名前空間が違うため(パッケージ化されているため)先頭に「 rgt:: 」を付加するようにしてください。 ほか、 $skindir でスキンディレクトリのパスが参照可能です。
具体例としては、リストスキンのようなことができます。
各サブルーチンの動作と実行タイミングは以下のとおりです。
いずれもメインページの表示処理時に実行されます。
member サブルーチンは、エントリが表示されるたびに実行されます。実際には表示されないエントリ時にも実行されます。(登録数分、実行されるということです)
Perl の知識が必要ですので注意してください。 skin.cgi の中では自由に変数・サブルーチンなどを追加できます。 また、rgt.cgi 側の変数やサブルーチンを参照する場合、 名前空間が違うため(パッケージ化されているため)先頭に「 rgt:: 」を付加するようにしてください。 ほか、 $skindir でスキンディレクトリのパスが参照可能です。
具体例としては、リストスキンのようなことができます。
各サブルーチンの動作と実行タイミングは以下のとおりです。
いずれもメインページの表示処理時に実行されます。
- sub header { ~ }
- ヘッダー部表示の直前に実行されます。
- sub member { ~ }
- エントリ部表示の直前に実行されます。
- sub footer { ~ }
- フッター部表示の直前に実行されます。
member サブルーチンは、エントリが表示されるたびに実行されます。実際には表示されないエントリ時にも実行されます。(登録数分、実行されるということです)