Всего 123 795 комментариев

Андрей Шевяков
06 сентября 2023, 20:31
0
Добрый день!
Такой вопрос возник.
В личном кабинете есть форма изменения данных пользователя.

<form action="#" data-si-form="dataForm" data-si-preset="dataedit">
                                    <p class="personal-subheading">Основные данные</p>
                                    <p class="personal-heading-dop">Обязательно укажите дату рождения, мы сделаем вам приятный подарок.</p>
                                    <div class="input-blocks">   
                                    	<div class="input-block">
                                    		<input type="text" name="fullname" value="{$_modx->user.fullname}">
                                    		<span class="placeholder">ФИО</span>
                        		            <span class="input-block__error" data-si-error="fullname"></span>
                                    	</div>
                                    	<div class="input-block">					
                                    		<input type="tel" name="mobilephone" value="{$_modx->user.mobilephone}">	
                                    		<span class="placeholder"></span>
                        		            <span class="input-block__error" data-si-error="mobilephone"></span>
                                    	</div>
                                    </div>
                                    <div class="input-blocks">
                                    	<div class="input-block">
                                    		<input type="email" name="email" value="{$_modx->user.email}">	
                                    		<span class="placeholder">Email</span>
                        		            <span class="input-block__error" data-si-error="email"></span>
                                    	</div>
                                        
                                    	<div class="input-block">					
                                    		<input type="date" name="dob" value="{$_modx->user.dob}">	
                                    		<span class="placeholder">Дата рождения</span>
                        		            <span class="input-block__error" data-si-error="dob"></span>
                                    	</div>
                                    </div>
                                    <div class="input-blocks input-block-w100">
                                    	<div class="input-block">
                                    		<button type="submit" class="btn btn-grey">Сохранить изменения</button>	
                                    	</div>
                                    </div>
                                </form>

Для нее используются такие настройки:
'dataedit' => [
        'hooks' => 'AjaxIdentification',
        'method' => 'update',
        'successMessage' => 'Данные успешно сохранены.',
        
        'clearFieldsOnSuccess' => 0,

        'validate' => 'fullname:required,mobilephone:required,email:email:required',
        'email.vTextRequired' => 'Укажите email.'
    ],

При таких настройках, можно в форме указать почту другого пользователя, который тоже есть в бд, и все сохранится. Как сделать, чтобы выдавал ошибку, что такой пользователь уже зарегистрирован и эту почту использовать нельзя?
Артур Шевченко
06 сентября 2023, 20:10
0
Про хук ничего не знаю, поэтому не могу сказать почему он не работает. А по поводу отсутствия уведомлений, надо смотреть консоль.
Артур Шевченко
06 сентября 2023, 20:07
0
МОжно в системный настройках удалить путь к css
Алексей Смирнов
06 сентября 2023, 20:07
0
А так у вас она не корневая, а с вложенностью… Этот скрин должен был быть в начале.
И тогда это все меняет дело.
нужно брать в зубы лом:
getChildIds
Получать родителей в массив и сравнивать.
те что-то такое
{set $allpara = $_modx->getChildIds(31,2,['template' => 3])}
... $allpara ... // возможно еще нужно сделать манипуляции какие-то.
//можно предварительно распечатать массив и убедиться тчо там все ровно:
<strong>{$allpara | print}</strong>
{if $_modx->resource.parent not in list $allpara}
  <div class="reward"><span>Артикул:</span> <span class="item">[[+article]]</span></div>
{/if}
Я образно показал какую функцию можно взять и что можно параметры засунуть.
вы, думаю, сможете указать верные. Шаблон подставьте какой у этих ресурсов, ну и глубину выборки по вкусу
31 — Id родителя
2 — глубина
template — шаблон.
Maks
06 сентября 2023, 19:06
0
Так и не запустил формы

Пресет
'onestepform' => [
'extends' => 'default',
'hooks' => 'FormItSaveForm,email,sendMessageTelegram',
'redirectTo' => 0,
'redirectTimeout' => 3000,
'clearFieldsOnSuccess' => 1,
'fieldNames' => 'name==Имя',
'successMessage' => 'Ваш запрос успешно отправлен! На протяжинии 30 минут вам перевзонит наш менеджер!',
],

Если в настройках default
'default' => [
'validate' => 'phone:required,name:required,email:email:required,politics:checkbox:required',
],

оставить все поля а мне надо только 2 поля проверять то форма не отправляется пишет Это поле обязательно.
Если же в настройках default
'default' => [
'validate' => 'phone:required,name:required',
],
оставить только нужные мне поля то сообщения об ошибке нет вообще.

Еще одно hooks sendMessageTelegram если раньше он на любом сниппете работал на fetchit на ajaxformlogin отправлял уведомления без проблем то сейчас не работает.
Anton
06 сентября 2023, 15:38
0
При добавлении кода GTM в HEAD на MODX revolution получаю белый экран, а в error.log данная ошибка.

