# テーマで使用できる変数

注意: 以下のドキュメントはテーマで使用できる変数のすべてではなく、サイトのヘッダと記事のテンプレートで使用されている変数のみに限った説明です。

## 概要

Geeklogでは、PHP Base Library（別名、PHPlib）のテンプレートエンジンを使用しています。このライブラリでは、テンプレートの中でいわゆる変数を使用できます。変数とは、 `{variable}` のように、カギ括弧{}で囲まれた単語のことです。GeeklogがWebページを表示するとき、テンプレートに含まれる変数をある値で置き換えます。変数には静的な文字列（つまり、いつも同じ文字列に置き換えられます）や動的なコンテンツ（たとえば、記事に寄せられたコメントの数や記事の全文）、別のテンプレートファイルの中身（たとえば、リスト用に使用されます）を保持することができます。

すべてのテンプレートですべての変数が利用できるわけではないことに注意してください。サイトのURLを保持する `{site_url}` 変数はほとんどのテンプレートファイルで利用できますが、多くの変数は1つのテンプレートファイルの中でしか利用できません（たとえば、 `{formatted_article}` 変数は、 `article.thtml` テンプレートファイルの中でしか利用できません）。現在のテンプレートに対して定義されていない変数は自動的に削除されます（つまり、空白で置き換えられます）。未定義の変数を使用しても、エラーや警告は発生しません。

訳注：テンプレートクラスのオブジェクトを作成するときに、

`$template = new Template($root, "keep");`

のように、コンストラクタの第2引数に "keep" を指定すると、未定義の変数はそのまま残されます。デバッグ用に使えるかもしれません。

## サイトのヘッダ

以下の変数はサイトのヘッダ、つまり、 `header.thtml` テンプレートファイルで使用できる変数です。

変数名 | 例 | 説明
--- | --- | ---
`site_url` | `http://www.example.com` | 自分のGeeklogサイトのURL（コンフィギュレーションの `$_CONF['site_url']` で設定したものと同じ）。
`layout_url` | `http://www.example.com/layout/professional` | ユーザが現在使用しているテーマディレクトリのURL。
`page_title` | Geeklog Site - Another Nifty Geeklog Site | サイト名及びスローガンと、現在の記事のタイトル。
`background_image` | `http://www.example.com/layout/ XSilver/images/bg.gif` | 現在のテーマの `images` ディレクトリ内の `bg.gif` を指している。背景画像として使用することを想定している。
`site_mail` | `admin@example.com` | ユーザがサイトの管理者と連絡を取るときに使用するEメールアドレス。スパムの問題があるため、サイトでこのアドレスを表示する代わりに、管理者にメールを送信するフォームへのリンクを提示することを勧める。つまり、 `{site_url}/profiles.php?uid=2` （2 はこのEメールを受け取るユーザのIDで、ふつう、サイト管理者である）のようにする。
`site_name` | Geeklog Site | サイト名
`site_slogan` | Another Nifty Geeklog Site | サイトのスローガン
`welcome_msg` | Welcome to Geeklog Site | 「ようこそ」のメッセージで、登録ユーザの場合は、この後にユーザ名が続く。
`datetime` | Thursday, November 28 2002 @ 11:43 AM PST | 現在の日付と時刻で、 `$_CONF['date']` に従ってフォーマットされる。
`site_logo` | `http://www.example.com/layout/ professional/images/logo.png` | 現在のテーマの `images` ディレクトリ内にあるロゴ画像を指し、ロゴとして表示されることを想定している。ふつう、GIF画像(`logo.gif`)であるが、画像タイプはテーマごとに変更することができる（たとえば、Professionalテーマでは、PNG画像を使用しているので、ロゴは `logo.png` になっている）。 訳注：画像タイプを変更するには、テーマの `functions.php` 内で、 `$_IMAGE_TYPE = 'png';` のように定義する。もちろん、画像は自分で差し替えること。
`css_url` | `http://www.example.com/layout/ professional/style.css` | 現在のテーマのスタイルシートを指す。
`theme` | professional | 現在のテーマ名。
`charset` | iso-8859-1 | 現在の言語ファイルの文字セット。
`lang_id` | `en-GB` | サイトで使用されている言語を表すID。理想を言えば、これはISOの国/言語コードで、たとえば、イギリス英語なら en-GB となるべきである。多言語サポートが有効になっている場合、この変数の値は `$_CONF['languages']` 配列で使用されている言語ショートカット(ID)の値になる。それ以外の場合は、 `$_CONF['locale']` から導き出されるが、ある程度の推測が含まれる。後者の場合、サイトのOSがUnix系でなければ（有効なISOコードではないので）、結果として、 German のような値になることもある。
`lang_attribute` | `lang="en-GB"` | サイトないし現在のページの言語を示すため、HTMLヘッダ内で
    <html {lang_attribute}>
