MODxでCMSの恩恵を賜りつつ、validを保ち、かつWEB標準化を目指そう
Welcome !! Now 2009.07.05 08:44 (JST)
[ スニペット ]
Dittoは、様々な形式で、ドキュメントの一覧を出力するスニペットです
ドキュメントにタグを挿入したり、カテゴリページを作ったり、ブログやニュース形式でページを作ったり出来ます
rss feedも出力出来ます。マルチ言語対応
参照ページ:Ditto 1.0.2
このページは、Ditto 1.x系の解説です。Ditto 2.x系の解説はこちらになります。
// ---------------------------------------------------
// Get Language// ---------------------------------------------------
$language = (isset($language))? $language : "japanese-utf8";
取得内容にタグ(aやimg等)を含んでいると、取得に失敗することがあるようです。内部の処理の問題上、ある条件が重なった時、「.」を見つけるとそこで切ってしまうからです。例えば、「<cite><a href="http://ドメインとか/index.html>テキスト</a></cite>」とかがあると、条件によっては「<cite><a href="http://ドメインとか/index.</cite>」というようになり、ソースが崩れます。
対処法として、サンプルサイトの「Extendable by design」にもありますが、「<!-- splitter -->(後述)」を有効に使い、この問題を避ける事が出来ます。
また、デフォルトのテンプレートでは、タイトルの後に、ドキュメントに要約がなければ、コンテンツを切りつめて表示してくるようですので、要約をかならず、書けば(タグなしで…<p>や<br />なら大丈夫)失敗しないと思います。
[[Ditto? &startID=`0`]]
アーカイブのデータタイプを指定。デフォルト「createdon(作成日)」。その他「pub_date(公開日)」「editedon(更新日)」を指定可
アーカイブをプレースフォルダとして呼び出すか否か…?よくわからない。どうやって使うんだろう。デフォルト「0(しない)」
アーカイブのタイトル。デフォルト「アーカイブ($_lang['archives'])」
ドキュメントにコメント欄を設定している場合、そのチャンク名を指定し、表示可
日付の形式。デフォルト「%Y/%m/%d %H:%M($_lang['date_format'])」
デバッグ情報を出力するか否か。デフォルト「しない(0)」
取得する階層の深さ。デフォルト「10」
アーカイブを表示するか否か。デフォルト「する(1)」
表示すべきドキュメントがない場合に表示するテキスト。デフォルト「<p>記事はありません。</p>($_lang['no_entries'])」
フィルタを指定。デフォルト「false」
出力形式。デフォルト「html」。他「rss」、「JSON」、(「archive」?)
隠しTVを指定。
フォルダは隠すか否か。デフォルト「隠さない(0)」
プログラムの実行モードを指定。デフォルト「development」。他「production(これを指定するとちょっと実行速度が速くなる…らしい)」
ページ分割するか否か。デフォルト「しない(0)」。「paginate=1」の場合は、アーカイブリストを表示しない(当たり前か…)。ページナビゲーションはテンプレートに書くのではなく、Dittoを呼び出しているドキュメントに書く(そんなことで悩むのは私だけかも知れないけど…)。ページ分割する時は、キャッシュ「しない」にしないと動作しない。Dittoのドキュメントにあるページナビ用のスニペット呼び出しの中のパラメータ「multiLevel」は、実際には存在しないので、書いても無効
常に「次へ」「前へ」のリンクを表示するか否か。デフォルト「しない(0)」。
paginateAlwaysShowLinksが無効の時の区切り文字。デフォルト「|($_lang['button_splitter'])」。
※機能せず?※
非公開フォルダの子ドキュメントを取得するか否か。デフォルト「しない(0)」。
※機能せず?※
メニュー化してないドキュメントを隠すか否か。デフォルト「隠さない(0)」。
非公開ドキュメントを隠すか否か。デフォルト「隠す(1)」。
並べ替えの基準を指定。デフォルト「作成日(createdon)」。推奨「createdon」「pub_date」「editedon」
「pagetitle」でも大丈夫。みたい。
昇順(ASC)か降順(DESC)か。デフォルト「降順(DESC)」
表示する際のオフセット値を指定。指定した数より前(後)のドキュメントから表示。デフォルト「最初からすべて表示(0)」
<MTEntries lastn="11" offset="1">のオフセットみたいなやつ
表示させたいドキュメントを含む親フォルダ(ドキュメント)ID。デフォルト「カレントドキュメント」。 コンマで区切って複数指定可
summaryを表示する数。残りは、アーカイブとして表示。デフォルト「3」。
Tagsを表示する際のソース。テンプレート変数を指定
Tagを区切る文字。TVのwidgetで指定した値が入る。デフォルト「" "(space)」
Tagのモード。デフォルト「onlyTags」。他「onlyAllTags」、「removeAllTags」、「removeTags」
条件になるキーワード(Tag)。TVで定義した正確な単語を書く。区切り文字は「tagDelimiter」で指定した値
取得する(表示する)ドキュメントの最大数。デフォルト「全てのドキュメント」。
total - summarize = archive
表示用テンプレート(チャンク)。デフォルト「$_lang['default_template']」
<div class="ditto_summaryPost">
<h3><a href="[~[+id+]~]">[+title+]</a></h3>
<div>[+summary+]</div>
<p>[+link+]</p>
<div style="text-align:right;">投稿者:<strong>[+author+]</strong> [+date+]</div>
</div>
デフォルト「$tpl」。これを指定すると「tpl」と「tplaltRows」が交互に現れる。背景の色を行毎に交互に変えて見やすくしたい時、などに使うと良いのかも
ちょうどこんな感じ → Ditto Parameters
アーカイブリスト用のテンプレート(<li></li>の中身)。デフォルト「言語ファイルから読み込み($_lang['default_archive_template'])」
<a href="[~[+id+]~]">[+title+]</a> (<span class="ditto_date">[+date+]</span>)
ページ送りの時表示するテキスト用テンプレート(チャンク)。デフォルト「$tpl」「前へ($_lang['prev'])」。
※「tplArchivePrevious=`ここに直接テキストを書いても機能しません。ここにはチャンク名を書きます`」※
最初の行用のテンプレート。デフォルト「$tpl」
最後の行用のテンプレート。デフォルト「$tpl」
ドキュメントにsummary(要約)がある場合、summary(要約)を表示するか否か。デフォルト「する(1)」。「0」の場合、summary(要約)のあるなしに関わらず、コンテンツを全文表示。かつ、その他のバラメータ「trunc~」は、無効になる
コンテンツを表示している場合、どこで切り詰めるか。デフォルト「<!-- splitter -->($_lang['default_splitter'])」。summary内では機能しない
文章の途中でも切りつめるか否か。デフォルト「しない(0)」。Lenで指定したバイト数より前のHTML終了タグで切りつめられる?。もしかすると、何バイト戻るか決まっているのかも…。
「truncChars=1」だと文章の途中でも切りつめられる。
切りつめる長さ。デフォルト「300」。
切りつめる時、HTMLタグの途中だった場合、どれくらい(何バイト)戻って切りつめるか…だと思うんですけど(アヤシイ…笑)、でもパラメータ自体存在しないようです
「<!-- splitter -->」を有効にするか否か。デフォルト「する(1)」「0」にするとコンテンツ中に<!-- splitter -->があっても無視また、文章中にスプリッターを挿入した場合は、たとえ、truncLenで長さを指定していたとしてもそれは無視され、必ず、スプリッターの位置で、区切られる
いわゆる「続きを読む」を指定。デフォルト「続きを読む...($_lang['more_text'])」
[[Ditto? &mode=`production` &summarize=`5`
&displayArchive=`1` &startID=`54` &tpl=`forDittoTpl`
&tplAltRows=`forDittotplAltRows`]][[Ditto? &startID=`2` &format=`rss` &summarize=`20` &total=`20`]]※サンプルサイトにあるRSS Feed では、Dittoで以下のように呼び出していますが:
[[Ditto? &startID=`2` &format=`rss` &summarize=`20`
&total=`20` &commentschunk=`Comments`]]
rssfeedに&commentschunkは、必要ないので、書かなくて良いと思います