Welcome !! Now 2009.07.05 09:20 (JST)

NewsManager (1.3.3)

[ スニペット ]

NewsManagerは、管理画面にログインすることなく、ドキュメントの作成/編集/管理を可能にするスニペットです。

ドキュメントを作成・編集するスニペット「NewsEditor」と、ドキュメントをリストアップして管理するスニペット「NewsManager」が対になって動作します。

(ダウンロードファイルには二つが同梱されています)

参照ページ:NewsManager

テスト環境

  • サーバ:さくらインターネット  
    • PHP 4.4.4
    • MYSQL 4.0.27
  • MODX:0.9.5
  • NewsManager (1.3.3)

基本的な書式

エディタ用
[!NewsEditor? &folder=`237` &postid=`235`!]
NewsEditorは常にノン-キャッシュの書式になります
マネージャ用
[!NewsManager? &folder=`237` &editformid=`236`!]
  • 235…マネージャ用ドキュメントID
  • 236…エディタ用ドキュメントID

パラメータ(NewsManager)

folder

ポストしたドキュメントの保存先とするドキュメントのID。デフォルト「0」。

makefolder

submit後自動的にフォルダにするか否か。デフォルト「しない(0)」。

postid

submit後に読み込むドキュメントID。デフォルト「カレントドキュメント」。

editformid

ポストしたドキュメントを編集するために利用するドキュメントのID。指定したドキュメントに「NewsEditor」のスニペットコールを書く。

template

ポストする際利用するテンプレートを指定。デフォルト「MODx設定>サイト>デフォルトテンプレート」

※Managerでどう機能する?※

headertpl

「rowtpl」の前に挿入するテンプレート(チャンク)を指定。デフォルト「なし」

footertpl

「rowtpl」の後に挿入するテンプレート(チャンク)を指定。デフォルト「なし」

rowtpl

表示用に利用するテンプレートをチャンクで指定。デフォルト「スニペット内で定義済み」

clearcache

submit後、キャッシュをクリアするか否か。デフォルト「しない(0)」。

nrposts

1ページに何件表示するかを指定する。デフォルト「10」

paginate

ページ分割するか否か。デフォルト「しない(0)」。※するにしておかないと、10件(nrpostsのデフォルト)を越えたとき、11件目を表示できない※

※動作に問題有り

prv

「Previous」の表示をチャンクで指定。デフォルト「< Previous」

nxt

「Next」の表示をチャンクで指定。デフォルト「Next >」

alwaysshow

「Next」「Previous」のリンクを常に表示するか否か。デフォルト「しない(0)」

prevnextsplitter

「Next」「Previous」を区切る文字。デフォルト「|」

show

「show」ボタンの表示をチャンクで指定

edit

「edit」ボタンの表示をチャンクで指定

delete

「delete」ボタンの表示をチャンクで指定

refresh

「Move on top」ボタンの表示をチャンクで指定

publish

「publish」ボタンの表示をチャンクで指定

unpublish

「unpublish」ボタンの表示をチャンクで指定

showinmenu

「Show in menu」ボタンの表示をチャンクで指定

※プログラム(ボタン)自体動作せず?従ってこのパラメータも機能しない

hideinmenu

「Remove from menu」ボタンの表示をチャンクで指定

※プログラム(ボタン)自体動作せず?従ってこのパラメータも機能しない

emptytext

表示するドキュメントがないときの文章をテキストで指定。デフォルト「<p>No entries found.</p>」

利用可能なプレイスホルダ(NewsManager)

sepchar

ドキュメントのURLとパラメータを区切るキャラクタを挿入

editformid

パラメータ「editformid」で指定した値を挿入

pagetitle

カレントポストのページタイトルを挿入

longtitle

カレントポストのロングタイトルを挿入

id

カレントポストのドキュメントIDを挿入

edit

「edit」アクションのためのテキストを挿入

delete

「delete」アクションのためのテキストを挿入

show

「show」アクションのためのテキストを挿入

refresh

「refresh」アクションのためのテキストを挿入

hidemenu

「hidemneu」または「show menu」アクションのためのテキストを挿入(現在のドキュメントの状態に依存する)

pubish

「publish」または「unpublish」アクションのためテキストを挿入(現在のドキュメントの状態に依存する)

next

「paginate=`1`」の時、ページナビゲーションを挿入(次ページ)

previous

ページナビゲーションを挿入(前ページ)

pages

ページナビゲーションを挿入(ページリスト)

totalpages

ページナビゲーションを挿入(ページ数)

prevnextsplitter

パラメータ「alwaysshow=0」の場合、「splitter」を挿入します

start

現在のページの最初のアイテム番号を挿入

stop

現在のページの最後のアイテム番号を挿入

total

現在のページのアイテム数を挿入

クラスを挿入するプレイスホルダ

rowclass

奇数行(_row_even)か偶数行(_row_odd)かを挿入する

NewsEditor用パラメータ

folder

ポストしたドキュメントの保存先とするドキュメントのID。

makefolder