[2023-09-04 14:50:55] (ERROR @ /var/www/u444/data/www/my-domain.com/core/components/pdotools/model/pdotools/pdotools.class.php : 999) Unexpected tag 'w' in head line 37, near '{w[' <- there in a7079a48faef018b6bba5ad8e296596e line 1, near '{include 'head'' <- there
Решение как написано выше после фигурных скобок надо ставить пробелы и это решает проблему
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){____пробел____ w[l]=w[l]||[];w[l].push({___пробел____'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-FFFFFFF');</script>
<!-- End Google Tag Manager -->
Maks
06 сентября 2023, 14:54
0
И еще одно. После установки подгружает шрифт на сайт с вашего файла css который идет с дополнением. Отключить его можно?
Наумов Алексей
06 сентября 2023, 14:28
0
значит там опечатка)))
Maks
06 сентября 2023, 13:51
0
Еще такой вопрос. Две формы на странице какие мне настройки для идентификации форм указывать
data-si-preset
или
data-si-form

Создал два пресета для двух языков

'onestepformru' => [
        'extends' => 'default',
        'hooks' => 'FormItSaveForm',
        'redirectTo' => 0,
        'redirectTimeout' => 3000,
        'clearFieldsOnSuccess' => 1,
        'fieldNames' => 'name==Возраст',
        'successMessage' => 'Ваш запрос успешно отправлен! На протяжинии 30 минут вам перевзонит наш менеджер!',
          'validate' => 'phone:required,name:required',
          'phone.vTextRequired' => 'Введите номер телефона',
          'name.vTextRequired' => 'Как к вам обращаться',
    ],    
    'onestepformuk' => [
        'extends' => 'default',
        'hooks' => 'FormItSaveForm',
        'redirectTo' => 0,
        'redirectTimeout' => 3000,
        'clearFieldsOnSuccess' => 1,
        'fieldNames' => 'name==Возраст',
        'successMessage' => 'Ваш запит успішно відправлено! Протягом 30 хвилин вам зателефонує наш менеджер!',
  'validate' => 'phone:required,name:required',
  'phone.vTextRequired' => 'Введіть номер телефону',
  'name.vTextRequired' => 'Як до вас звернутись',
    ],
Форма вроде как и работает только уведомления не показывает ни на одной.
pandaworks
06 сентября 2023, 13:33
0
Как оказалось, дело было не в плагине) Плагин работает. Оставляю решение для потомков)
Maks
06 сентября 2023, 12:42
0
Спасибо. Вызов взят кстати из документации.
Maks
06 сентября 2023, 12:42
0
Потом обновить страницу и вот такое вылазит.
Maks
06 сентября 2023, 12:41
0
Если пустое поля отправить.
Станислав
06 сентября 2023, 10:53
0
Добрый день. Есть новости по обновлению модуля?
Maks
06 сентября 2023, 10:50
0
Отлично. Все работает. Убрал Fetchit и запросов стало на 14 меньше.
Остался вопрос почему в консоли такие ошибки вылези?

Uncaught (in promise) TypeError: can't access property "closest", target is null
    resetAllErrors assets/components/sendit/web/js/modules/sending.js:250
    send /assets/components/sendit/web/js/modules/sending.js:107
    removeDir /assets/components/sendit/web/js/modules/fileuploader.js:273
    initialize /assets/components/sendit/web/js/modules/fileuploader.js:127
    initialize /assets/components/sendit/web/js/modules/fileuploader.js:126
    send /assets/components/sendit/web/js/modules/sending.js:119
    prepareSendParams /assets/components/sendit/web/js/modules/sending.js:86
    initialize /assets/components/sendit/web/js/modules/sending.js:42
    initialize /assets/components/sendit/web/js/modules/sending.js:36
    Sending /assets/components/sendit/web/js/modules/sending.js:26
    SendIt /assets/components/sendit/web/js/sendit.js:16
    promise callback*SendIt /assets/components/sendit/web/js/sendit.js:14
    <anonymous> /assets/components/sendit/web/js/sendit.js:105
    <anonymous> /assets/components/sendit/web/js/sendit.js:106
Константин
06 сентября 2023, 09:41
0
Пробую таким способом, артикул все таки выводится. На скриншоте проще показать: disk.yandex.ru/i/DiY5_EjPHyfklA
ID=31 — это самая верхняя категория которая в себе содержит десятки подкатегорий разной вложенности, и у товаров всех этих категорий, которые постоянно добавляются и убавляются, не нужно выводить артикул. Что бы не лезть постоянно в шаблон что бы прописать ID новой добавленной категории.
Наумов Алексей
06 сентября 2023, 08:27
0
В параметре thread рядом с resource потерян дефис:
'resource-' ~ $id
Алексей Смирнов
05 сентября 2023, 22:27
0
Просто пишите так:
{if $_modx->resource.parent not in list [29,31] }
  <div class="reward"><span>Артикул:</span> <span class="item">[[+article]]</span></div>
{/if}
это запрет вывода артикула на странице товара.
А исключить дочерние категории в списке — просто добавьте эти каталоги с минусом:
'parents' => '0,-29,-31'
но лучше вместо нуля вписать начальный каталог.