We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 1113
    • 11 Posts
    Доброго дня! Кто может подсказать, как ПРАВИЛЬНО писать плагины? В смысле, чтобы они работали.
    Конкретно моя проблема: пишу плагин, назначаю его выполнение на определенные события, которые гарантированно происходят. В итоге работает только с тем, что не нужно.

    Расскажите, кто знает, как создать свое событие?
    Я вот пробую в WebLoginPE внести такое:
    $modx->invokeEvent("OnWUsrFormRender");

    и на это событие вешаю элементарный плагин:
    global $modx;
    $e = &$modx->Event;
    
    if($e->name == 'OnWUsrFormRender')
    {
    	print "<h1>!!!</h1>";
    };
    

    Не выводит ничего. А если этот же плагин закрепить за событием OnWUsrFormRender, то срабатывает.

    Может я не до конца вкурил саму концепцию событий в MODx? Подскажите, кто сможет!
    Спасибо!
      • 785
      • 2,113 Posts
      В плагине можно попробовать
      $e->output(’Что-то’);
      А в вызове print_r ($modx->invokeEvent("OnWUsrFormRender"));
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 1113
        • 11 Posts
        Спасибо, но не срабатывает. и print_r ($modx->invokeEvent("OnWUsrFormRender")) тоже ничего не выводит. Такое ощущение, что не работает именно событие. Хотя в системе оно вроде зарегистрировано (в настройках плагина есть) и на другие события плагины вешаются... С чем такое может быть связано?
          • 785
          • 2,113 Posts
          Создайте сниппет
          <?php
          $modx->invokeEvent("OnWUsrFormRender");
          ?>
          и плагин с кодом выше (без моих добавлений) - все работает. Если не работает, значит проблема в других плагинах. А если так работает, значит проблема в добавлении данного кода в нужный сниппет.
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации
            • 1113
            • 11 Posts
            Спасибо большое, буду разбираться.

            Чтобы было понятнее: работаю над интернет-магазином на базе MODx Evo 1.0.5 с использованием отличного на мой взгляд решения Shopkeeper от Andchir.
            На данном этапе стоит задача сделать личный кабинет пользователя. В нем делаю возможность изменения учетной записи покупателя, используя WebLoginPE. При этом самая сложная задача — поле «Адрес». Но чтобы оно было именно цельным полем, а не набором полей как в стандартном WebSignup. В WebLoginPE пытаюсь внедрить событие «OnWUsrFormRender», но пока, как видите, не очень-то получается.

            Изначально юзал плагин от Andchir «addWebUserFields», но он сохраняет данные в таблицу, недоступную для WebLoginPE.
              • 785
              • 2,113 Posts
              Quote from: Alien at May 14, 2011, 12:29 PM

              делаю возможность изменения учетной записи покупателя, используя WebLoginPE
              Я раньше пытался дорабатывать этот сниппет, но в нем было слишком много глюков. На практике часто проще с нуля сделать что-то свое, чем использовать монстроподобные универсальные программы.
              Добавление и редактирование учетной записи – не слишком сложная задача, и, как мне кажется, проще написать свой сниппет, чем дорабатывать WebLoginPE. А для авторизации проще использовать WebLogin.
                Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                Статьи о MODx, регулярно новые публикации
                • 1113
                • 11 Posts
                Опытным путем установил, что событие OnWUsrFormRender отрабатывается только усли параллельно запускается плагин следующего вида
                global $modx;
                $e = &$modx->Event;
                
                if($e->name == 'OnWUsrFormRender')
                {
                	print "<h1>!!!</h1>";
                };
                

                на то же самое событие. Ну и самое странное — работает, даже если вызов этого тестового плагина есть, а сам плагин ОТКЛЮЧЕН undecided...
                  • 785
                  • 2,113 Posts
                  Quote from: Alien at May 14, 2011, 02:03 PM

                  отрабатывается только усли параллельно запускается плагин следующего вида
                  . . .
                  на то же самое событие.
                  Это как? Непонятно написано.
                    Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                    Статьи о MODx, регулярно новые публикации
                    • 1113
                    • 11 Posts
                    Ой, извините. tongue Я уже и сам запутался в своем проекте. Это не плагин срабатывает, это просто я вместе с вызовом WebLoginPE вызываю сниппет следующего содержания:
                    <?php
                    $modx->invokeEvent("OnWUsrFormRender");
                    ?>
                    

                    как Вы и советовали вначале.
                    То есть, выходит, что событие не запускается из WebLoginPE.
                      • 18573
                      • 30 Posts
                      >на то же самое событие. Ну и самое странное — работает, даже если вызов этого тестового плагина есть, а сам плагин ОТКЛЮЧЕН Undecided...

                      скорее всего кеш не очищен.

                      я когда в бешенство впадаю то использую
                      $modx->messageQuit(’message’);