Ditto
概要
Dittoは自分で出力テンプレートとドキュメントのID(親)を指定すると定義したテンプレートに沿ってID指定したフォルダ内のドキュメントのタイトルや概要、指定したテンプレート変数を各ドキュメントから抜き出して表示することもできます。また記事の内容も指定したキーワードや各ドキュメントのテンプレート変数の内容で指定して表示内容を絞り込むこともできます。
実稼動中の例としては、MODx公式サイトのRepositoryのTag Cloudの出力結果にも使われていて、当サイトのトップニュース、Plugins&Snippetsのリストなどに使用しています。
Dittoの導入&日本語化
- MODx公式サイト Repositoryより最新版のDittoを入手します。(現時点では1.0.2)
Featured ItemsのところにあるDownload リンクからダウンロードします。

ダウンロードしたファイルを解凍すると下のようなファイル構成になっているかと思います。
snippet.ditto.1.0.2
-assets(フォルダ)
-snippet.ditto.php
assetsをMODxのルートディレクトリに上書きします。 - MODx マネージャを開き、ログインします。
そしてリソースタブ→リソース管理をクリックします。
リソース管理へ↓
- スニペットタブに切り替え、スニペットの作成をクリック

解凍したファイルの snippet.ditto.php をテキストエディタなどで開き、全て選択し、コピーします。(Ctrl+A Ctrl+C)
スニペット名→Ditto
内容→コピーした内容を貼り付け(Ctrl+V)し、15行目あたりの$language = (isset($language))? $language : "english";を
english→japanese-utf8 or japanese-eucに変更(環境に合わせて)
- MODxフォーラムから日本語化ファイルをダウンロードします。
MODxフォーラム-[lang]Ditto日本語langファイル
解凍すると japanese-utf8.inc.php,japanese-euc.inc.php が出てきますので、
/assets/snippets/ditto/lang/ にアップロードしてください。 - これで導入&日本語化は完了です。
ページ内での使用
先にテストテンプレートの作成します。
- リソース→リソース管理 を開きます。
チャンク タブに切り替え、チャンクの作成をクリック - チャンク名→DittoTemplate
内容→ <div class="ditto_summaryPost">
<h3><a href="</p>
<div style="text-align:right;">by <strong>[+author+]</strong> on [+date+]</div>
</div>
そして保存します。
普通の形式で呼び出して使用するには
[[Ditto? &tpl=`DittoTemplate` &startID=`親のID` &summarize=`最大表示数`]]
分割する場合
[!Ditto? &startID=`親のID` &tpl=` DittoTemplate ` &summarize=`最大表示数` &multiLevel=1 & &paginate=`1` &paginateAlwaysShowLinks=`1`!]
分割した場合はドキュメントの下部に
<div id=”ditto_wrapper“>Page <strong>[+current+]</strong> of <strong>[+total+]</strong> Articles <div id="ditto_pages">[+previous+] [+pages+] [+next+]</div></div>
プレースホルダー
- [+next+] - 次へのリンクを表示
- [+previous+] - 前へのリンクを表示
- [+splitter+] - splitter if always show is 0
- [+pages+] - 各ページへのリンク ex:1,2,3
- [+totalpages+] - 合計ページ数
- [+start+] - 最初のアイテムへのリンク
- [+stop+] - 最後のアイテムへのリンク
- [+current+] - 現在のページが何ページ目かを表示
- [+total+] - 合計アイテム数
- [+item[x]+] - 個々のドキュメントからの指定したアイテムを出力? (詳細不明)
オプション一覧
[[Ditto? &設定項目=`値`]] or [!Ditto? &設定項目=`値`!]- $archiveDateType 各ドキュメントの日付に何の日付を表示するか (値:createdon - 作成日順(default), pub_date - 公開日順,editedon - 編集日順)
- $archivePlaceholder アーカイブをPlaceHolderで呼び出すか default:0(No)
- $archiveText 表示言語設定 default:言語ファイルから読み込み
- $commentsChunk コメントフォームを表示する場合のコメントチャンク
- $dateFormat 日付のフォーマット default:言語ファイルから読み込み
- $debug デバッグ情報を表示するか default:0(No)
- $descendentDepth 何階層まで読み込むか default:0(無限)
- $displayArchive アーカイブを表示するか default:1(Yes)
- $emptyText 表示する内容がないときに表示するテキスト default:言語ファイルから読み込み
- $filter フィルタリングの基準を設定(documentobject or テンプレート変数)
- $format 出力フォーマットを指定 RSSのときはテンプレートをblank (値:html(default),rss)
- $hiddenTVs フィルターにかけるのを許可するテンプレート変数
- $hideFolders 結果にフォルダの内容は表示しない default:0(No)
- $mode development - 表示テスト中 production - 指定すると速度が少し速くなる?らしい
- $multiLevel 2階層以降のドキュメントを出力するか default:0(No)
- $paginate ページ分割を有効にするか default:0(No)
- $paginateAlwaysShowLinks 1ページに表示するアイテム数よりアイテムが少なく分割できないときにも次へなどのテキストを表示するか default:0(No)
- $paginateSplitterCharacter $paginateAlwaysShowLinks が無効のときの区切りテキスト default:言語ファイルから読み込み
- $seeThruUnpub 非公開のフォルダ内の公開ドキュメントの表示を許可するか default:0(No)
- $showInMenuOnly メニューに表示しないように設定されたページの表示を許可しないか default:0(No)
- $showPublishedOnly 公開されているドキュメントしか表示しないか default:1(Yes)
- $sortBy ソート基準 (createdon - 作成日順(default), pub_date - 公開日順, editedon - 編集日順)
- $sortDir 昇順か降順か (ASC - 昇順, DESC - 降順(default))
- $startID リスト化したいドキュメントが入っているのIDを指定 default:呼び出しているドキュメント以下
- $summarize リスト化するとドキュメントの数(これを過ぎたドキュメントはアーカイブになります。分割を指定した場合は、1ページに表示するドキュメントの数) default:3
- $tpl アイテム表示時のテンプレート default:言語ファイルから読み込み
- $tplAltRows User defined chunk name to format alternating rows default:テンプレートから読み込み
- $tplArch アーカイブのテンプレートを指定(チャンク名) default:言語ファイルから読み込み
- $tplArchiveNext 「次へ」のテキスト default:テンプレートから読み込み
- $tplArchivePrevious 「前へ」のテキスト default:テンプレートから読み込み
- $tplFirstRow 最初の列に挿入するチャンク名
- $tplLastRow 最後の列に挿入するチャンク名
- $trunc ドキュメントの概要/要約を表示するかどうか(詳細不明) default:1(Yes)
- $truncAt どこでテキストを分けるか default:言語ファイルから読み込み
- $truncLen ドキュメントから何文字を抜き出すか default:300文字
- $truncOffest How big of an offset to use to fall back when splitting mid-open tag(詳細不明) default:30
- $truncSplit ドキュメントは分割タグでまとめるか default:1(Yes)
- $truncText 「Read more」に表示するテキスト default:言語ファイルから読み込み

