2017-04-19 8 views
0

Modx Revo tv入力タイプのオプションがあります。ユーザのチェックボックスとしてのModx Resource List

私が達成したいのは、特定の親のリソースをチェックボックスの項目として表示するチェックボックスタイプのtvです。したがって、ユーザーが項目をチェックすると、コンマ区切りの値として出力されます。

私は自分のテレビをテンプレートのgetresourcesコールに入れて、チェックされたリソースからいくつかの情報を出力します。

リソースリストをチェックボックスオプションに変換するにはどうすればよいですか?

これに関するドキュメントは非常にあいまいです。

答えて

1

これを達成するには、いくつかの作業が必要ですが、あまり難しくありません。

まず、新しいテンプレート変数を作成します。任意の名前を付けてください(例:list_children)。そして、入力オプション]タブに移動し、Checkboxに入力タイプを設定し、入力オプション値の下に次のように入力します。

@eval return $modx->runSnippet('list_children'); 

ゴー出力オプション]タブにし、出力タイプのドロップダウンに区切り文字を選択します。デリミタのテキストボックスには、単一のカンマ,を記述します。選択したテンプレートにテンプレート変数を適用して保存します。

新規、新しいスニペットを作成します。このlist_childrenと名前を付けるか、eval式を変更して呼び出します。このスニペットで

、次のように入力します。

<?php 
$c = $modx->newQuery('modResource'); 
$c->where(array(
    'parent' => 2, // Id to fetch children from 
    'published' => 1, // Remove this line if you also want to include unpublished resources 
    'deleted' => 0 // Remove this line if you also want resources that are marked for deletion 
)); 
$c->sortby('menuindex', 'ASC'); 
$collection = $modx->getCollection('modResource', $c); 
$output = array(); 

foreach ($collection as $v) { 
    $output[] = $v->get('pagetitle') . '==' . $v->get('id'); 
} 

return implode('||', $output); 
0

私は別の方法を発見しました。

  1. 入力タイプのチェックボックスでTVを作成します。
  2. @SELECT pagetitle、idからFROM modx_site_contentどこに= 123 !Attn。 modx_site_contentに注意を払うには、MySQLのdb接頭辞を反映させる必要があります。この場合、modxは123をそれぞれの親IDに変更します。
  3. TVの出力タイプを区切り文字に、昏睡(、)を区切り記号に変更します。
  4. それぞれのテンプレートへのテレビアクセスを設定します。

これで、IDをテレビ出力として出力する親リソースの子を選択できます。例えば。私たちの親123に子ども33,34および35がいたとしましょう.tvにアクセスできるテンプレートを使用しているリソースのテンプレート変数セクションには、子のタイトルを持つチェックボックスリストがあります。 1つまたは複数を選択します(例: 33と35は、チャンクで使用されるtvに "33,35"を出力します。 私はこのソリューションをModxフォーラムで見つけました。残念ながらリンクを紛失しました。

関連する問題