のような形で使用されるHTML言語属性(HTML lang attribute)とその値。サイトの言語IDが有効な言語コードでないように思える場合（上述の `{lang_id}` 変数の説明を参照のこと）、この変数は空、つまり、セットされないことに注意。
`feed_url` | `<link rel="alternate" type="application/rss+xml" hreflang="en-gb" href="http://www.example.com/backend/geeklog.rss" title="RSS Feed: Geeklog">` | 現在のページと関連するすべてのRSSフィードへのリンク（フィードエディタの「RSSフィードに含める話題」の設定にもよる）。
`rss_url` | `http://www.example.com/backend/geeklog.rdf` | サイトのRSSフィードのURL（ `{rdf_file}` 変数と同じ。この変数はサイトのフッタ( `footer.thtml` )でも利用できる。 非推奨: この変数の代わりに `{feed_url}` 変数を使用すること。
`rdf_file` | `http://www.example.com/backend/geeklog.rdf` | サイトのRSSフィードのURL（ `{rss_url}` 変数と同じ。この変数はサイトのフッタ( `footer.thtml` )でも利用できる。 非推奨: この変数の代わりに `{feed_url}` 変数を使用すること。
`rel_links` | `<link rel="home" href="http://www.example.com/" title="Home">` | 定義済みの リンクタグで、ナビゲーション用のリンクとページ間の関係情報を提供する。
`page_title_and_site_name` | `Geeklog Site - Another Nifty Geeklog Site` | 名前が示すように、この変数はサイト名と現在のページタイトルを保持する。表示順はWebサイト内の位置で決まり、トップページでは「サイト名 - ページタイトル」、他のページでは「ページタイトル - サイト名」の順序になる。
`page_site_splitter` | `-` (半角スペース 半角マイナス記号 半角スペース) | 独自のページタイトルを作成する際にこの変数は便利である。`{page_title}` 変数が空になるとき、この変数も空になる。 `{page_title}` と `{site_name}` と併せて使用すること（上記参照）。

## 記事

以下の変数は、 `storytext.thtml`, `storybodytext.thtml`, `featuredstorytext.thtml`, `featuredstorybodytext.thtml`, `archivestorytext.thtml`, `archivestorybodytext.thtml` テンプレートファイルで使用できます。これらのファイルは、インデックスページだけでなく、 `article/article.thtml` テンプレートファイル（このファイルは記事を個別に表示するために使用されます）中の `{formatted_article}` 変数の内容となる記事をレンダリングするためにも使用されます。

