Евгений

Евгений

Был в сети 18 мая 2026, 06:26
Заказы не принимаю
Что-то не сработало. Вот весь код вызова:
[[!pdoResources?
                        &limit=`10`
                        &class=`UserFile`
                        &loadModels=`UserFiles`
                        &sortby=`rank`
                        &sortdir=`ASC`
                        &tpl=`ChudoTpl`
                        &where=`{
                            "UserFile.list":"chudo24",
                            "UserFile.active":1,
                            "Profile.fax":"11-13"
                                }`
                        &leftJoin=`{
                        	"Thumb": {
                        		"class": "UserFile",
                        		"on": "Thumb.parent = UserFile.id AND Thumb.properties LIKE '%w\":300,\"h\":200%'"
                        	}
                        	"Profile": {
                                    "class": "modUserProfile",
                                    "on": "UserFile.createdby = Profile.internalKey"
                            }
                        }`
                        &select=`{
                    	"UserFile": "*",
                    	"Thumb": "Thumb.url as thumb"
                    	"modUser": "*",
                        "Profile": "fax"
                        }`
                        ]]
Спасибо, попробовал, видать где-то косякнул, не работает. В итоге нужно поле факс в которое записан возраст. Подскажите, где ошибка?
&where=`{
      "UserFile.list":"one",
      "UserFile.active":1,
      "Profile.fax":"11-13"
          }`
&leftJoin=`{
  "Thumb": {
    "class": "UserFile",
    "on": "Thumb.parent = UserFile.id AND Thumb.properties LIKE '%w\":300,\"h\":200%'"
  }
  "Profile": {
        "class": "modUserProfile",
        "on": "modUser.id = Profile.internalKey"
  }
}`
&select=`{
"UserFile": "*",
"Thumb": "Thumb.url as thumb"
"modUser": "*",
"Profile": "fax"
}`
А можно фильтровать вывод картинок всех юзеров не только по UserFile.list, а еще и по какому-нибудь полю юзера (например, city)? Образно говоря есть конкурс картинок, где победители выбираются в каждом городе, поэтому все картинки надо разделить по городам.
Вы уж простите настойчивость, но вот чтобы вообще все вопросы снять такая еще задача — воткнуть эту форму в середину контента, который выводится контроллером officeAuth, то есть все таки вызвать officeProfile из шаблона tpl.Office.auth.logout — такое в принципе возможно?
ура! заработало!!! спасибо за терпение.
Для тех, кто с этим же столкнется, внимательно читаем документацию к контроллеру, а именно параметр &requiredFields
Список обязательных полей при редактировании. Эти поля должны быть заполнены для успешного обновления профиля. Например, &requiredFields=`username,fullname,email`
В моем случае дефолтный список менять не стал, просто добавил в шаблон формы эти поля в скрытых:
<form method="post" id="office-profile-form" enctype="multipart/form-data" class="form_db mb-4 row align-items-center">
    <input type="hidden" name="username" value="{$username}"/>
    <input type="hidden" name="fullname" value="{$fullname}"/>
    <input  type="hidden" name="email" value="{$email}"/>
	<label for="extended.video">Ссылка на видео</label><input type="text" size="20" name="extended[video]" value="[[+extended.video]]" class="ml-3" />    	
	<button type="submit">сохранить</button>
</form>
в 2-х браузерах смотрю в консоли — не вижу ошибок. Дело в том что я не очень то программист, очень начинающий, поэтому то и купил платное приложение. Предлагаю мучительный процесс обучения на собственных ошибках уже завершить и ткнуть носом в косяк. Пожалуйста!
Осознание благодаря действенной терапии Володи приходит, допер что надо вызывать officeProfile после officeAuth, сейчас в личном кабинете имеем:
[[!officeAuth? &groups=`Users` &HybridAuth=`0` ]]
[[!officeProfile? &profileFields=`extended[video]` &tplProfile=`tpl.Office.addvideo.form`]]
Такая конструкция выдает панельку с ошибкой «Ошибка при обновлении профиля»
Код шаблона
<form method="post" id="office-profile-form" enctype="multipart/form-data" class="form_db mb-4 row align-items-center">
	<label for="extended.video">Ссылка на видео</label> <input type="text" size="20" name="extended[video]" value="[[+extended.video]]" />    	
	<button type="submit">сохранить</button>
