2014-04-05 84 views
0

如何使用getResources擺脫幾個節點父資源的資源樹〜只有一次〜也就是我有一個getResources撥打:如何使用modx getResources僅返回一次父資源?

[[!getResources? 
    &parents=`738,746,1222, 748, 1216, 805, 806, 807, 3401` 
    &tpl=`SecondaryUpdatesHomePageTpl` 
    &limit=`3` 
    &includeTVs=`1` 
    &processTVs=`1` 
    &hideContainers=`1` 
    &includeContent=`0` 
    &depth=`1` 
    &sortby=`{"createdon":"desc"}` 
]] 

凡&父母ID是要搜索的樹木,有可能是每個家長的幾個新資源。我需要獲得資源來回報父母&項目「但只有一次」

因爲如果父母738,748。807 & 3401每個下面有4個或5個新的資源,我不想做738例父資源得到3次返回,我需要~738,748,&807的父母返回。

有關如何做到這一點的任何想法? [modx revolution 2.2.12]

+2

很難理解,而不截圖你的資源樹。 – Vasis

回答

0

看了一會兒之後我猜你基本上只需要做另一個getResources調用,將&資源參數設置爲第一個getResources調用的修改輸出。請注意,我從嵌套的getResources調用中移除了includeTV。

更改您的getResources中的TPL以輸出父母后跟逗號(([[+parent]],)),基本上會生成逗號分隔的ID列表。餵你getResources的輸出調入另一個具有正確的TPL(SecondaryUpdatesHomePageTpl)

[[!getResources? 
    &resources=`[[!getResources? 
    &parents=`738,746,1222, 748, 1216, 805, 806, 807, 3401` 
    &tpl=`CSVListOfParentsTPL` 
    &limit=`3` 
    &hideContainers=`1` 
    &depth=`1` 
    &sortby=`{"createdon":"desc"}` 
    ]]` 
    &tpl=`SecondaryUpdatesHomePageTpl` 
    &includeTVs=`1` 
    &processTVs=`1` 
]] 

嵌套像這顯然不是最有效的解決方案,另一種方法是編寫自己的自定義代碼片段,使一個$鏌鋣 - >或多或少地查詢給出getResources的相同參數,但是直接獲取父母而不是第二次獲取它們。

+0

看起來像這樣仍然會多次返回同一父元素。我將不得不在getresources上使用runSnippet,然後自己過濾結果。不過謝謝。 –

0

嘗試使用新的代碼片段:

[[unikids? &input=`1,5,6` $depth=`5`]] 

和snipet代碼:

<?php 

$array_big = array(); 
$inputids = explode(",",$input); 
foreach($inputids as $inputid) { 

$array_ids = $modx->getChildIds($inputid,$depth,array('context' => 'web')); 

     /// add to master array 
     $array_big = array_merge ($array_big, $array_ids); 
    } 

    $output = implode(",",array_unique($array_big)); 

return $output; 

?> 

這snipet輸出唯一的ID,以您的getResources parametr:

[[!getResources? 
    &resources=`[[unikids? &input=`1,5,6` $depth=`5`]]` 
    &tpl=`SecondaryUpdatesHomePageTpl` 
    &includeTVs=`1` 
    &processTVs=`1` 
]]