MODXのリソース(ドキュメント)

更新日
2017.08.01
作成日
2012.10.25

移行作業中のため一部のページが正しく表示されていない場合があります(o-ω-))

MODX の「リソース(ドキュメント)」とはブログでいう「記事」にあたるものです。

リソースには本文タイトルなどいくつかの基本項目があって各項目はリソース変数と呼ばれテンプレートや直接リソース内でも使用できます。

ドキュメントとリソース

リソースを作る時にリソースの役割を「ドキュメント」か「ウェブリンク」から選択できます。MODX ではリソースを作成する時にリソースのタイプを以下の種類から選択する事ができます。

Evo のリソースは以下の2種類があります。

  • ドキュメント - CMS 上で記事やデータを管理する通常のドキュメントリソース
  • ウェブリンク - 他のリソースや URL にリダイレクトさせる

MODX Revo のリソースは以下の4種類があります。※Revoについてはこのサイトでは詳しくは説明してません。

  • ドキュメント - CMS 上で記事を管理する通常のドキュメントリソース
  • ウェブリンク - 他のリソースや URL にリダイレクトさせる
  • シムリンク - リダイレクトせずに他のリソースを複製する
  • スタティックリソース - サーバー上のファイルを読みこませる

ウェブリンクの使い方としては、MODX で管理していないページをウェブリンクに設定しておくことで、Wayfinder などで動的に表示したいときそのページもメニューのひとつとして表示させる事が出来ます。

他のドキュメントへのリンクの書き方

[~id~]

[~ ~]タグはリソースIDを URL に展開します。URL を直接書かずにIDを使って URL を生成することで、エイリアスを変えたりツリー構成を変更してもサイト内でリンク切れが起きません。

<a href="[~100~]">ID100のページへ</a>

IDが動的な場合は以下のようにネストします。

<a href="[~[*id*]~]">ID[*id*]のページへ</a>

ローカルリンク(ページ内リンク)の書き方

base タグがあるため単にアンカーにリンクを貼るだけだとホーム画面へ飛んでしまいますが、これは自分自身の URL をつけることで回避することができます。

[~[*id*]~]#AnchorName

ページタイトルの付け方

MODX のタイトルは下のように3つ似たようなものがあります。

リソース名 pagetitle 管理画面ツリーや他のタイトルが無い時に使用する
タイトル longtitle 長いタイトル ページを表示した時の H1 タグなどで使用
メニュータイトル menutitle メニュー系スニペットなどで使用する短めのタイトル

「タイトル」と「メニュータイトル」が未入力の場合は自動的に「リソース名」が使用されるので全てを入力する必要はないですが、見た目や検索サイト向けに使い分けるといいでしょう。

ちなみに私は「リソース名」は短いタイトル「タイトル」に単体で意味の通じるタイトル。「メニュータイトル」は基本使ってません。

ひとつのフォルダの中に大量のドキュメントを作る場合

更新履歴やブログのようにひとつのフォルダ内に子ドキュメントが大量になる場合、ツリーでの管理は逆に使いづらくなることがありますが、これの回避策として100件を超えるツリーの内容は非表示になり、一般の CMS のように記事一覧画面で管理するようになります。

上限の100件という数字は、ツール>グローバル設定>管理画面の設定タブの「コンテナ内の表示数」で変更することができます。

下の画像は用語集のリソースですが、フォルダの中を見た場合一般的なCMSのように数件づつにページングしてくれます。

<popup-img></popup-img>

投稿画面を使いやすいようにカスタマイズする

リソース変数一覧(各項目と記事設定等)

テンプレートやリソース内で使用する場合の表示タグは[*var*]です。

名前 説明
ドキュメント情報
id ドキュメントのID。API:$modx->documentIdentifierで取得できます。
type ドキュメント、フォルダ、またはウェブリンクかどうか。
contentType text/htmlなどのコンテンツタイプ。
pagetitle ページのタイトル。タイトルが長い場合はこれで短いめのタイトルにするのがおすすめ。
longtitle ページの長いタイトル。実際の表示の時のページタイトル部分に使用するのがおすすめ。
description ページの説明。
alias ページのエイリアス。フレンドリーURLを作成するときに使用。
link_attributes リンクの属性
published [0|1] ドキュメントが公開されているかどうか。
pub_date ドキュメントの公開日。タイムスタンプなので表示する場合は変換が必要。
例:strftime("%d/%m/%y %H:%M:%S", $value)
unpub_date ドキュメントの非公開日。この日時になるとpublishedが0になります。タイムスタンプなので表示する場合は変換が必要。
parent ドキュメントの親のID。
isfolder [0|1] ドキュメントがフォルダであるかどうか。
introtext ドキュメントの要約。
content ドキュメントの内容。
richtext [0|1] ドキュメントを編集するときにリッチテキストエディタを使用するかどうか。
template ドキュメントに使用するテンプレートのID。
menuindex ドキュメントがメニューに表示される順序。
searchable [0|1] ドキュメントを検索可能にするかどうかを示します。
cacheable [0|1] ドキュメントがキャッシュされるかどうか。
日時関連と操作したユーザー
createdby ドキュメント作成者のユーザーID。
createdon ドキュメントが作成された日付。タイムスタンプ。
editedby ドキュメントを最後に編集したユーザーのID。
editedon ドキュメントが最後に編集された日付。タイムスタンプ。
deleted [0|1]

ドキュメントをゴミ箱に入れているかどうか。

deletedon ドキュメントをゴミ箱に入れた日時。タイムスタンプ。
deletedby ドキュメントをゴミ箱に入れたユーザーのID
publishedon 実際に公開が開始された日時(?)@要調査
publishedby 公開操作を行なったメンバーのID
menutitle メニューに表示されるタイトル。空の場合はpagetitleが使用されます
donthit [0|1] ドキュメントのページのヒットカウントを無効にします。
privateweb [0|1] このドキュメントがプライベートWebドキュメントグループに割り当てられているかどうか
privatemgr [0|1] このドキュメントがプライベートマネージャのグループに割り当てられているかどうか
content_dispo [0|1] リソースの出力が添付(ダウンロード)またはインライン(表示)であるかどうか
hidemenu [0|1] メニューで隠されるかどうか

比較的よく使うものはマーカーで表示しています。それ以外は拡張機能を使ったり自分で作らなければ基本的に使用しなくても特に問題無いです。

API

ドキュメントオブジェクトです。プロパティには上記のドキュメント情報が入っています。

$modx->documentObject
$modx->documentObject['id'] // リソースのID
$modx->documentObject['parent'] // 親リソースのID