1

DB からドキュメント ID を取得するスニペットがあります。

これらを Wayfinder のメニューに入れたいのですが、うまくいきません。Wayfinder内にPHP変数を配置する正しい方法を知っている人はいますか? これを試しましたが、運がありません:

echo '[[Wayfinder? &includeDocs=`' . $docid . '`]]';

(追伸:レボ使用)

編集:さらにコードを追加

簡単に言えば、私のコードはセッションからログインしているユーザー ID を取得し、そのアクセス グループを見つけます。最終的な目標は、アクセス グループ内にあるリソースへのリンクを表示することです。これは、適切なリソース ID を取得し、それらを出力する必要があるスニペットの後半部分です。

//RETRIEVE DOCUMENT GROUPS RELATED TO ACCESS GROUPS
          $docgroups = "SELECT * FROM `modx_document_groups` WHERE `document_group` = '$target' ";

          $docstmt = $modx->query($docgroups );              

          while ($docrow = $docstmt->fetch(PDO::FETCH_ASSOC)) {
          $docid = $docrow['document'];            

          echo '[[Wayfinder? &startId=`0` &includeDocs=`' . $docid . '`]]';

          }//END
4

2 に答える 2

2

modx では、スニペットはチャンク/テンプレートなどでアクセスするために値を返す必要があります。これは 1 つの方法です:

//MySnippet
<?php
// logic
$docIDs = array(1, 2, 23, 17);
return implode(',', $docIDs);

次に、wayfinder 呼び出しでスニペットを使用します。

 // wayfinder call
[[!Wayfinder? &includeDocs=`[[!MySnippet]]`]]

// is the same as:
[[!Wayfinder? &includeDocs=`1,2,23,17`]]
于 2012-12-18T00:15:14.607 に答える
1

Modx Revolution でこれを行う正しい方法:

$c = $modx->newQuery('modResourceGroupResource');
$c->where(array( 'document_group' => $target ));
$docs = $modx->getCollection('modResourceGroupResource', $c);

$docids = array();
foreach($docs as $doc) {
    $docids[] = $doc->get('document');
}

$output = $modx->runSnippet('Wayfinder',array(
    'startId' => 0,
    'includeDocs' => implode(',', $docids);
));

return $output;
于 2012-12-18T12:15:19.360 に答える