ポスト先のドキュメントを自動的にフォルダにするか否か。デフォルト「しない(0)」

postid

postした後に読み込むドキュメントID。デフォルト「ポスト後のドキュメント」。

canpost

ポスト可能なWEBグループを指定。コンマで区切って複数指定可。

badwords

禁止語を指定。コンマで区切って複数指定可。

template

ポストする際利用するテンプレートを指定。デフォルト「MODx設定>サイト>デフォルトテンプレート」

headertpl

ポスト後に作成されるドキュメントの、コンテンツの前に挿入するテンプレート(チャンク)を指定。

footertpl

ポスト後に作成されるドキュメントの、コンテンツの後に挿入するテンプレート(チャンク)を指定

formtpl

入力フォーム用テンプレート(チャンク)を指定

rtcontent

リッチテキストエディタを利用して入力できるコンテンツ部をドキュメントオブジェクトで指定。デフォルト「content」

rtsummary

リッチテキストエディタを利用して入力できるサマリー部をドキュメントオブジェクトで指定。デフォルト「introtext」

showinmenu

ポストしたドキュメントの属性の「メニューに表示」にチェックするか否か。デフォルト「しない(0)」

※タイトルが2バイト文字の場合、問題が出るかも知れない。試してない

aliastitle

エイリアスのサフィックスとしてページタイトルを使用するか否か。デフォルト「しない(0)」

clearcache

ポスト後、キャッシュをクリアするか否か。デフォルト「しない(0)」。

フレンドリURL利用時は、これを「1」にセットしないと後述の問題が起きる

dateformat

デイトフォーマットを指定。デフォルト「%d-%m-%Y %H:%M:%S」

URLパラメータ

editid

編集されるドキュメントID

利用可能なプレイスホルダ

editid

対象ドキュメントのID

pagetitle

ページタイトル

longtitle

ロングタイトル

description

説明

introtext

要約

alias

ドキュメントエイリアス

parent

News parent folder (the folder with the blog)

createdon

作成日

createdby

作成者のユーザID

published

公開(1)か非公開(0)か

pub_date

公開日(format %d-%m-%Y %H:%M:%S)

unpub_date

非公開日(format %d-%m-%Y %H:%M:%S)

hidemenu

メニューに表示(0)か非表示(1)か

menuindex

メニューインデックスの値(「hidemenu=0」の場合)

template

適用したいテンプレートのID(テンプレート名ではない)

content

「内容」

テンプレートをカスタマイズする際の注意点

「hidden」属性として必ず以下の二つのフィールドが必要です

  • NewsEditorForm
  • editid

例:

<form name="ne_form" method="post" action="resource/newsmanager.html">
  <!-- These 2 hidden input fields must be present in any custom NewsEditor form. -->
    <input name="NewsEditorForm" type="hidden" value="on" />
    <input name="editid" type="hidden" value="" />
…略…

リッチテキストエディタを利用したい場合の使用例

newspublisherを参照してください

問題点

Manager:フレンドリURLYESの場合、投稿直後は、showボタンをクリックしても正しいURLにアクセスできず、not foundになる

この場合、管理画面で一度保存し直す。またはパラメータ「clearcache=`1`」にセットすることで回避

ちなみに、フレンドリURLなしだと、showの動作は問題ない

Editor:editでエディタ画面に行き、submitしても変更がドキュメントに反映されない

フレンドリURLがnoでもyesでも、同現象。「clearcache=`1`」で回避

Editor:headertplを挿入していると、editでエディット画面に行ったとき、そのチャンクを展開して挿入している

Editor:フレンドリURL利用時、postidを指定しないと、ポスト後の表示に失敗する

URLの取得がうまくいってない。clearcache=`1`でもだめ。フレンドリURLなしなら問題なし。

Manager:「paginate=1」の時、「nrposts」で指定した数より少ない投稿数だと、sqlエラーが出る

例えば1ページの表示件数を3件とした場合、1件目、2件目ではエラーになり、3件目をポストした後で、表示が正常になる。4件目をポストすると「next>」が表示されるが、これをクリックするとsqlエラーがでる。投稿数が6件になると、「next>」が正常に機能する。以降繰り返しと思われる。

Manager:デフォルトで「Show in menu」「Remove from menu」ボタンが表示されず、機能もしない

空?のボタンは表示されている。チャンクで表示しようとしても表示できない。メニューに表示/非表示関連の機能が動作しない模様

対策1:

Nessmanager スニペット L154-155を以下のように修正

$hidemenuplaceholder = (isset($hideinmenu) ? $modx->getChunk($hideinmenu) : "Remove from menu");
$showmenuplaceholder = (isset($showinmenu) ? $modx->getChunk($showinmenu) : "Show in menu");

$hideinmenuplaceholder = (isset($hideinmenu) ? $modx->getChunk($hideinmenu) : "Remove from menu");
$showinmenuplaceholder = (isset($showinmenu) ? $modx->getChunk($showinmenu) : "Show in menu");

↑ボタン名は表示されるが機能しない

△ページトップ