MODxでCMSの恩恵を賜りつつ、validを保ち、かつWEB標準化を目指そう
Welcome !! Now 2008.07.25 16:31 (JST)
[ スニペット ]
News Publisherは、管理画面にログインすることなく、ドキュメントを作成出来るスニペットです
ドキュメントの作成には、リッチテキストモードを利用する事も可能
参照ページ:News Publisher
(エントリポスト用ドキュメントでスニペットを呼び出す)
[!NewsPublisher? &folder=`119` &canpost=`Site Admins` &clearcache=`1` &postid=`119`!]
スムーズに動作させるために、いくつかコツがあります。逐次説明していきます
ポスト先(親)のドキュメントIDを指定します。
指定したドキュメントは、あらかじめ「フォルダ」にしておくか、そうでなければ、後述の「&makefolder=1」を併用してください。
「&makefolder=1」を指定せず、フォルダでないドキュメントにポストすると、指定したドキュメントの下にドキュメントは作成されますが、管理画面のツリー表示で見えない状態となるので、注意が必要です。その場合は、親になったドキュメントを開き、「フォルダ」にチェックを入れ保存し直せば、その下に作成されたドキュメントを見る事が出来ます。
なお、「&folder」の指定を省略すると、カレントドキュメントの下にドキュメントを作成します。この場合も、前述と同様の注意が必要となります。
ポスト先のドキュメントを自動的にフォルダに変換します。
エントリをポストした後に表示するドキュメントを指定します。
省略すると、ポストしたドキュメントを表示…する仕様のはずですが、フレンドリーURLを使用している場合、表示しようとするURLの出力に失敗するため(フォーラム関連トピ参照)、ポストした後、そんなページありませんと言われます。ので、例えば、Dittoで新着一覧を表示させているようなページ(ドキュメントID)を指定しておくと無難かも知れません。
ポスト可能なウェブグループを指定します。コンマで区切って複数指定可です。
ここで指定したグループに所属するユーザがログインした時のみ、エントリ用のフォームが現れます。省略すると、ログインなしでポストが可能となります。
禁止ワードを指定します。コンマで区切って複数指定可能です。
※機能せず?※
ポスト後に作成されるドキュメントで使用するテンプレートを指定します。
ポスト後に作成されるドキュメントの、コンテンツの前に挿入するテンプレート(チャンク)を指定します。
ポスト後に作成されるドキュメントの、コンテンツの後に挿入するテンプレート(チャンク)を指定します。
例えば、「footertpl=comment」とした場合、ポスト後のドキュメントは以下のようになります。
ここはコンテンツです。
コンテンツの後ろにチャンクが挿入さ{{comment}}
エントリポスト用のテンプレート(チャンク)を指定します。
省略すると、News Publisherが持っているデフォルトのフォームが挿入されます…が、この時、カレンダーアイコン用の画像へのパスが違っていて、アイコンが表示されません(クリックすればカレンダーは表示される)。そこで、解決法としては、以下の二つがあげられます。
スニペット内で指定している、カレンダーアイコンのパスは、「manager/media/images/icons/cal.gif」と「manager/media/images/icons/cal_nodate.gif」です。ftpで該当ディレクトリに画像をアップロードする方が簡単かも知れません。
リッチテキスト形式で編集したいフィールド(content)を指定します。あらかじめ作成しておいたテンプレート変数を指定します。
リッチテキスト形式で編集したいフィールド(summary)を指定します。あらかじめ作成しておいたテンプレート変数を指定します。
ポスト後、作成されるドキュメントをメニュー化するかどうかを指定します。デフォルト「しない(0)」。
エイリアスのサフィックスをタイトルにするかどうかを指定します。デフォルト「しない(0)」。作成した日付がサフィックスになります。
※「1」を指定するとタイトルをサフィックスにする仕様だが、タイトルが2バイトの場合、無視されます
ポスト後、キャッシュをクリアするかどうかを指定します。デフォルト「しない(0)」。
Dittoで新着を表示させる場合、「clearcache=1」にしないと、管理者権限でログイン後、該当ドキュメントを保存し直すまで、Dittoに反映されないので注意が必要です。関連フォーラム参照
NewsPublisherのドキュメントに詳しく出ていますので、ここでは、大まかな流れを書きます
[!NewsPublisher? &folder=`119` &clearcache=`1`
&postid=`119` &template=`sample` &rtcontent=`tvblogContent`
&formtpl=`newspublishertpl`!]<form name="NewsPublisher" method="post" action="[~[*id*]~]">
<input name="NewsPublisherForm" type="hidden" value="oPage title:<br />
<input name="pagetitle" type="text" size="40" value="[+pagetitle+]" /><br />
Content:<br />
[*blogContent*]<br />
<input name="send" type="submit" value="Submit" />;
</form>