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

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

## 概要

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';` のように定義します。もちろん、画像は自分で差し替えてください。
`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` | https://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/article.php ?mode=edit&sid=20021022234959146">edit</a>` | 管理者の記事エディターで記事を編集するためのリンクです。
`edit_icon` | `<a href=".../admin/article.php ?mode=edit&sid=20021022234959146"><img src=".../images/edit.gif"></a>` | 記事を編集するための管理者の記事エディターへリンクしているアイコンです。
`edit_url` | http://www.example.com/admin/article.php ?mode=edit&sid=20021022234959146 | 管理者の記事エディターで記事を編集するためのURLです。
`lang_edit_text` | edit | ユーザーが現在使用している言語の「編集(edit)」に相当する語句です。