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