</form>
Где я опять косячу?
«Вы уже авторизованы в системе». Понимаю, что на странице в первую очередь идет вызов officeAuth, то есть в нем вызывать officeProfile, скорее всего, не правильно, тогда во возвращаемся к вопросу — как тогда в officeAuth записать что-то в профиль юзеру?
То есть вместо встроенных функций Office, которые рекомендует Володя, вы рекомендуете вызывать SendIt из кабинета пользователя (а точнее из шаблона кабинета авторизированного пользователя)? Спасибо, попробую. Вопрос решить надо, каким образом — не так важно. Просто не очень понятно почему не работает самописный сниппет, который работает на любой другой странице.
… Посмотрел SendIt, интересный плагин, тем более автор его советует, попробую, спасибо
По ссылке все еще раз внимательно прочел, все равно не получается. В шаблоне профиля пользователя tpl.Office.auth.logout вызываю контроллер профиля:
[[!officeProfile?
            &profileFields=`extended[video]`
            &tplProfile  = `tpl.Office.addvideo.form`
        ]]
шаблон tpl.Office.addvideo.form
<form method="post" id="office-profile-form" enctype="multipart/form-data" class="form_db mb-4 row align-items-center">
	<label for="extended.video">Ссылка на видео</label> <input type="text" size="20" name="extended[video]" value="[[+extended.video]]" />    	
	<button type="submit">сохранить</button>
</form>
Уже заполненные данные из поля в поле формы при загрузке страницы выводятся, а вот новые не перезаписываются. Как правильно сделать, направьте, пожалуйста?
Был точно такой же вопрос, добрые люди помогли, делюсь кодом плагина (верно выше написали, отмечаем в плагине галкой системное событие OnUserActivate)
<?php
switch ($modx->event->name) {
	case 'OnUserActivate':
        /* Включаем сервис почты */
        $modx->getService('mail', 'mail.modPHPMailer');
        $modx->mail->set(modMail::MAIL_FROM, $modx->getOption('emailsender'));
        $modx->mail->set(modMail::MAIL_FROM_NAME, $modx->getOption('site_name'));
        
        $profile = $user->getOne('Profile');
        $userId = $profile->get('internalKey');
        $userEmail = $profile->get('email');
        $userName = $profile->get('fullname');
        
        $modx->mail->address('to', 'your@address.ru');
        $modx->mail->set(modMail::MAIL_SUBJECT, 'Активирован новый пользователь на сайте');
        $modx->mail->set(modMail::MAIL_BODY, $modx->getChunk('user_active.tpl',array('id'=>$userId, 'email' => $userEmail, 'name' => $userName)));

        $modx->mail->setHTML(true);
        if (!$modx->mail->send()) {
            $modx->log(modX::LOG_LEVEL_ERROR, 'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
        }
        $modx->mail->reset();

		break;
}
надо еще чанк создать user_active.tpl
<h3>Пользователь активировал свой профиль</h3>
<p>id: [[+id]]</p>
<p>Имя: [[+name]]</p>
<p>Email: [[+email]]</p>
<p>Перейти к <a href="[[++site_url]]manager/?a=security/user/update&id=[[+id]]"> редактированию</a></p>
Пробовал — не получилось. Это на бэке? Куда надо подставить тогда? На фронте пробовал — ничего не поменялось:
[[!ufForm?
   &tplForm=`uf.form`
   &list=`listname`
   &anonym=`0`
   &dropzone=`{"maxFilesize":15,"maxFiles":50,"acceptedFiles":".jpg, .jpeg, .gif, .png, .pdf","template":"edit","resizeWidth":1500}`
   &class=`modUser`
   &modal=`{"buttons":"base","template":"edit"}`
   &parent=`[[!+modx.user.id]]`
   &active=`0`
]]
хотя насчет Gallery пока вопрос снимается — проверил на Mohost — галерея нормально грузит превьюхи и на PHP 8.1
Нарыл возможную причину — версия MySQL 8.0 у моего хостера, написал в саппорт с просьбой понизить до 5.1, отпишусь о результатах.