Как создать EVENT

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО

Как самому создать событие что бы использовать плагин

#1 5 апреля 2014 в 15:45
Приветствую!

Уже делал плагин на событие update_user_profiles. Понравилось =)

Хочу на странице пользователя разместить "кнопку" что б она выполняла опр. функционал(удаление данных из бд).
Понимаю что её нужно разместить в cms_user_profiles.tpl, но как? как ссылку? Куда? И как к ней привязать event, что б собственно плагин вызвать.
Заранее спасибо!
#3 5 апреля 2014 в 16:33
Странник, Спасибо! Но я же не могу в .tpl файл воткнуть php "ловушку". Куда мне указать ссылку, что бы там разместить ловушку, не подcкажите? ;)
#4 5 апреля 2014 в 17:09
Попробуйте в tpl разместить ловушку между тегами {php}...{/php}
Результат не гарантирую, поскольку так не пробовал делать, но попробуйте и отпишитесь, что вышло.
#5 5 апреля 2014 в 19:03
Ну не, так не получится, Может кто знает, отзавитесь!?
#6 5 апреля 2014 в 19:18
Dmitriy, вам нужно создать плагин роутера. Подробнее прочтите в релизе версии 1.10.2. Пункт "Плагины для действий компонентов". Для примера в системе есть демо плагин p_demo_route. Этот плагин будет определять нужное действие в компонент users. В теле плагина по подобию добавьте строки(отлавливаемые эвенты):
  1.  
  2. // События, которые будут отлавливаться плагином
  3. $this->events[] = 'GET_ROUTE_USERS';
  4. $this->events[] = 'GET_USERS_ACTION_I_DELETE';
  5.  
Далее нужное действие будет доступно по ссылке /users/i_delete.html, т.е. в профиле юзера (cms_user_profiles.tpl) вставляем ссылку с атрибутом href="/users/i_delete.html"
Соответственно, i_delete — это пример, можете действие назвать как вам нужно.
Примерно так, где-то в мелочах могу ошибаться. Проверяете методом тыка :=)
#7 5 апреля 2014 в 19:21
Марат, сколько раз вы меня выручали! Огромное спасибо! Буду разбираться =)
#8 5 апреля 2014 в 20:07
Марат, а не знаете как теперь в этот плагин id юзера передать?
#9 5 апреля 2014 в 23:20
  1. $inUser = cmsUser::getInstance();
  2.  
  3. $inUser->id это и есть ид юзера
#10 6 апреля 2014 в 09:50
neomaster, Спасибо, работает😊Не подскажете, я при усешном выполнение sql запроса перенаправил пользователя с помощью header на его страницу. А как ему сообщение теперь вывести, что "удаление прошло успешно", или наобарот.
#11 6 апреля 2014 в 10:20
  1. if(запрос прошел){
  2. cmsCore::addSessionMessage('Ура-ура', 'success');
  3. } else {
  4. cmsCore::addSessionMessage('Запрос потерялся', 'error');
  5. }
  6. redirect....
#12 6 апреля 2014 в 11:23
Pasha, Куда это сообщение должно выводиться? Сделал, как вы написали
  1. $sql = "запрос к бд";
  2. $result = $this->inDB->query($sql);
  3. if($result){
  4. cmsCore::addSessionMessage('Ура-ура', 'success');
  5. }else{
  6. cmsCore::addSessionMessage('Запрос потерялся', 'error');
  7. }
  8. header("Location:{$inUser->login}");
#13 6 апреля 2014 в 11:37
Это обычные сессионные сообщения, как и куда они выводятся в вашем шаблоне я понятия не имею, а в шаблоне _default_ эти сообщения выводятся так:
  1. <?php $messages = cmsCore::getSessionMessages(); ?>
  2. <?php if ($messages) { ?>
  3. <div class="sess_messages">
  4. <?php foreach($messages as $message){ ?>
  5. <?php echo $message; ?>
  6. <?php } ?>
  7. </div>
  8. <?php } ?>
#14 6 апреля 2014 в 11:50
Pasha, ну такая строка у меня тоже есть. Но сообщения все равно не выводятся, в чем может быть проблема?
#15 6 апреля 2014 в 12:26
Проблема может быть в чем угодно, но поскольку информации от том, что конкретно вы делаете нет сказать ничего внятного не могу. Я например не понимаю куда это вы пытаетесь кого-то переадресовать таким образом — header("Location:{$inUser->login}");
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.