Есть TV - color со след возможными значениями:
Фиолетовый==violet||Зеленый==green
Если выводить в шаблоне [*color*] выводится значение параметра, например green, а как можно вывести название?
Можно сделать следующим сниппетом:
<?php
function explode_(&$item)
{
$item = explode('==', $item);
}
$par = $modx->getTemplateVar($name);
$elems = explode('||', $par['elements']);
array_walk($elems, 'explode_');
$arr0 = array();
$arr1 = array();
for($i=0;$i<count($elems);$i++) { $arr0[] = $elems[$i][0]; $arr1[] = $elems[$i][1]; }
preg_match('@&format=(.*?)$@', $par['display_params'], $matches);
$delim = $matches[1];
$str = str_replace($arr1, $arr0, $par['value']);
$str = str_replace('||', urldecode($delim), $str);
echo $str;
?>
Но если вызвать его 2 раза в шаблоне, появляется ошибка:
Fatal error: Cannot redeclare explode_() (previously declared in.....
Есть работающий вариант?