We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 7151
    • 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*]?

    Спасибо.
      • 785
      • 2,113 Posts
      Потому что передаете текстовую строку [*albom*] и ее же выводите в программе, а потом MODx меняет ее на нужное значение. Для работы с TV в сниппете надо использовать API MODx. Рекомендую выполнить
      print_r ($modx->documentObject);
      может что-то станет понятнее.
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 7151
        • 61 Posts
        Quote from: AKots at Feb 14, 2011, 03:35 PM

        Потому что передаете текстовую строку [*albom*] и ее же выводите в программе, а потом MODx меняет ее на нужное значение. Для работы с TV в сниппете надо использовать API MODx. Рекомендую выполнить
        print_r ($modx->documentObject);
        может что-то станет понятнее.

        Спасибо, узрел!

        $txt = $modx->getTemplateVar(’albom’);
        echo $t = $txt[value];
          • 785
          • 2,113 Posts
          Quote from: Designer at Feb 14, 2011, 09:02 PM

          $txt = $modx->getTemplateVar(’albom’);
          Вообще-то TV уже имеются в $modx->documentObject, а getTemplateVar еще раз обращается к базе данных за ними.
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации
            • 7151
            • 61 Posts
            Quote from: AKots at Feb 15, 2011, 05:26 AM

            Quote from: Designer at Feb 14, 2011, 09:02 PM

            $txt = $modx->getTemplateVar(’albom’);
            Вообще-то TV уже имеются в $modx->documentObject, а getTemplateVar еще раз обращается к базе данных за ними.

            Спасибо, не знал.
            Наверное, тогда так smiley

            $txt = $modx->documentObject;
            echo $a = $txt[albom][1];