我对MODX很新,并且一直致力于与MODX对话的接口。 现在我得到以下查询:
[[!getCache?
&element=`getResources`
&cacheExpires=`9000`
&parents=`679,663,641,799,590`
&depth=`0`
&tpl=`related-article-in-page-listing`
&limit=`6`
&includeTVs=`0`
&includeContent=`0`
&showHidden=`1`
&tvFilters=`Related Artist==[[*Related Artist]]`
&toPlaceholder=`new`
&resources=`-[[*id]]`
]]
我想翻译成一个片段,以便我可以通过runSnippet()方法使用API调用它。
我已经走到这一步了:
<?php
$output = '';
$id = !empty($id) ? $id : 0;
$modx= new modX();
$modx->initialize('mgr');
$query = $modx->newQuery('modResource');
$query->where(array(
'parent' => 679,
'published' => 1,
'Related Artists.value:=' => 603 // this will be replaced with $id when I get it to work...
));
$query->limit(5);
$titles = $modx->getCollection('modResource',$query);
foreach ($titles as $k) {
$output.= '<li>'.$k->get('pagetitle').'</li>'; // let's just get the titles first
}
return '<ul>'.$output.'</ul>';
这不会返回任何内容,我想我不清楚上面的查询在MySQL术语中实际调用了什么。 正如我所知道的那样,它会查找具有679,663,641,799或590作为父级的条目,并且电视[[*相关艺术家]]看起来像一个大概被称为“相关艺术家”的完全匹配?!
这里有任何帮助,因为我已经与书和在线帮助争吵了几天了;) 谢谢
答案 0 :(得分:4)
如果您想使用runSnippet从您自己的代码中执行getResources,您可以这样做:
$id = $modx->getOption('id', $scriptProperties, $modx->resource->get('id'));
$related = $modx->getOption('related', $scriptProperties, '');
$params = array(
'parents' => '679,663,641,799,590',
'depth' => 0,
'tpl' => 'related-article-in-page-listing',
'limit' => 6,
'includeTVs' => 0,
'includeContent' => 0,
'showHidden' => 1,
'tvFilters' => "Related Artist==$related",
'toPlaceholder' => 'new',
'resources' => "-$id",
);
$output = $modx->runSnippet('getResources', $params);
请注意,$output
将是一个字符串。
http://rtfm.modx.com/display/revolution20/modX.runSnippet http://rtfm.modx.com/display/revolution20/Snippets
答案 1 :(得分:1)
我明白了:
$query = $modx->newQuery('modResource');
$query->leftJoin('modTemplateVarResource', 'tv_value', 'tv_value.contentid = modResource.id');
$query->where(array(
'modResource.parent:IN' => array(663,679,641,799,590),
'modResource.published' => 1,
'tv_value.tmplvarid' => 13,
'tv_value.value' => $ID // this has been replaced with a dynamic $id but was "603" in my question
));
$query->limit(10);
$titles = $modx->getCollection('modResource',$query);
(13是我的电视ID)
所以我现在了解联接在xPDO中是如何工作的;) 我希望有一天能帮助别人
答案 2 :(得分:0)
在“_”上替换模板变量Related Artist
的名称(不是标题)中的空格,因为它可能导致各种混淆。