2013-11-21 36 views
0

晚上好。Modx evo數組值

我目前正在重寫我的網站,我正在嘗試創建一個片段,它會將各種值輸出到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值。

我想知道的是我如何從數組中提取數值並在頁面中的相關位置打印數據。假設我想以字符串形式將SITE_MSG的值打印到頁面上。我將如何去做這個MODX Evolution?

我以爲它會沿着[[!SYSTEM_STATUS $X=SITE_MSG]]的方向行進,但我真的不確定這是否正確 - 感覺就像我需要更多東西。我不確定是否需要一些塊或其他片段,或者我是否需要一個具有某種屬性的標籤,因此我們將不勝感激。

回答

0

好吧,首先:如果您使用的是Evolution,那麼您的代碼片段標記是錯誤的。您正在使用Revolution標籤語法。他們應該是:

  • [!SYSTEM_STATUS!](非高速緩存)
  • [[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