We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 5
    • 38 Posts
    Доброго вермени суток!

    Подскажите пожалуйста почему не работает данная конструкция?

    @EVAL $val = $modx->getTemplateVar('vieweditemstxt','*',"[*siteRoot*]"); return $val['value'];


    Если в ручную подставить ид документа, то работает, но ид и через тв [*siteRoot*] передается нормально. Если делать return "[*siteRoot*]"; То выводит нужный-правильный ид-шник.

    Так, почему return "[*siteRoot*]"; якобы возвращает ид разобрался. Он возвращает тот-же [*siteRoot*], а не ид, который в последствии парсером меняется на значение тв переменной.

    Есть ли возможности, в @EVAL использовать значения тв переменных?
      • 785
      • 2,113 Posts
      Quote from: -CC- at Jul 28, 2009, 06:53 AM

      Есть ли возможности, в @EVAL использовать значения тв переменных?
      Вы же сами используете – вызываете функцию getTemplateVar, но вместо того, чтобы вызвать ее же для другой переменной, почему-то решили пойти другим путем.
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 5
        • 38 Posts
        пасибо, тему закрываем, извиняюсь за трешпост!
          • 16259
          • 33 Posts
          Поскольку есть уже такая тема, пишу сюда. Вопрос схож по применению @EVAL в TV.
          Есть сниппет вычисления возраста по дате:
          $tvTemp = $modx->documentObject;
          if(isset($tvTemp['dob'][1]) && $tvTemp['dob'][1] !== '')
          {
          	$dob = explode('-', $tvTemp['dob'][1]);
          
          	$timestamp = mktime(0, 0, 0, $dob[1], $dob[0], $dob[2]);
          	$age = ((time() - $timestamp) / (60 * 60 * 24 * 365));
          	$outputAge = substr($age, 0, strpos($age, "."));
          
          	$yong = range(5,19);
          	$let = array(0,5,6,7,8,9);
          	$god = array(1);
          	$goda = array(2,3,4);
          	$agelast = substr($outputAge, -1, 1);
          		if(in_array($outputAge, $yong)) $text = 'лет';
          		else
          		{
          			if(in_array($agelast, $let)) $text = 'лет';
          			elseif(in_array($agelast, $god)) $text = 'год';
          			elseif(in_array($agelast, $goda)) $text = 'года';
          		}
          
          	echo $age.' '.$text;
          }
          else echo 'не указан';
          

          dob - это TV типа Date. Если вызывать его из других сниппетов - все работает. Но хотелось бы иметь вызов в другом TV через @EVAL. Делаю так:
          @EVAL return $modx->runSnippet('SnippetName');

          и ничего... Точнее не проходим условие
          if(isset($tvTemp['dob'][1]) && $tvTemp['dob'][1] !== '')
          Пожалуйста, наведите на путь истинный.