We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 9406
    • 27 Posts
    Есть 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.....

    Есть работающий вариант?
      • 29487
      • 385 Posts
        • 6862
        • 97 Posts
        Фиолетовый==Фиолетовый||Зеленый==Зеленый
          • 9406
          • 27 Posts
          Quote from: Temus at Nov 02, 2010, 02:32 PM

          http://modxcms.com/forums/index.php/topic,55827.msg321324.html#msg321324

          Огромное спасибо! Именно то что нужно!

          Quote from: De at Nov 02, 2010, 02:52 PM

          Фиолетовый==Фиолетовый||Зеленый==Зеленый

          Если бы все было так просто )
          По ряду причин нужно именно так - Фиолетовый==violet||Зеленый==green.