Значение массива modx evo

Всем добрый вечер.

В настоящее время я переписываю свой веб-сайт и пытаюсь создать фрагмент, который будет выводить различные значения в массив внутри MODX (Эволюция) страница. У меня есть фрагмент, известный как SYSTEM_STATUS настроить следующим образом;

<?php
    $statusfile = file_get_contents('URL_REMOVED');
    $statusarray = json_decode($statusfile, true);

    // Parsing omitted

    $_OUTPUTARR = Array('API_IMAGE' => $_APIDBIMAGE,
                        'API_MSG' => $_API_STATUS_MSG,
                        'API_COLOR' => $_APICOLOR,
                        'API_PING' => $statusarray['API_PING'],
                        'SITE_IMAGE' => $_SITEDBIMAGE,
                        'SITE_MSG' => $_SITE_STATUS_MSG,
                        'SITE_COLOR' => $_SITECOLOR,
                        'SITE_PING' => $statusarray['SITE_PING'],
                        'CDN_IMAGE' => $_CFDBIMAGE,
                        'CDN_MSG' => $_CF_STATUS_MSG,
                        'CDN_COLOR' => $_CDNCOLOR,
                        'CDN_PING' => $statusarray['SITE_CF_PING']);
    return $_OUTPUTARR;
?>

Этот фрагмент вызывается вверху страницы с помощью [[!SYSTEM_STATUS]] тег сниппета Однако позже на моей странице я хочу напечатать некоторые из этих значений из массива на страницу. Например, все _COLOR значения используются для изменения цвета поля, указывающего статус (свойство CSS), все _IMAGE значения используются для изменения изображения, и все _PING а также _MSG Значения используются для вывода сообщения о состоянии и значения ping.

То, что я хочу знать, - это как я извлекаю значения из этого массива и печатаю их в соответствующих точках на странице. Допустим, я хочу напечатать SITE_MSG значение на странице в виде строки. Как бы я поступил так в MODX Evolution?

Я предполагал, что это будет что-то вроде [[!SYSTEM_STATUS $X=SITE_MSG]] но я честно не уверен, что это правильно - такое ощущение, что мне нужно что-то еще. Я не уверен, нужны ли мне какие-то куски или дополнительные фрагменты или просто нужен тег с какими-то свойствами, поэтому любая помощь будет принята с благодарностью.

1 ответ

Решение

Хорошо, во-первых: если вы используете Evolution, то ваши теги сниппета неверны. Вы используете синтаксис тега Revolution. Они должны быть:

  • [!SYSTEM_STATUS!] (Uncached)
  • [[SYSTEM_STATUS]] (Кэшируется)

Есть два способа напечатать значения из фрагмента на странице.

1 - Вы можете вернуть значение, которое будет напечатано именно там, где на странице появится тег сниппета. Например:

// replaces [!my_snippet!] with 'text'
return 'text';`

2 - Вы можете установить заполнители для вывода значений в разные части страницы.

$modx->setPlaceholder('placeholder', 'some value');

Ваш шаблон может быть:

[!my_snippet!]

<p>The value returned by my snippet is: [+placeholder+]</p>

Вы можете установить столько заполнителей, сколько захотите.

http://wiki.modxcms.com/index.php/API:setPlaceholder http://wiki.modxcms.com/index.php/Creating_Snippets http://wiki.modxcms.com/index.php/Snippet_call_anatomy

Другие вопросы по тегам