Значение массива 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