Modx evo array value



大家晚上好。

我目前正在重写我的网站,并试图创建一个片段,将各种值输出到MODX(Evolution)页面中的数组中。我得到了一个称为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]]的东西,但我真的不确定这是否正确——感觉我还需要更多的东西。我不确定我是否需要一些块或额外的片段,或者我是否只需要一个具有某种属性的标签,所以任何帮助都将不胜感激。

好的,首先:如果您使用的是Evolution,那么您的代码段标记是错误的。您使用的是Revolution标记语法。它们应该是:

  • [!SYSTEM_STATUS!](未缓存)
  • [[SYSTEM_STATUS]](缓存)

有两种方法可以将代码段中的值打印到页面上。

1-您可以返回一个值,该值将准确地打印在页面上出现snippet标记的位置。例如:

// 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:setPlaceholderhttp://wiki.modxcms.com/index.php/Creating_Snippetshttp://wiki.modxcms.com/index.php/Snippet_call_anatomy

最新更新