※ この機能はレガシーなプラグインによって提供されております。レガシーなプラグインはアップデートやメンテナンスが行われませんので、予期せず解決が困難な問題が発生した場合は修正が行われず、また代替機能への移行ツールもございません。これまで使用していたお客様のみご利用ください。
URL パラメータで指定されたテンプレートをビルドして表示することができます。また、プラグイン設定によりアクセス制限をかけることでログインユーザに限定して公開することができます。
これにより、テンプレートをカスタマイズするだけで動的なページを作成したり、ログインユーザ限定ページ、外部に提供する管理画面を作成することが可能になります。
設置
- options ディレクトリから mt-viewer.cgi をアプリケーションディレクトリに設置して実行可能なパーミッションを付与します。
- Viewer プラグインのディレクトリをアプリケーションディレクトリの plugins ディレクトリに設置します。
$MT_DIR/plugins/Viewer/tmpl
に表示用のテンプレートを設置します。(例: list_customobject.tmpl)$MT_DIR/plugins/Viewer/alt-tmpl
は tmpl ディレクトリよりも優先される代替のディレクトリです。両者の中に同じディレクトリ構成で同名のファイルがある場合は alt-tmpl が優先されます。
プラグイン設定
項目名 | 説明 | 設定例 |
---|---|---|
ログインを要求する | 「要求する」にチェックを入れると、mt-viewer.cgi へのアクセスの際、ログインが要求されるようになります。また、この項目にチェックが入っている場合、ユーザに付与されている権限がチェックされます。mt-viewer.cgi へのアクセスに必要な権限は、「ビューアへのアクセス」です。ログインを要求する場合、mt-viewer.cgi にアクセスするユーザのロールにこの権限を加えてください。 | OFF |
オブジェクトの編集 | Viewer プラグインに既定でバンドルされているテンプレートでは、カスタムオブジェクトを一覧表示する機能が付与されています。本設定で「編集可」を選択することで、一覧画面から編集画面に進むためのリンクが付与されます。なお、編集画面ではデータ保存のために magic_token の送信が必要になるため、編集を行う場合は「ログインを要求する」設定を合わせて行う必要があります。また、カスタムオブジェクトを編集するには、ユーザに「カスタムオブジェクトの管理」権限が付与されている必要があります。 | OFF |
許可するテンプレート | 後述する mt-viewer.cgi へのアクセスの際にパラメータ template で指定することのできるテンプレート名を指定します。ここで指定していないテンプレートを指定した場合はエラーが返されます。 | list_customobject, edit_customobject |
CGI へのアクセス
mt-viewer.cgi は template パラメータに指定したテンプレートを解釈してページを表示します。上記の例では http://example.jp/cgi-bin/mt/mt-viewer.cgi?template=list_customobject&blog_id=1
のようにして呼び出すことができます。
※ CGI スクリプト名はテンプレートタグ MTViewerScript で呼び出すことができます。この値は環境変数 ViewerScript を指定することで変更することができます
テンプレートの中では CGI スクリプトに渡された値を MTVar タグで取り出すことができます。上記リクエストの場合 <mt:var name="template" escape="html"/>
で「list_customobject」を出力することができます。
customobject.tmpl に下記のように記述することで各ブログのテンプレートモジュールを使うことができます。
<$mt:include module="$template" blog_id="$blog_id"$>
パラメータに id 指定がある場合は個別のカスタムオブジェクトのページを、id 指定がない場合はカスタムオブジェクトの一覧を表示する簡単なテンプレートの例を示します。
<MTUnless name="id">
<MTCustomObjects lastn="30">
<MTCustomObjectsHeader><ul></MTCustomObjectsHeader>
<li><a href="<$MTViewerScript$>?blog_id=<$MTBlogID$>&id=<$MTCustomObjectID$>&template=<$mt:var name="template" escape="html"$>"><$MTCustomObjectName escape="html"$></a></li>
<MTCustomObjectsFooter><ul></MTCustomObjectsFooter>
</MTCustomObjects>
<MTElse>
<h1><$MTCustomObjectName escape="html"$> (<$MTCustomobjectMore$>)</h1>
<MTCustomobjectImageMain>
<p><img src="<$MTAssetURL escape="html"$>" /></p>
</MTCustomobjectImageMain>
<$MTCustomobjectBody filters="__default__"$>
<ul>
<li><__trans phrase="Created On">: <$MTCustomObjectAuthoredOn escape="html"$></li>
<li><__trans phrase="Created By">: <$MTCustomObjectAuthorDisplayName escape="html"$></li>
</ul>
</MTUnless>
mt-viewer.cgi が持つ動作モード
view 以外のパラメータ __mode に指定できる動作モードには以下のようなものがあります。
save
個別編集画面からデータを保存する際に使用します。
保存後は、動作主体である CGI の URL に自動的にリダイレクトされます。その際、パラメータ returnargs で指定していたパラメータが加えられますが、これに加えて PowerCMS が自動付与するパラメータが追加されます。例えば、新規作成画面で、returnargs に __mode=view&template=edit_customobject&blog_id=1
を指定している場合、 http://example.jp/mt/mt-viewer.cgi?__mode=view&template=edit_customobject&blog_id=1&id=<AUTO>&saved=1
に転送されます。
- パラメータ id が送信されればその id で指定されるデータを更新します。このパラメータがない場合は新規作成とみなされます。
- パラメータ blogid が送信されればその blogid で指定されるブログのコンテキストで処理されます。このパラメータがない場合は不正な要求である旨エラーが表示されます。
- パラメータ _type が送信されればそのオブジェクトが対象になります。このパラメータがない場合は不正な要求である旨エラーが表示されます。
なお、本保存処理を動作させるには magictoken をパラメータとして送信してやる必要があります。magictoken が送信されていない場合、保存の際にサインイン画面が表示されます。magic_token はログイン状態であれば、画面がビルドされる際に自動的にテンプレート変数に渡されますので:
<$mt:var name="magic_token"$>
で出力することができます。
※ save モードを使ってオブジェクトのデータを保存する場合には、ユーザがオブジェクトの保存に必要な権限を与えられている必要があります。
logout
管理画面からログアウトし、DB 内のセッション情報と Web ブラウザの Cookie がクリアされます。ログアウト後は login モードにリダイレクトされ、サインイン画面が表示されます。 パラメータ blog_id が付与されていた場合は login モードに引き継がれますが、これがない場合は自動的にワークスペース/スペースから最初に読み込まれたものの ID を付与します。
login
logout モードが実行された後にログイン画面を表示するモードですが、実際にはログイン画面を表示しているのは PowerCMS 本体の機能になるため、ログイン後に view モードにリダイレクトすることが本機能の役割となります。 パラメータ template が指定されていた場合、view モードに引き継ぎます。パラメータ blog_id が付与されていた場合は view モードに引き継がれますが、これがない場合は自動的にワークスペース/スペースから最初に読み込まれたものの ID を付与します。
テンプレートタグ
ブロックタグ
ファンクションタグ
環境変数
環境変数 | 解説 | 初期値 |
---|---|---|
ViewerScript | Viewer プラグインが提供する、動的アプリケーションの雛形である mt-viewer.cgi のファイル名を変更する際に指定します。 | mt-viewer.cgi |
- 一覧へ