変数名 | 例 | 説明
--- | --- | ---
`site_url` | `http://www.example.com` | 自分のGeeklogサイトのURL（コンフィギュレーションの `$_CONF['site_url']` で設定したものと同じ）。
`layout_url` | `http://www.example.com/layout/professional` | ユーザが現在使用しているテーマディレクトリのURL。
`story_date` | Tuesday, October 22 2002 @ 11:50 PM PDT | 記事の日付と時刻で、ユーザの設定に応じてフォーマットされる。
`story_date_only` | 22-Oct | 記事の日付で、 `$_CONF['dateonly']` に従ってフォーマットされる。
`story_date_short` | 10/22/02 | 記事の日付で、 `$_CONF['shortdate']` に従ってフォーマットされる。
`lang_views` | Views | ユーザが選択している言語の「閲覧数(Views)」に相当する語句。
`story_hits` | 42 | 記事が閲覧された回数。
`article_url` | http://www.geeklog.net/article.php?story=20021022234959146 | 個々に表示しているとき(article.php)の記事の完全なURL。URLリライト機能の有効/無効を考慮する。
`story_id` | 20021022234959146 | 記事のID（たとえば、「この記事へのリンク」のURLを作成するときに使用できる。）。
`story_title` | Welcome to Geeklog! | 記事のタイトル。
`story_introtext` | Welcome and let me be the first to congratulate you on installing Geeklog ... | インデックスページを表示しているときは、この変数の値は記事の冒頭文になる。しかしながら、個々のページに表示しているときには、記事の冒頭文と本文の両方を含む。
`story_text_no_br` | Welcome and let me be the first to congratulate you on installing Geeklog ... | トップページを表示する場合、この変数は記事の冒頭文を保持する。しかしながら、記事を個別に表示しているときには、冒頭文と本文の両方を保持する。`story_introtext` と `story_text_no_br` の違いは、 `story_introtext` では、冒頭文と本文の間に `<br>` タグが2個挿入されるが、 `story_text_no_br` では挿入されないという点である。
`lang_todays_featured_article` | Today's Featured Article | ユーザが現在使用している言語の「今日の注目記事(Today's Featured Article)」に相当する語句。注目記事の場合にしか利用できない。
`story_counter` | 1 | サイトのインデックスページ(`index.php`)では、この変数は最初の記事の場合は 1 、2番目の記事の場合は 2 、以下同様となる。最初の記事が注目記事かどうかとは無関係。ページが変わる（たとえば、`index.php?page=2` など）ごとにカウンタはリセットされる。 記事を個々に表示しているとき(`article.php`)やプレビューでは 0 になる。

以下の変数は、記事がインデックスページに表示され、かつ、記事の本文が空白でないときに限って使用できます。

変数名 | 例 | 説明
--- | --- | ---
`lang_readmore` | read more | ユーザが現在使用している言語の「続きを読む(read more)」に相当する語句。
`lang_readmore_words` | words | ユーザが現在使用している言語の「語(words)」に相当する語句。
`readmore_words` | 62 | 記事の本文の語数。
`readmore_link` | `<a href="...">read more</a> (62 words)` | 記事の個別ページへのリンクで、本文の語数を含む。
`start_readmore_anchortag` | `<a href=".../article.php ?story=20021022234959146">` | 記事の個別ページへのリンクに関する開きタグ。
`end_readmore_anchortag` | `</a>` | 記事の個別ページへのリンクに関する閉じタグ。
`read_more_class` | （説明なし。Geeklog-1.5.0では未使用?） | （説明なし。Geeklog-1.5.0では未使用?）
`email_icon` | class="story-read-more" | 記事の本文が空白の場合はこの変数は空であり、そうでない場合はクラス属性になる。「続きを読む」リンクのレイアウトを変更するには、 `story-read-more` クラスを使用すること。
`print_icon` | (icon) | プリンタのアイコンで、印刷用のフォーマットで記事を読むためのリンクになっている。
`recent_post_anchortag` | -- | コメントが投稿されていない場合、この変数は（`{post_comment_link}` 変数と同じく）コメント投稿用フォームへのリンクになっている。コメントがある場合、この変数にはリンクではなく、最後にコメントが投稿された日時と投稿者名が入っている。

以下の変数は、記事へのコメント投稿が許可され、既にコメントが投稿されている場合に限って使用できます。

変数名 | 例 | 説明
--- | --- | ---
`comments_url` | `http://www.example.com/article.php ?story=20021022234959146#comments` | コメントセクションのURL（記事が個別に表示されている場合）。
`comments_text` | 2 comments | コメント数の後に、ユーザが現在使用している言語の「コメント(comments)」に相当する語句を続けたもの。
`comments_with_count` | 2 | 記事へのコメント数（常に 1 以上）。 この文字列は、コメントが受け付けられるとすぐに `<a href=".../article.php?story=20021022234959146#comments">` を指すリンクに変わる。
`lang_comments` | comments | ユーザが現在使用している言語の「コメント(comments)」に相当する語句。
`post_comment_link` | `<a href=".../comment.php ?sid=20021022234959146&pid=0 &type=article">Post a comment</a>` | コメント投稿用フォームへのリンク（リンクテキストにユーザが現在使用している言語の「コメント投稿(Post a comment)」に相当する語句を使用する）。

