diff --git a/docs/ja/appendixes/bugs.xml b/docs/ja/appendixes/bugs.xml new file mode 100644 index 00000000..05d1bab3 --- /dev/null +++ b/docs/ja/appendixes/bugs.xml @@ -0,0 +1,31 @@ + + + + + + バグ + + Smarty の最新ディストリビューションに付属している + BUGS ファイルを読むか、web サイトをチェックしてください。 + + + diff --git a/docs/ja/appendixes/resources.xml b/docs/ja/appendixes/resources.xml new file mode 100644 index 00000000..693c0a87 --- /dev/null +++ b/docs/ja/appendixes/resources.xml @@ -0,0 +1,59 @@ + + + + + + リソース + Smarty のホームページは + &url.smarty; + です。 + + + + + + メーリングリストに参加するには、メールを + &ml.general.sub; に送信してください。 + メーリングリストのアーカイブは ここ で閲覧できます。 + + + + 掲示板は &url.forums; です。 + + + + wiki の場所は &url.wiki; です。 + + + + チャットに参加したい場合は irc.freenode.net#smarty へ。 + + + + FAQ は こちら と こちら + にあります。 + + + + + + diff --git a/docs/ja/appendixes/tips.xml b/docs/ja/appendixes/tips.xml new file mode 100644 index 00000000..33a3276b --- /dev/null +++ b/docs/ja/appendixes/tips.xml @@ -0,0 +1,453 @@ + + + + + + ヒント & 裏ワザ + + + + 空白の変数の扱い + + テーブルの背景が適切に機能するように + を出力する場合のように、空白の変数が何も出力しない代わりに + デフォルトの値を出力したい場合があるかもしれません。 + そのために多くの人は + {if} + {if}ステートメントを使用すると思いますが、Smartyによる変数の修飾子 + default + を使った簡略な方法があります。 + + Undefined variable というエラーが表示されるのは、 + PHP の + error_reporting() が E_ALL + になっており、変数が Smarty に代入されていない場合です。 + + + + + + 変数が空白の時、 を出力する + + + + + + +default 修飾子および +変数のデフォルトの扱い +も参照してください。 + + + + + + 変数のデフォルトの扱い + + 変数がテンプレートの至る所に頻繁に使われる場合、それが記述されるたびに変更子 + default + を用いると少し見苦しくなりがちです。この場合、 + {assign} + 関数によって変数にデフォルト値を割り当てる事でこれを改善する事ができます。 + + + デフォルト値をテンプレート変数に割り当てる + + + + + + default + 修飾子および 空白の変数の扱い + も参照してください。 + + + + + ヘッダテンプレートにタイトルの変数を渡す + + テンプレートの大半が同じヘッダ及びフッタを使用する場合は、それらを単体のテンプレートに分割して + + {include} するのが普通です。 + しかしどのページから呼び出されたかによって、 + そのヘッダに異なるタイトルを持たせる必要があるとすればどうなるでしょうか? + インクルードされる際に、タイトルを + 属性 + としてヘッダに渡す事ができます。 + + + + ヘッダテンプレートにタイトルの変数を渡す + + + mainpage.tpl - メインページを描画する際に、 + Main Page というタイトルを + header.tpl に私、それをタイトルとして使用します。 + + + + + + + archives.tpl - アーカイブページを描画する際には、 + タイトルは Archives となります。 + この例では、ハードコーディングされた変数ではなく + archives_page.conf + から変数を取得していることに注意しましょう。 + + + + + + + header.tpl - $title 変数が設定されていない場合に、 + Smarty News と表示します。これは + default + 修飾子を使用して実現しています。 + + + + +{$title|default:'Smarty News'} + + +]]> + + + + footer.tpl + + + + +]]> + + + + + + 日付 + + 経験上、Smarty に渡す日付は常に + タイムスタンプ型 + にしておくことをお勧めします。これにより、テンプレートデザイナーは + date_format + 修飾子で日付の書式を自由にコントロールできるようになります。 + また、必要なら日付の比較も簡単に行えます。 + + + date_format の使用 + + + + + 出力はこのようになります。 + + + + + + + + + 出力はこのようになります。 + + + + + + テンプレートで日付を比較するには、タイムスタンプを使用します。 + + + + + + + テンプレートで + {html_select_date} を使用する場合、 + おそらくプログラマはフォームからの出力をタイムスタンプ型に変換したいでしょう。 + それを行うのに役立つ関数を次に示します。 + + + フォームの日付要素をUNIXタイムスタンプ型に変換する + + +]]> + + + + + + {html_select_date}、 + + {html_select_time}、 + + date_format + および + $smarty.now + も参照してください。 + + + + + WAP/WML + + WAP/WML テンプレートはテンプレートコンテンツに加え、php + によって Content-Type ヘッダ + が渡される必要があります。これを実行する容易な方法は、 + ヘッダを出力するカスタム関数を記述する事です。 + もし キャッシュ を有効にしている場合はキャッシュは機能しないので、 + {insert} + タグを用いて出力を行います ({insert} + タグはキャッシュされない事を覚えていて下さい)。 + もしテンプレートの前にブラウザに何か出力されていると、 + ヘッダの出力は失敗する可能性があります。 + + + WML Content-Type ヘッダを出力するために {insert} を使用する + + +]]> + + + Smarty テンプレートは、次のように insert タグから始まる必要があります。 + + + + + + + + + + + + + + Smarty 版の WAP へようこそ! + OK を押すと次に進みます…… + + + + + + どう?簡単でしょ? + + + +]]> + + + + + + コンポーネント化したテンプレート + + 習慣的に、アプリケーションにテンプレートをプログラミングする手順は次のように進みます。 + はじめに php アプリケーションにおいて変数を蓄積します + (おそらくデータベースのクエリーによって)。それから Smarty + オブジェクトのインスタンスを作成して変数を割り当て + (assign())、 + テンプレートを表示 (display()) + します。仮に株式相場表示を行うテンプレートがあったとしましょう。 + これは php アプリケーションにより株式情報のデータを収集し、 + テンプレートにこれらの変数を割り当てて表示します。 + もし、前もってデータを取得する事を気にせずに、 + テンプレートを単にインクルードする事で株式相場表示をアプリケーションに追加できれば良いと思いませんか? + + + これは、内容をフェッチし、テンプレート変数に割り当てるための + カスタムプラグインを書くことで実現できます + + + コンポーネント化したテンプレート + + function.load_ticker.php - + このファイルを + + プラグインのディレクトリ + においてください。 + + +assign($params['assign'], $ticker_info); +} +?> +]]> + + + index.tpl + + + + + + + {include_php}、 + {include} + および + {php} + も参照してください。 + + + + + E-mail アドレスを混乱させる + + これまでに、あなたの E-mail アドレスが多数のスパムメーリングリストにどのように載るのか + 不思議に思った事はありませんか?その一つの方法として、スパム発信者は web ページ上の + E-mail アドレスを収集しています。この問題に対抗するために、E-mail アドレスが HTML + ソース内では混乱した JavaScript に見えるがブラウザでは正しく表示されるという方法が使えます。 + これは {mailto} + プラグインによって行われます。 + + + E-mail アドレスを混乱させる例 + + +{mailto address=$EmailAddress encode='javascript' subject='Hello'} に問い合わせを送る + +]]> + + + + テクニカルノート + + この方法は 100% 確実という訳ではありません。 + もしかしたらスパム発信者はこれらの値を解読するためのコードを書くかもしれません。 + ですがそれはまず有り得ないでしょう…… + おそらく…… + 今のところは…… + 量子コンピュータってどうなったんでしょう :-? + + + + escape + 修飾子および + {mailto} + も参照してください。 + + + + + diff --git a/docs/ja/appendixes/troubleshooting.xml b/docs/ja/appendixes/troubleshooting.xml new file mode 100644 index 00000000..c2df3728 --- /dev/null +++ b/docs/ja/appendixes/troubleshooting.xml @@ -0,0 +1,200 @@ + + + + + + トラブルシューティング + + + Smarty/PHP エラー + + Smarty は、タグの属性が不足していたり、誤った変数名を指定していた時など、 + 多くのエラーをキャッチする事ができます。 + キャッチすると次の例のようなエラーが表示されます。 + + + Smarty エラー + + + + + + Smarty はテンプレート名・エラー行番号・エラー内容を示します。 + その次のエラーは、Smarty クラスにおいてエラーが発生した実際の行番号から成るメッセージです。 + + + + タグの閉じ忘れのような、Smarty がキャッチできないエラーがあります。 + 通常、このような場合のエラーは PHP コンパイル時にパースエラーで終了します。 + + + + PHP パースエラー + + + + + + + PHP パースエラーの場合のエラー行番号は、 + テンプレートそのものではなくコンパイルされた PHP スクリプトに一致します。 + 通常、テンプレートを見ることで構文エラーを見つけられます。 + 一般的な間違いとしては、 + {if}{/if} や + {section}{/section} + タグの閉じ忘れ、{if} + タグ内のロジックの構文の誤りなどがあります。もしエラーが見つけられない場合は、 + テンプレートのどこに該当するエラーがあるかを見い出すために、 + コンパイルされた PHP ファイルを開いて行番号のあたりを調べる必要があります。 + + + + + その他共通のエラー + + + + + + + + + + $template_dir + が存在しない不正なディレクトリか、もしくは存在しても + index.tpl が + templates/ + ディレクトリ内にありません。 + + + + + + {config_load} + 関数がテンプレート内にあり (もしくは + config_load() + で呼び出されており)、その際の + $config_dir + が存在しない不正なディレクトリか、もしくは存在しても + site.conf がそのディレクトリ内にありません。 + + + + + + + + + + + + + + $compile_dir + に不正な値が入っており、そのようなディレクトリが存在しないか、もしくは + templates_c の指定がディレクトリではなくファイルです。 + + + + + + + + + + + + + $compile_dir に Web サーバによる書き込み権限がありません。 + Smarty のインストール + のページ下部のパーミッションの項を参照してください。 + + + + + + + + + + + + $caching が有効であるにも関わらず、 + $cache_dir + が存在しない不正なディレクトリか、もしくは存在しても + cache/ がディレクトリではなくファイルである、という意味です。 + + + + + + + + + + + + $caching + が有効であるにも関わらず、 + $cache_dir + に Web サーバによる書き込み権限がない、という意味です。 + Smarty のインストール + のページ下部のパーミッションの項を参照してください。 + + + + + + + デバッグ、 + + $error_reporting + および + trigger_error() + の項も参照してください。 + + + + + diff --git a/docs/ja/bookinfo.xml b/docs/ja/bookinfo.xml new file mode 100644 index 00000000..65ad0903 --- /dev/null +++ b/docs/ja/bookinfo.xml @@ -0,0 +1,57 @@ + + + + + + Smarty - コンパイリング PHP テンプレートエンジン + + + Monte + Ohrt <monte at ohrt dot com> + + + Andrei + Zmievski <andrei@php.net> + + + + + ShinsukeMatsuda <mat-sh at fj9 dot so-net dot ne dot jp> + + + DaichiKamemoto <daichi at asial dot co dot jp> + + + JoeMorikawa <joe at asial dot co dot jp> + + + MasahiroTakagi <takagi@php.net> + + + &build-date; + + 2001-2005 + New Digital Group, Inc. + + + + diff --git a/docs/ja/designers/chapter-debugging-console.xml b/docs/ja/designers/chapter-debugging-console.xml new file mode 100644 index 00000000..5b5f77fb --- /dev/null +++ b/docs/ja/designers/chapter-debugging-console.xml @@ -0,0 +1,89 @@ + + + + + + デバッギングコンソール + + Smarty にはデバッギングコンソールが用意されています。 + このコンソールは、 + インクルード + された全てのテンプレートについての情報と、現在実行中のテンプレートに + 割り当てられた 変数及び + 設定 + ファイルの変数の値を表示します。Smarty の配布ファイル群に含まれているテンプレート + debug.tpl が、コンソールを表示するためのものです。 + + + debug.tpl (デフォルトでは + SMARTY_DIR 内にあります) に + + $debug_tpl のテンプレートリソースのパスを示す必要がある場合は、 + Smarty で + $debugging + を &true; に設定します。 + ページを読み込む時に Javascript による新たなコンソールウィンドウが現れ、 + 現在のページにおける、インクルードされたすべてのテンプレートの名前と + 定義されている変数の値を表示します。 + 特定のテンプレートに有効な変数を調べる場合は、テンプレート関数 + + {debug} を参照してください。 + デバッギングコンソールを無効にするには + $debugging + を &false; に設定します。また、一時的にデバッギングコンソールを有効にするには、 + $debugging_ctrl + で URL の中に SMARTY_DEBUG を含めます。 + . + + + テクニカルノート + + fetch() + API を使用している場合はデバッギングコンソールは動作せず、 + + display() の場合のみ使用できます。 + このコンソールは、生成されたテンプレートの終端に追加される + Javascript の集合です。Javascript がお好みでないなら、 + 希望の出力になるように debug.tpl + を修正してください。デバッグ情報はキャッシュされず、 + デバッギングコンソールの出力には debug.tpl + 自体の情報は含まれません。 + + + + + 各テンプレートと設定ファイルの読み込みにかかる時間は、ほんの数秒です。 + + + + トラブルシューティング、 + + $error_reporting + および + trigger_error() + も参照してください。 + + + + + + diff --git a/docs/ja/designers/config-files.xml b/docs/ja/designers/config-files.xml new file mode 100644 index 00000000..971552f6 --- /dev/null +++ b/docs/ja/designers/config-files.xml @@ -0,0 +1,110 @@ + + + + + + 設定ファイル + + 設定ファイルは、1つのファイルからグローバルなテンプレート変数を管理する方法として、 + デザイナーにとって有用です。1つの例としては、テンプレートの色の指定を行う場合です。 + 通常、アプリケーションの配色を変更するには全てのテンプレートファイルを調べ、 + 該当する箇所の色の指定を変更する必要があります。 + 設定ファイルを使うと色の指定を一箇所で管理できるので、 + 更新する必要があるファイルは1つだけになります。 + + + 設定ファイルの記述例 + + + + + + 設定ファイルの値 + はクォートで囲む事が出来ます(必須ではありません)。 + シングルクォートとダブルクォートのどちらでも使用できます。 + 複数行にまたがる値を持つ場合は、値全体をトリプルクォート(""") + で囲みます。設定ファイルの中にコメントを記述するには、 + 行の初めに # (ハッシュ) を使う事を推奨します。 + + + 上記の設定ファイルの例は2つのセクションを持っています。 + セクション名はブラケット[]に囲まれ、[ + もしくは ] を含まない任意の文字列を指定できます。 + 先頭の4つの変数は、グローバル変数 (あるいはセクションに含まれない変数) + です。これらの変数は常に設定ファイルから読み込まれます。 + 特定のセクションが読み込まれた場合は、 + グローバル変数に加えてそのセクションからの変数が読み込まれます。 + グローバル変数とセクション内に同じ変数が存在する場合はセクション内の変数が使用されます。 + 1つのセクション内に同名の2つの変数を指定した場合は、 + + $config_overwrite + が無効でない限りは後で指定されたものが使用されます。 + + + 設定ファイルの読み込みは、組み込みのテンプレート関数 + + {config_load} あるいは API 関数 config_load() + によって行います。 + + + [.hidden] のように変数名又はセクション名の先頭にピリオドをつける事によって、 + 変数又は全体のセクションを隠蔽する事ができます。 + アプリケーションからは使用されるがテンプレートエンジンからは使用されないような重要なデータ + (DB接続に関する情報など) を取得する際に有用です。 + テンプレートを編集をするサードパーティが存在する場合、 + 重要なデータを含んだ設定ファイルをテンプレート内に読み込む事によって盗み読まれる危険性を回避できます。 + + + {config_load}、 + $config_overwrite、 + get_config_vars()、 + clear_config() + および + config_load() + も参照してください。 + + + diff --git a/docs/ja/designers/language-basic-syntax.xml b/docs/ja/designers/language-basic-syntax.xml new file mode 100644 index 00000000..8818501d --- /dev/null +++ b/docs/ja/designers/language-basic-syntax.xml @@ -0,0 +1,46 @@ + + + + + + 基本構文 + + 全てのテンプレートタグはデリミタによって囲まれます。 + デフォルトではデリミタは { と } + ですが、これは 変更可能 です。 + + + このマニュアルで挙げる例ではデフォルトのデリミタを利用しています。 + Smarty では、デリミタ外の内容は静的コンテンツとして表示されます。 + Smarty がテンプレ ートタグを見つけると、その解釈を試みて適切な出力に置換します。 + + + &designers.language-basic-syntax.language-syntax-comments; + &designers.language-basic-syntax.language-syntax-variables; + &designers.language-basic-syntax.language-syntax-functions; + &designers.language-basic-syntax.language-syntax-attributes; + &designers.language-basic-syntax.language-syntax-quotes; + &designers.language-basic-syntax.language-math; + &designers.language-basic-syntax.language-escaping; + + + diff --git a/docs/ja/designers/language-basic-syntax/language-escaping.xml b/docs/ja/designers/language-basic-syntax/language-escaping.xml new file mode 100644 index 00000000..5ff2f3d7 --- /dev/null +++ b/docs/ja/designers/language-basic-syntax/language-escaping.xml @@ -0,0 +1,92 @@ + + + + + + Smarty の構文解析を回避する + + 時々、Smarty の構文解析の対象にしたくないと望む、 + もしくはそうする必要がある部分があります。 典型的な例としては、 + テンプレートに Javascript や CSS コードが含まれるときです。 + それらの言語が Smarty のデフォルトの + デリミタ + である { と } を使用するときに問題が発生します。 + + + + もっとも単純な解決方法は、Javascript と CSS コードをそれぞれファイルに切り分け、 + それらにアクセスするために標準的な HTML の機能を使用する事で状況を回避する事です。 + + + + リテラルコンテンツを含めるには + {literal}..{/literal} ブロックを使用します。 + HTML エンティティの使用法と同様に、 {ldelim}、{rdelim} あるいは + {$smarty.ldelim} を使用して現在のデリミタを表示することができます。 + + + + 単純に Smarty の + $left_delimiter および + + $right_delimiter + を変更するだけでも便利になることが多々あります。 + + + デリミタを変更する例 + +left_delimiter = ''; + +$smarty->assign('foo', 'bar'); +$smarty->assign('name', 'Albert'); +$smarty->display('example.tpl'); + +?> +]]> + + + テンプレートはこのようになります。 + + + to Smarty + +]]> + + + + diff --git a/docs/ja/designers/language-basic-syntax/language-math.xml b/docs/ja/designers/language-basic-syntax/language-math.xml new file mode 100644 index 00000000..46ad6332 --- /dev/null +++ b/docs/ja/designers/language-basic-syntax/language-math.xml @@ -0,0 +1,57 @@ + + + + + + 演算子 + + 演算子は、変数の値に直接適用されます。 + + + 演算子の例 + +bar-$bar[1]*$baz->foo->bar()-3*7} + +{if ($foo+$bar.test%$baz*134232+10+$b+10)} + +{$foo|truncate:"`$fooTruncCount/$barTruncFactor-1`"} + +{assign var="foo" value="`$foo+$bar`"} +]]> + + + + + 複雑な数式については + {math} 関数、そして + {eval} + も参照してください。 + + + diff --git a/docs/ja/designers/language-basic-syntax/language-syntax-attributes.xml b/docs/ja/designers/language-basic-syntax/language-syntax-attributes.xml new file mode 100644 index 00000000..4589be8a --- /dev/null +++ b/docs/ja/designers/language-basic-syntax/language-syntax-attributes.xml @@ -0,0 +1,62 @@ + + + + + + 属性 + + ほとんどの 関数 には、 + それらの動作を指定したり修正するための属性があります。Smarty 関数の属性は + HTML の属性にかなり近いものです。静的な値はクォートで囲む必要はありませんが、 + リテラル文字列であるべきです。変数を使う場合はクォートで囲んではいけません。 + + + いくつかの属性は、boolean 値 (&true; あるいは &false;) を必要とします。 + これらの値は、クォートなしの true、 + on、yes あるいは + false、off、 + no を指定する事が出来ます。 + + + 関数の属性の構文 + + + {html_options options=$companies selected=$company_id} + +]]> + + + + diff --git a/docs/ja/designers/language-basic-syntax/language-syntax-comments.xml b/docs/ja/designers/language-basic-syntax/language-syntax-comments.xml new file mode 100644 index 00000000..76d3df2f --- /dev/null +++ b/docs/ja/designers/language-basic-syntax/language-syntax-comments.xml @@ -0,0 +1,108 @@ + + + + + + コメント + + テンプレートのコメントはまずアスタリスクで囲まれ、次にそれを + デリミタ + タグで囲みます。このような形式になります。 + + + + + + + + Smarty のコメントは、テンプレートの最終的な出力には表示されません。この点は + <!-- HTML のコメント --> とは異なります。 + これは、テンプレート内での内部的なメモとして使用するのに便利です。 + 誰にもバレません ;-) + + + テンプレート内のコメント + + + +{$title} + + + +{* 別の Smarty コメント *} + + +{* この、複数行の + Smarty コメントは + ブラウザへは送信されません +*} + +{********************************************************* +クレジットブロックを含む複数行のコメント + @ author: bg@example.com + @ maintainer: support@example.com + @ para: var that sets block style + @ css: the style output +**********************************************************} + +{* メインロゴなどを含むヘッダファイル *} +{include file='header.tpl'} + + +{* 開発メモ: 変数 $includeFile の値は foo.php で設定されています *} + +{include file=$includeFile} + +{* この ブロックは余分 *} +{* + + {html_options options=$vals selected=$selected_id} + +*} + + +{* $affiliate|upper *} + +{* コメントを入れ子にすることはできません *} +{* + + {* -- none -- *} + {html_options options=$vals selected=$selected_id} + +*} + + +{* テンプレート用の cvs タグ。以下の 36 はアメリカの通貨記号ですが、 +. cvs がこれを変換してしまいます…… *} +{* $Id: Exp $ *} +{* $Id: *} + +
Undefined variable
Main Page
Archives
Smarty News
+ Smarty 版の WAP へようこそ! + OK を押すと次に進みます…… +
+ どう?簡単でしょ? +