Home > Archives > February 2008
February 2008
[MODx]Dittoでドキュメントとウェブリンクを同様に扱うには?
MODxを使用して以下のようなことをしたいと思っていました。
前提条件
- MODx0.9.6
- サイトには随時、記事が追加される
- サイトは外部のブログへのリンク集も持ち、そのリンクも随時追加される
- MODx上で記事はドキュメント、リンクはウェブリンクで保持している
やりたいこと
- 新着記事、リンクをDittoを使って表示する
- 記事もリンクも時系列でソートされ、どちらもごちゃまぜで表示する
- 記事の場合は内容([+content+])の一部、リンクの場合はリンクの説明文([+description+])を表示する
例えば以下のようなファイル構成です(カッコ内はそのオブジェクトが持つID)。
記事用フォルダ(1)
└記事A
└記事B
└記事C
ウェブリンク用フォルダ(2)
└リンクA
└リンクB
└リンクC
このようなファイル構成から記事とウェブリンクをごちゃ混ぜにして公開日が最新の3件を取得するには、Dittoスニペットを以下のように使用します。表示に使用するチャンク名はchunkとします。
[[Ditto?parents=`1,2` &sortBy=`pub_date` &total=`3` &sortDir=`DESC` &tpl=`chunk` &hideFolders=`1`]]
それぞれの設定内容は以下の意味です。
| 設定内容 | 意味 |
|---|---|
| parents=`1,2` | 記事用フォルダとウェブリンク用フォルダ両方から取得する |
| sortBy=`pub_date` | 公開日でソートする |
| total=`3` | 3件取得する |
| sortDir=`DESC` | 降順でソート(新しいものが上にくる) |
| tpl=`chunk` | 使用するチャンク名 |
| hideFolders=`1` | 親フォルダを表示対象にしない |
そしてチャンクを以下のようにし、PHxファンクションを使用してドキュメントかウェブリンクかで表示内容を変えます。プレースホルダ[+type+]がドキュメントの場合はdocument、ウェブリンクの場合はreferenceとなるのでそれをもとに条件式で判定します。
注意
以下の例はうまく動作しません。
[+phx:if=`[+type+]`:is=`reference`:then=`[+description+]`:else=`[+content:limit=`500`+]`+]
これでドキュメントのときは内容([+content+])の最初の500文字を、ウェブリンクの場合は説明文([+description+])を表示できる・・・と思ってたらできませんでした。色々試行錯誤しているうちに、どうやら[+type+]の中にオブジェクトのタイプがちゃんと取れるときと取れないときがあることがわかりました。
結局、[+type+]を別の場所で一度使用してやるとPHxファンクションの中でも使用できるようになることを発見。以下のようにHTMLのコメント部で一度表示するとうまくいきます。なぜかはわかりませんが。
一応の解決策
<!-- this is [+type+] -->
[+phx:if=`[+type+]`:is=`reference`:then=`[+description+]`:else=`[+content:limit=`500`+]`+]
Dittoのソースとか追っかければ理由はわかるかもしれないけど、今までPHPはほとんどノータッチだったので、とりあえず動いたということでよしとします。
[MODx]アクセス権限管理の注意点
- 2008-02-04 (Mon)
- MODx
備忘録的に書いておこう。
MODxにおけるユーザのアクセス権設定
MODxのアクセス権というものには以下の2通りの設定がある
- マネージャ(管理画面)へのアクセス権
- ウェブサイト全体へのアクセス権
マネージャ画面のユーザタブ内にある5つのメニュー(MODx ver0.9.6)は上記のどちらを設定するかによって以下のように使い分ける必要がある。
| メニュー | 用途 |
|---|---|
| ユーザ管理 | マネージャ |
| ウェブユーザ | ウェブサイト全体 |
| 権限管理 | マネージャ |
| マネージャへのアクセス許可 | マネージャ |
| ウェブからのアクセス許可 | ウェブサイト全体 |
1. マネージャへの権限管理・アクセス許可について
- 「権限管理」は何ができるか(新規作成、編集、削除、管理情報参照、設定変更など)を決める
- 「マネージャへのアクセス許可」はどこにアクセスできるか(ドキュメントグループごと)を決める
アクセス許可がなくてはそもそも見えないが、アクセス可能なドキュメント(見えるドキュメント)に対して何ができるかは権限管理で設定するということ。
2. ウェブからのアクセス許可
- 会員制サイトのようにログインしないと見れないドキュメントなどを設定する
- 会員にも複数の種類を作成して参照できるドキュメントを設定できる
設定上の注意
マネージャ、ウェブどちらにおいてもユーザ/ドキュメントグループ リンクの設定をしなければドキュメントは全て全員が参照できる。しかし、一つでも設定してしまうとそれ以外のグループは参照できなくなっているコンテンツが出てきたりするので注意が必要。