Welcome !! Now 2010.02.09 17:55 (JST)

FAQList 0.2

FAQListは、ListFAQfolder の亜種で、簡単にFAQページを作成でき、カテゴリー分けも可能です。尚、FAQList では、出力テンプレートの指定が出来るよう改造されています。

ダウンロード:公式フォーラム/国産リソース/FAQList

テスト環境

  • サーバ:さくらインターネット  
    • PHP 5.2.6
    • MYSQL 4.0.27
  • サーバ:XREA  
    • PHP 5.2.3
    • MYSQL 5.1.20-beta
  • MODx: 0.9.6.1系
  • FAQList 0.2

導入方法

  1. ダウンロード先からダウンロードしたZipファイルを解凍します。
    • FAQList.snippets.php が現れます。
  2. MODxの管理画面>リソース>リソース管理>スニペット 「スニペットの作成」と進みます。
  3. 以下の要項で入力します
    • スニペット名:FAQList
    •  スニペット コード (php) :FAQList.snippets.php の内容を丸ごとコピー
    • その他の項目:任意
  4. 保存します

基本的な書式

[[FAQList]]

または

[!FAQList!]

運用方法

以下に運用方法の例を示します。

  1. 新たにドキュメントを作成します。「FAQ」というタイトルで良いでしょう。
  2. 「FAQ」の内容にスニペットコールを書きます。
    • [[FAQList]]
  3. ドキュメント「FAQ」の下に3つのカテゴリが出来るように、3つのドキュメントを作ってみます。以下のようです。
    • [FAQ]
       └ カテゴリA
       └ カテゴリB
       └ カテゴリC
  4.  カテゴリA、B、Cの下に、質問と答えを書く、ドキュメントを作成します。以下が入力必須項目です。
    • タイトル ... 入力してもデフォルトでは表示されません
    • 要約 ... 質問を書きます
    • 内容 ... 答えを書きます
  5. ドキュメントツリーは、以下のような感じになります。
    • [FAQ]
       └ [カテゴリA]	
          └ 質問と答え1
          └ 質問と答え2
       └ [カテゴリB]
          └ 質問と答え3
          └ 質問と答え4
       └ [カテゴリC]
          └ 質問と答え5
    • ※[ ] は、フォルダを現しています
  6. [FAQ]、[カテゴリA]、[カテゴリB]、[カテゴリC]、にスニペットコールを書きます
    • [[FAQList]] または [!FAQList!]
    • [FAQ] ←スニペットコール
       └ [カテゴリA]  ←スニペットコール	
          └ 質問と答え1
          └ 質問と答え2
       └ [カテゴリB]  ←スニペットコール
          └ 質問と答え3
          └ 質問と答え4
       └ [カテゴリC]  ←スニペットコール
          └ 質問と答え5
  7.  [FAQ]での表示は、以下のようになります。
    • ・カテゴリ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)

パラメータ

startID

FAQ用のドキュメントを格納するドキュメント(フォルダ)のIDを指定します。デフォルトはカレントドキュメント

catTpl

カテゴリの出力形式用のテンプレートをチャンクで指定します。デフォルトは以下です。

<ul>
<!-- start -->
<li><a href="[~{+id+}~]" title="{+title+}">{+title+}</a>({+count+})</li>
<!-- end -->
</ul>

itemTpl

質問及び答えの出力形式用のテンプレートをチャンクで指定します。デフォルトは以下です。

<dl>
<!-- start -->
<dt>{+q+}</dt>
<dd>{+a+}</dd>
<!-- end -->
</dl>

テンプレートで使用できる独自変数タグ

※プレイスホルダと同じと思って問題ありません。ただし、この変数タグは、<!-- start --> ~ <!-- end --> の間でのみ有効です。またカッコは、「[ ]」でなく、「{ }」になります。注意してください

catTpl

  • {+id+} ... 対象ドキュメントのIDを挿入します
  • {+title+} ... 対象ドキュメントのpagetitle を挿入します
  • {+count+} ... 子ドキュメントの数を挿入します

itemTpl

  • {+id+} ... 対象ドキュメントのIDを挿入します
  • {+title+} ... 対象ドキュメントのpagetitle を挿入します
  • {+q+} ... 質問を挿入します(「要約」部分)
  • {+a+} ... 答えを挿入します(「内容」部分)

カスタマイズ

pagetitle でなく、longtitleを挿入する

プログラムコードの以下の部分を変更します

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のサンプルはこちらです。

 

△ページトップ