Оптимизировать мой фрагмент Modx с помощью вызова getresources внутри моего фрагмента, а не снаружи?

Итак, у меня есть вызов getResources, который дает мне целочисленное значение с помощью этого вызова:

[[!getResources? &parents=`[[*id]]` &totalVar=`totalLinks`]]

Это выводит на [[+ totalLinks]], и я использую это для ввода в мой фрагмент

[[!ChangeNumberToWord? &input=`[[+totalLinks]]`]]

Мой фрагмент:

$input = '';function converttoword($total){
if ($total=="1"){
$word = "one";
} elseif($total=="2") {
$word = "two";
} elseif($total=="3") {
$word = "three";
} elseif($total=="4") {
$word = "four";
} elseif($total=="5") {
$word = "five";
} elseif($total=="6") {
$word= "six";
} elseif($total=="7") {
$word ="seven";
} elseif($total=="8") {
$word = "eight";
} else{
$word = "$total";
}
return $word;
}

$output = converttoword($input);

return $output;

У меня вопрос, как я склеиваю эти 2 вместе, поэтому мне нужно только вызвать мой фрагмент?

0

Решение

Чтобы полностью избавиться от вызова getResources, используйте: getChildIds в своем фрагменте:

http://rtfm.modx.com/revolution/2.x/developing-in-modx/other-development-resources/class-reference/modx/modx.getchildids

что-то вроде:

<?php
// current resource ID
$id = $modx->resource->get('id');

// get all child ids
$array_child_ids = $modx->getChildIds($id);

//so you would count that array
$num_children = count($array_child_ids);

// get rid of the ifs to find the word
$words = array('zero','one','two','three','four','five','six');

// do something if no results
if ($num_children + 1 > count($words)){

return 'out of range';

}

// return the string
return $words[$num_children];

поэтому у вас есть другие проблемы, на которые вам, возможно, придется обратить внимание в зависимости от вашего приложения:

  • Что делать, если детей нет?
  • как насчет статуса или типа ресурса [опубликовано или неопубликовано, символические ссылки и т. д.]
  • что произойдет, если число детей будет 3033 [Три тысячи триста тридцать три]?
[подсказка: вы можете google «php преобразовать число в его имя строки» и предложить несколько вариантов]
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector