1

我有一个从数据库获取文档 ID 的片段。

我想把这些放在 Wayfinder 的菜单中,但无法让它工作。有谁知道在 Wayfinder 中放置 PHP var 的正确方法?试过这个但没有运气:

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

(PS:使用Revo)

编辑:添加了更多代码

简而言之,我的代码从会话中获取登录用户 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 中,您的片段必须返回一个值才能以块/模板等方式访问它。这是一种方法:

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

然后你的寻路器调用使用代码段:

 // 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 回答