以下の変数は、設定で `$_CONF['contributedbyline'] = 1;` となっている、つまり、「所有者名を表示する」が有効になっている場合に限り、利用できます。

変数名 | 例 | 説明
--- | --- | ---
`lang_contributed_by` | Contributed by: | ユーザが現在使用している言語の「所有者(Contributed by:)」に相当する語句。
`contributedby_uid` | 7 | 記事所有者のユーザID。
`contributedby_user` | Tony | 記事所有者のユーザ名（アカウント名）。
`contributedby_fullname` | Tony Bibbs | 記事所有者のフルネーム。ユーザがフルネームを記入していないときは、代わりにユーザ名が使用される。
`contributedby_author` | Tony Bibbs | 記事所有者名。もし`$_CONF['show_fullname']`が有効なら、所有者のフルネーム（もし設定されていたら）。そうでなければユーザ名
`start_contributedby_anchortag` | `<a class="storybyline" href="http://www.example.com/ users.php?mode=profile&uid=7">` | 記事所有者のプロフィールへのリンクの開きタグ（ゲストユーザの場合は、空白）。
`end_contributedby_anchortag` | `</a>` | 記事所有者のプロフィールへのリンクの閉じタグ（ゲストユーザの場合は、空白）。
`contributedby_url` | `http://www.example.com/ users.php?mode=profile&uid=7` | 記事所有者のプロフィールへのリンク（ゲストユーザの場合は、空白）。
`contributedby_photo` | `<img src=".../images/userphotos/Tony.gif" alt="Tony Bibbs">` | もしある場合は、記事所有者の写真（ゲストユーザの場合は、常に空白）。
`camera_icon` | small camera icon and link to the author's user profile | 記事所有者が写真をアップロードしている場合、（オンラインユーザブロックと同じく）小さなカメラのアイコンと記事所有者のプロフィールへのリンクを表示する（ゲストユーザの場合は、表示されない）。

以下の変数は、記事の話題アイコンが有効になっており、かつ、ユーザが自分の表示設定で話題アイコンを無効にしていない場合に限り、利用できます。

変数名 | 例 | 説明
--- | --- | ---
`story_anchortag_and_image` | `<a href="http://www.example.com/ index.php?topic=Geeklog"><img src="..." ...></a>` (shortened) | 記事の話題に対応するアイコンで、話題でソートされたサイトのインデックスページへのリンクになっている。
`story_anchortag_and_image_no_align` | `<a href="http://www.example.com/ index.php?topic=Geeklog"><img src="..." ...></a>` (shortened) | `{story_anchortag_and_image}` 変数と同じだが、話題の画像の `align` 属性を含まない。
`story_topic_image` | `<img src="http://www.example.com/ images/topics/topic_gl.gif" align="right" alt="Geeklog" title="Geeklog">` | 記事に対応する話題アイコン。
`story_topic_image_no_align` | `<img src="http://www.example.com/ images/topics/topic_gl.gif" alt="Geeklog" title="Geeklog">` | `{story_topic_image}` 変数と同じだが、話題の画像の `align` 属性を含まない。
`story_topic_image_url` | `http://www.example.com/ images/topics/topic_gl.gif` | 話題アイコンのURL。
`story_topic_id` | General | リンクなどで使用する話題のID（内部名）。
`story_topic_name` | General News | セクションブロックなどに表示される話題名。
`story_topic_url` | `<a href="http://www.example.com/ index.php?topic=General">` | 現在の話題の記事だけを表示するサイトのインデックスページへのURL。

以下の変数は、現在のユーザが記事を編集する権限を持っている場合に限り、利用できます。

変数名 | 例 | 説明
--- | --- | ---
`edit_link` | `<a href=".../admin/story.php ?mode=edit&sid=20021022234959146">edit</a>` | 管理者の記事エディタで記事を編集するためのリンク。
`edit_icon` | `<a href=".../admin/story.php ?mode=edit&sid=20021022234959146"><img src=".../images/edit.gif"></a>` | 記事を編集するための管理者の記事エディタへリンクしているアイコン。
`edit_url` | `http://www.example.com/admin/story.php ?mode=edit&sid=20021022234959146` | 管理者の記事エディタで記事を編集するためのURL。
`lang_edit_text` | edit | ユーザが現在使用している言語の「編集(edit)」に相当する語句。