アドオンでビューテンプレートを作るとき、管理画面(バックエンド)とショップフロント(顧客画面)でテンプレートの構造が異なります。
置き場所
| 種別 | パス |
|---|---|
| 管理画面 | design/backend/templates/addons/<アドオン名>/views/<コントローラー>/<モード>.tpl |
| ショップフロント | design/themes/<テーマ名>/templates/addons/<アドオン名>/views/<コントローラー>/<モード>.tpl |
管理画面のテンプレート
common/mainbox.tpl をインクルードして、レイアウトを組み立てます。コンテンツやボタンは {capture} で取り込みます。
{capture name="mainbox"}
{* コンテンツ *}
{/capture}
{include file="common/mainbox.tpl"
title=__("page_title")
content=$smarty.capture.mainbox
buttons=$smarty.capture.buttons
}ショップフロントのテンプレート
common/mainbox.tpl は使いません。ページ内の見出しを {capture name="mainbox_title"} で設定し、コンテンツは HTML で直接書きます。CSS クラスは ty- で始まるものを使います。
{capture name="mainbox_title"}{__("page_title")}{/capture}
<div class="my-content">
{* コンテンツを直接書く *}
</div>ショップフロントのテーマファイルは、var/themes_repository/ にも置く必要があります。詳しくは ショップフロントのテンプレートを themes_repository にも置く を参照してください。
管理画面の HTML の title を設定する
カスタムコントローラーを作ると、ブラウザのタブに表示されるタイトルが、次のようにアンダースコアで始まる名前になることがあります。
_product_requestsこれは、コントローラー名と同じ名前の言語変数がないためです。コントローラー名と同じ名前の言語変数を用意します。
コントローラーが product_requests.php の場合:
msgctxt "Languages::product_requests"
msgid "Product Requests"
msgstr "商品申請"管理画面では、タイトルの設定場所が2つあります。
| 設定場所 | 反映先 |
|---|---|
mainbox.tpl の title パラメーター |
ページ内の見出し(h1) |
Languages::<コントローラー名> |
HTML の <title> タグ |
mainbox.tpl の title は、ページ内の見出し専用です。HTML の <title> には影響しません。HTML の <title> は、コントローラー名から __('<コントローラー名>') が自動的に呼ばれて決まります。言語変数がないと、_<コントローラー名> と表示されます。
これは管理画面とベンダーパネルの話です。ショップフロントの {capture name="mainbox_title"} は、ページ内の見出しを設定するもので、ブラウザのタブに表示される <title> を直接設定するものではありません。ショップフロントの <title> は、$page_title やページの情報(パンくずリスト、レイアウトのタイトルなど)から組み立てられます。