-
- 61 Posts
Есть у документа TV параметр albom
В этом же документе вызываю сниппет:
Вызов сниппета:
[[alboms? &alb=`[*albom*]`]]
Тело сниппета такое:
<?php
echo $alb;
echo "
";
echo strlen ($alb); // количество символов, которое содержит строка
?>
Если TV параметр albom = 4, на выходе имею
4
9
4 – верно
Но почему 9, а не 1? Почему функция считает число символов в строке [*albom*], а не в строке 4, т.е. не в содержимом самой переменной.
1) Как правильно передать в сниппет значение переменной для дальнейшей работы с ней?
2) Как в сниппете работать с внутренними переменными, например [*id*], [*pagetitle*]?
Спасибо.
-
- 2,113 Posts
Потому что передаете текстовую строку [*albom*] и ее же выводите в программе, а потом MODx меняет ее на нужное значение. Для работы с TV в сниппете надо использовать API MODx. Рекомендую выполнить
print_r ($modx->documentObject);
может что-то станет понятнее.
-
- 2,113 Posts
Quote from: Designer at Feb 14, 2011, 09:02 PM
$txt = $modx->getTemplateVar(’albom’);
Вообще-то TV уже имеются в $modx->documentObject, а getTemplateVar еще раз обращается к базе данных за ними.