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

このエントリーをはてなブックマークに追加

MODXの「リソース(ドキュメント)」とはブログでいう「記事」にあたるものです。
リソースの各項目はリソース変数と呼ばれページの表示や拡張機能で使用できます。
本文やテンプレート変数内ではMODXタグが使用できます。

ドキュメントとリソースの関係


リソースとは「ドキュメント」「ウェブリンク」「シムリンク(Revoのみ)」「スタティックリンク(Revoのみ)」を総した言い方です。
MODXではリソースを作成する時に、リソースのタイプを以下の種類から選択する事ができます。

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

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

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

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

この2種類(4種類)の総称で「リソース」と呼ばれます。
というわけで「ドキュメント」とは「ドキュメント」に設定した「リソース」なわけです。

ウェブリンクの使い方としては、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 長いタイトル
メニュータイトル menutitle スニペットなどで使用するメニュー用のタイトル

「タイトル」と「メニュータイトル」が未入力の場合は自動的に「リソース名」が使用されるので全てを入力する必要はないですが、見た目や検索サイト向けに使い分けるといいでしょう。
ちなみに私は「リソース名」は短いタイトル、「タイトル」に単体で意味の通じるタイトル。「メニュータイトル」は基本使ってません。

リソース名 基本設定だと管理画面のツリーの見出しにも使用されます

Ajaxメニューを作る

タイトル H1などに使用

Wayfinder+Ditto+jQueryでAjaxメニューを作ってみるチュートリアル!

メニュータイトル パンくずやナビゲーションに使用

Wayfinder+Ditto+jQueryでAjaxメニューを作る

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

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

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

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

参考サイト

http://modx.jp/news/787.html

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

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

テンプレートやリソース内で使用する場合の表示タグは[*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] ドキュメントのページのヒットカウントを無効にします。
haskeywords [0|1] ドキュメントがキーワードへのリンクがあるかどうか。※非推奨項目
hasmetatags [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

ドキュメントのIDは直接参照できます。

$modx->documentIdentifier
Edited on 2016.12.15 Created on 2012.10.25 MODXCMS
PAGE TO TOP