MODxでCMSの恩恵を賜りつつ、validを保ち、かつWEB標準化を目指そう
Welcome !! Now 2008.11.22 07:57 (JST)
[ スニペット ]
FAQListは、ListFAQfolder の亜種で、簡単にFAQページを作成でき、カテゴリー分けも可能です。尚、FAQList では、出力テンプレートの指定が出来るよう改造されています。
ダウンロード:公式フォーラム/国産リソース/FAQList
[[FAQList]]
または
[!FAQList!]
以下に運用方法の例を示します。
[[FAQList]][FAQ] └ カテゴリA └ カテゴリB └ カテゴリC
[FAQ] └ [カテゴリA] └ 質問と答え1 └ 質問と答え2 └ [カテゴリB] └ 質問と答え3 └ 質問と答え4 └ [カテゴリC] └ 質問と答え5
[[FAQList]] または [!FAQList!][FAQ] ←スニペットコール └ [カテゴリA] ←スニペットコール └ 質問と答え1 └ 質問と答え2 └ [カテゴリB] ←スニペットコール └ 質問と答え3 └ 質問と答え4 └ [カテゴリC] ←スニペットコール └ 質問と答え5
・カテゴリA(2) ・カテゴリB(2) ・カテゴリC(1)
[FAQ] ←スニペットコール └ [カテゴリA] ←スニペットコール └ 質問と答え1 └ 質問と答え2 └ [カテゴリB] ←スニペットコール └ 質問と答え3 └ 質問と答え4 └ [カテゴリC] ←スニペットコール 子なし
カテゴリCがフォルダになってない場合、[FAQ]を表示すると、カテゴリCに書いてあるスニペットコールがそのまま表示されることになります。
カテゴリCがフォルダになっていれば、[FAQ]での表示は、以下のようになります。
・カテゴリA(2) ・カテゴリB(2) ・カテゴリC(0)
フォルダになっているかどうかの確認は以下で出来ます。
管理画面>ドキュメントの編集画面>ページ設定タブ 「フォルダ」 にチェックが入っていれば、OKです。
例えば以下のような場合:
[FAQ] └ [カテゴリA] └ 質問と答え1 公開 └ 質問と答え2 公開 └ [カテゴリB] └ 質問と答え3 非公開 └ 質問と答え4 非公開 └ [カテゴリC] └ 質問と答え5 公開
[FAQ]での表示は以下のようになります。
・カテゴリA(2) ・カテゴリB(0) ・カテゴリC(1)
FAQ用のドキュメントを格納するドキュメント(フォルダ)のIDを指定します。デフォルトはカレントドキュメント
カテゴリの出力形式用のテンプレートをチャンクで指定します。デフォルトは以下です。
<ul>
<!-- start -->
<li><a href="[~{+id+}~]" title="{+title+}">{+title+}</a>({+count+})</li>
<!-- end -->
</ul>
質問及び答えの出力形式用のテンプレートをチャンクで指定します。デフォルトは以下です。
<dl>
<!-- start -->
<dt>{+q+}</dt>
<dd>{+a+}</dd>
<!-- end -->
</dl>
※プレイスホルダと同じと思って問題ありません。ただし、この変数タグは、<!-- start --> ~ <!--
end --> の間でのみ有効です。またカッコは、「[ ]」でなく、「{ }」になります。注意してください※
{+id+} ... 対象ドキュメントのIDを挿入します{+title+} ... 対象ドキュメントのpagetitle を挿入します{+count+} ... 子ドキュメントの数を挿入します{+id+} ... 対象ドキュメントのIDを挿入します{+title+} ... 対象ドキュメントのpagetitle を挿入します{+q+} ... 質問を挿入します(「要約」部分){+a+} ... 答えを挿入します(「内容」部分)プログラムコードの以下の部分を変更します
if ($child['isfolder'] == '1') {
$categorys[] = array(
"id" => $child['id'],
"title" => $child['pagetitle'],
"count" => count($modx->getDocumentChildren($child['id'],1,0,'id,isfolder','isfolder=0'))
);
} else
{ $items[] = array(
"id" => $child['id'],
"title" => $child['pagetitle'],
"q" => $child['introtext'],
"a" => $child['content']
);
}
↓
if ($child['isfolder'] == '1') {
$categorys[] = array(
"id" => $child['id'],
"title" => $child['longtitle'],
"count" => count($modx->getDocumentChildren($child['id'],1,0,'id,isfolder','isfolder=0'))
);
} else
{ $items[] = array(
"id" => $child['id'],
"title" => $child['longtitle'],
"q" => $child['introtext'],
"a" => $child['content']
);
}
FAQListのサンプルはこちらです。