We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 16017
    • 11 Posts
    Уважаемое сообщество! Помогите, пожалуйста, организовать плагин, который при сохранении документа будет брать значения из конкретных заполненных, но ещё не сохранённых в базе, TV-параметров и заполнять на их основе другие несистемные TV.

    Элементарно подобное получается по событию OnBeforeDocFormSave со следующим кодом:
    global $content;
    $annotation=$_POST[’pagetitle’];
    ... и т.д.

    А вот с "global $tmplvars" такое уже не проходит.

      • 18098
      • 49 Posts
      насколько я помню тв храниться в пост под именами tv1, tv2,..,tvN а не по их названиям. Проверте сами создав простой плагин
      print_r($GLOBALS)
      там всю нужную инфу и найдете
        • 16017
        • 11 Posts
        Что-то никак не получается... И через обычные имена пробовал, и через tvN, и даже через tvname. Не могу понять, что делаю не так. Опыта пока мало undecided
          • 785
          • 2,113 Posts
          Quote from: Klaf at Jul 03, 2010, 12:49 PM

          global $content;
          $annotation=$_POST[’pagetitle’];
          При таком подходе можно изменить только контент, а, например, заголовок – нельзя (если не выполнять дополнительного запроса к базе данных). На момент события OnBeforeDocFormSave уже сформированы переменные для сохранения в базе, и массив $_POST больше не используется. Лучше брать данные из соответствующих переменных и сохранять в них же, объявляя их глобальными:
          global $content, $pagetitle, $tmplvars;
          где $tmplvars – массив переменных TV, подготовленный для сохранения. Если внести в него изменения, MODx сохранит их.
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации
            • 16017
            • 11 Posts
            Спасибо. Но я так и не понял, как мне пользовательские TV-переменные объявлять в плагине... По их именам или номерам?
            $price, $tvprice или $tv1?
            Оно ни так, ни сяк не хочет работать даже без массива POST sad


              • 785
              • 2,113 Posts
              Quote from: Klaf at Jul 04, 2010, 03:36 PM

              я так и не понял, как мне пользовательские TV-переменные объявлять в плагине... По их именам или номерам?
              Массив $tmplvars
                Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                Статьи о MODx, регулярно новые публикации
                • 16017
                • 11 Posts
                Вот как внутри этого массива переменные объявлять и не понятно тоже...
                Пробовал разные варианты, как написал выше, но внутри конструкции $tmplvars[’tv’]
                $tmplvars[’price’], $tmplvars[’tvprice’],$tmplvars[’tv21’],$tmplvars[’tv_21’] — что из этого должно работать?
                  • 785
                  • 2,113 Posts
                  Quote from: Klaf at Jul 05, 2010, 04:45 AM

                  что из этого должно работать?
                  Ничего.
                  $tmplvars[$tvid]=array($tvid,$value);
                  То есть
                  $tmplvars[2]=array(2,’Значение’);
                    Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                    Статьи о MODx, регулярно новые публикации
                    • 16017
                    • 11 Posts
                    То есть, как на примере это реализовать?

                    Допустим мне нужно в расширенный заголовок занести значение TV с идентификатором 26. Что делать?

                    global $content;
                    global $tmplvars;
                    $content[’longtitle’]=$tmplvars[26];

                    Такая конструкция должна работать? Если просто $content[’longtitle’]= 1; , то получается, а взять значение из TV уже не могу...
                      • 785
                      • 2,113 Posts
                      Quote from: Klaf at Jul 05, 2010, 09:48 PM

                      Что делать?
                      Учить PHP. Нужно что-то вроде этого:
                      global $longtitle, $tmplvars;
                      $longtitle=$tmplvars[26][1];
                        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                        Статьи о MODx, регулярно новые публикации