Всего 123 803 комментария

Виталий
28 октября 2022, 13:37
0
А обработчики события af_complete есть?
Раньше показывал скрипт modal.js он выше в теле публикации
$(document).on('af_complete', function(event, response) {
    if (response.success) { //Если форма заполнена и нет ошибок
   $('#modal_form')
	.animate({opacity: 0, top: '45%'}, 500,  // плaвнo меняем прoзрaчнoсть нa 0 и oднoвременнo двигaем oкнo вверх
		function(){ // пoсле aнимaции
		$(this).css('display', 'none'); // делaем ему display: none;
		$('#overlay').fadeOut(400); // скрывaем пoдлoжку
про ваш второй вопрос
Открытие модалки же сделали, сделайте, чтобы при этом номер поставщика из строки вставлялся в скрытое поле в форме.
Не могу понять как можно привязать кусок текста в контенте к выбору поставщика в форме, может хоть подсказку где почитать об этом или просто если можете кусок кода
<input type="hidden".........
Сергей
28 октября 2022, 12:27
0
Основная проблема в формировании ссылки. Остальное не вызывает вопросов :)
Нет понимания можно ли как-то повторно сгенерировать ссылку.
Артур Шевченко
28 октября 2022, 12:09
0
Исходники AjaxForm вроде не трогал
А обработчики события af_complete есть?

В столбце таблицы Поставщик, в строках прописываю номер поставщика
Открытие модалки же сделали, сделайте, чтобы при этом номер поставщика из строки вставлялся в скрытое поле в форме.
Артур Шевченко
28 октября 2022, 12:05
0
Вероятно надо сниппет переписывать, чтобы он мог работать с несколькими связями сразу.
Артур Шевченко
28 октября 2022, 11:57
0
Тут можешь посмотреть как создать ссылку. Как отправлять письма в Modx можно нагуглить. А дальше нужно отталкиваться от конкретной задачи. Если напоминать, то нужно создавать задачу в планировщике сервера, выбирать всех не активных пользователей и рассылать ссылки на активацию.
Михаил
28 октября 2022, 08:32
+1
Ну если выводить отдельным блоком, то я бы создал ТВ в категории с выбором нужных ресурсов и выводил. И все
Константин
28 октября 2022, 08:29
0
В каталоге труб — фитинги, в каталоге дверей — ручки и петли, в каталоге ноутбуков — мышки
Михаил
28 октября 2022, 08:24
0
А какой смысл этого в каталоге? В каталоге куча товаров, с каждым из них что то покупают.
Виталий
28 октября 2022, 07:21
0
1. Исходники AjaxForm вроде не трогал, единственное где ковырял код это default.js. Снес и заново установил на всякий случай AjaxForm, ничего не изменилось.
2. В столбце таблицы Поставщик, в строках прописываю номер поставщика, в идеале конечно бы если бы перед отправкой AjaxForm сравнивал номер поставщика и если бы он не соответствовал выбору в форме, валидатор бы не давал отправить форму запроса. Но мне такое не осилить, хотя бы исправить чтобы
input
не очищался если вообще никто не выбран.
Артур Шевченко
28 октября 2022, 00:04
0
По первой проблеме. Всё как я и говорил у тебя стоит валидатор на поле emailselect, которое исчезает после второй неудачной попытки отправить форму. такое ощущение, что исходники AjaxForm переписаны, так как form.reset() срабатывает при неудачной отправке, из-за чего удаляется всё что внутри emailselect.
А по второй проблеме напомни почему именно пользователь должен выбрать emailselect? И как определить какого именно надо быбрать?
Виталий
27 октября 2022, 22:39
0
Столбец «Запросить стоимость» — открыть окно. Понимаю что на ссылку не похоже, но говорю эта страница тестовая, потом что-нибудь придумаю, либо цветом и подчеркиванием текста выделю либо кнопку сделаю.
Виталий
27 октября 2022, 17:05
0
Артур по первой проблеме добавил валидацию, выбор поставщика теперь подсвечивается, но… если упоротый пользователь повторно кликнет не выбрав Поставщика в форме выбора все
input
очищаются, при третьем клике форма закрывается с оповещением что отправлено, но почта не уходит. Испытал все способы что тут описывали
https://modx.pro/help/8772
, проблему не решает.
По второму вопросу кастомный валидатор, мне такое не осилить буду признателен если кто поможет.
Вызов теперь такой
[[!AjaxForm?
   &snippet=`FormIt`
   &hooks=`email`
   &emailFrom=`1@site.ru`
   &form=`tpl.AjaxForm`
   &emailTpl=`modal-zv-tpl`
   &emailSelectTo=`1@site.ru;2@site.ru;3@site.ru`
   &emailSelectToName=`1;2;3`
   &emailSelectField=`emailselect`
   &emailSubject=`Заказ звонка с сайта`
   &validate=`name-zv:required,email:email:required,phone-zv:required,message:required,,emailselect:required`
   &validationErrorMessage=`Пожалуйста, заполните поля помеченные *`
   &successMessage=`Сообщение успешно отправлено, наш менеджер свяжется с Вами в ближайшее время`
]]
Форма чанка tpl.AjaxForm
<form method="post" class="ajax_form af_example">
        <input type="hidden" name="title" value="[[*pagetitle]]">
	    <input type="hidden" name="link" value="[[*uri]]">
        <input type="text" placeholder="Как вас зовут? *" value="[[+fi.name-zv]]" name="name-zv" id="name" class="input_text form-control"/>
        <input type="text" placeholder="Email *" name="email" value="[[!+fi.email]]" id="email" class="phone-zv form-control"/>
        <input type="text" placeholder="Контактный телефон *" name="phone-zv" value="[[+fi.phone-zv]]" id="phone-zv" class="phone-zv form-control"/>
        <input type="text" placeholder="Сообщение *" name="message" value="[[!+fi.message]]" id="message" class="phone-zv form-control"/>
		<select name="emailselect" id="emailselect" >
    <option value="" selected disabled>Выбрать поставщика</option>
    <option value="1" [[!+fi.emailselect:default=`1`:FormItIsSelected=`2`]]>Поставщик 1</option>
    <option value="2" [[!+fi.emailselect:default=`2`:FormItIsSelected=`3`]]>Поставщик 2</option>
    <option value="3" [[!+fi.emailselect:default=`3`:FormItIsSelected=`4`]]>Поставщик 3</option>
  </select>
		<div class="comment">Поля отмеченные <span class="required">*</span> обязательны для заполнения</div>
        <input class="button" type="submit" value="Перезвоните мне">
        [[+fi.success:is=`1`:then=`
    <div class="alert alert-success">[[+fi.successMessage]]</div>
    `]]
    [[+fi.validation_error:is=`1`:then=`
    <div class="alert alert-danger">[[+fi.validation_error_message]]</div>
    `]]
    
</form>
Страница где тестирую
http://pdfmanual.ru/zakaz-cherez-formu-1
Баха Волков
27 октября 2022, 12:03
-1
Пользуйтесь поиском, запрос буквально такой: «MIGX в MIGX fenom» и получаете миллион таких же вопросов где в каждом есть один и тот же ответ
Артур Шевченко
27 октября 2022, 11:55
-1
Непонятно только зачем тебе вообще getImageList, если можно получить значение TV и так же в цикле разобрать.
Vladimir
27 октября 2022, 09:34
+1
Нужно изначально запускать migx в fenom
{set $contactsRows = 1 | resource : 'contacts' | fromJSON}
{foreach $contactsRows as $idx => $contactsItemRow}

{/foreach}
Потом внутри запустить так

{set $phonesRaw = $contactsItemRow.phones | fromJSON}
{foreach $phonesRaw as $idx => $phone}
    <a href="tel:{$phone.title | preg_replace:'/[^0-9\+]|/': ''}">
        <span>{$phone.title} {if $phone.title1}—{/if} </span>
        {if $phone.title1}<strong>{$phone.title1}</strong>{/if}
    </a>                              
{/foreach}


В итоге будет так

{set $contactsRows = 1 | resource : 'contacts' | fromJSON}
{foreach $contactsRows as $idx => $contactsItemRow}

    {set $phonesRaw = $contactsItemRow.phones | fromJSON}
    {foreach $phonesRaw as $idx => $phone}
        <a href="tel:{$phone.title | preg_replace:'/[^0-9\+]|/': ''}">
            <span>{$phone.title} {if $phone.title1}—{/if} </span>
            {if $phone.title1}<strong>{$phone.title1}</strong>{/if}
        </a>                              
    {/foreach}
{/foreach}
Артур Шевченко
26 октября 2022, 23:16
+1
1. Почему то при не выборе поставщика срабатывает уведомление что отправлено, хотя ничего на почту не приходит.
Скорее всего в вызове есть валидатор для поля, которого нет в форме. Во всяком случае у меня недавно была такая же проблема и решилась она добавлением потерянного поля.

2. И еще не соображу как привязать нумерацию в столбце Поставщик к выбору поставщика в форме, чтобы отрабатывалась ошибка что выбран не соответствующий поставщик.
Вероятно нужен кастомный валидатор для этого поля.
Виталий
26 октября 2022, 22:55
0
Решил проблему с ошибками с jquery 1.8.3 в консоли сейчас чисто(просто удалил лишние скрипты наверное конфликтовали), начал срабатывать
&successMessage
.
Осталось решить вопрос:
1. Почему то при не выборе поставщика срабатывает уведомление что отправлено, хотя ничего на почту не приходит.
2. И еще не соображу как привязать нумерацию в столбце Поставщик к выбору поставщика в форме, чтобы отрабатывалась ошибка что выбран не соответствующий поставщик.
Виталий
26 октября 2022, 13:00
0
Парни спасибо за советы, но к сожалению для меня это слишком сложно прописать в JS как будет меняться почта.
Выбрал вариант для чайника с выбором почты со стороны пользователя, просто добавлю в таблицу еще один в столбец: — Поставщик
Наименование - Деталировка -Артикул-Наличие-Поставщик-Запросить цену
Проверил все работает, при выборе почта уходит по назначению, единственное надо как-то связать этот столбец Поставщик (номер поставщика) с формой, чтобы при выборе если пользователь случайно выбрал не того поставщика выскакивала ошибка, что «Выбранный Поставщик не соответствует позиции».
Так как использую старый шаблон то jquery-1.3.2.min.js, возможно из-за этого не срабатывает
&successMessage
, ошибка в консоли
default.js:16 Uncaught TypeError: $(...).off is not a function

modal.js:21 Uncaught TypeError: $(...).on is not a function
при попытке обновить jquery до v.1.8.3 ошибки в консоли пропадают, но при вызовы модальное окно отсутствует только остается фон.
Вызов AjaxForm
[[!AjaxForm?
   &snippet=`FormIt`
   &hooks=`email`
   &emailFrom=`1@site.ru`
   &form=`tpl.AjaxForm`
   &emailTpl=`modal-zv-tpl`
   &emailSelectTo=`1@site.ru;2@site.ru;3@site.ru`
   &emailSelectToName=`1;2;3`
   &emailSelectField=`emailselect`
   &emailSubject=`Заказ звонка с сайта`
   &validate=`phone-zv:required`
   &validationErrorMessage=`Пожалуйста, заполните поля помеченные *`
   &successMessage=`Сообщение успешно отправлено, наш менеджер свяжется с Вами в ближайшее время`
]]
</div>
<div id="overlay"></div>
Чанк формы tpl.AjaxForm
<form method="post" class="ajax_form af_example">
        <input type="hidden" name="title" value="[[*pagetitle]]">
	    <input type="hidden" name="link" value="[[*uri]]">
        <input type="text" placeholder="Как вас зовут?" value="[[+fi.name-zv]]" name="name-zv" id="name" class="input_text form-control"/>
        <input type="text" placeholder="Контактный телефон *" name="phone-zv" value="[[+fi.phone-zv]]" id="phone-zv" class="phone-zv form-control"/>
		<div class="comment">Поля отмеченные <span class="required">*</span> обязательны для заполнения</div>
        <input class="button" type="submit" value="Перезвоните мне">
        [[+fi.success:is=`1`:then=`
    <div class="alert alert-success">[[+fi.successMessage]]</div>
    `]]
    [[+fi.validation_error:is=`1`:then=`
    <div class="alert alert-danger">[[+fi.validation_error_message]]</div>
    `]]
    <select name="emailselect">
    <option value="" selected disabled>Выбрать поставщика</option>
    <option value="1" [[!+fi.emailselect:default=`1`:FormItIsSelected=`2`]]>Поставщик 1</option>
    <option value="2" [[!+fi.emailselect:default=`2`:FormItIsSelected=`3`]]>Поставщик 2</option>
    <option value="3" [[!+fi.emailselect:default=`3`:FormItIsSelected=`4`]]>Поставщик 3</option>
  </select>
</form>
JS скрипт modal.js
$(function() { // вся мaгия пoсле зaгрузки стрaницы
	$('.modal').click( function(event){ // лoвим клик пo ссылки с class="modal"
	event.preventDefault(); // выключaем стaндaртную рoль элементa
	$('#overlay').fadeIn(400, // снaчaлa плaвнo пoкaзывaем темную пoдлoжку
	function(){ // пoсле выпoлнения предъидущей aнимaции
	$('#modal_form') 
	.css('display', 'block') // убирaем у мoдaльнoгo oкнa display: none;
	.animate({opacity: 1, top: '50%'}, 200); // плaвнo прибaвляем прoзрaчнoсть oднoвременнo сo съезжaнием вниз
	});
	});
	/* Зaкрытие мoдaльнoгo oкнa, тут делaем тo же сaмoе нo в oбрaтнoм пoрядке */
	$('.exit, #overlay').click( function(){ // лoвим клик пo крестику или пoдлoжке
	$('#modal_form')
	.animate({opacity: 0, top: '45%'}, 200,  // плaвнo меняем прoзрaчнoсть нa 0 и oднoвременнo двигaем oкнo вверх
		function(){ // пoсле aнимaции
		$(this).css('display', 'none'); // делaем ему display: none;
		$('#overlay').fadeOut(400); // скрывaем пoдлoжку
		}
	);
});
$(document).on('af_complete', function(event, response) {
    if (response.success) { //Если форма заполнена и нет ошибок
   $('#modal_form')
	.animate({opacity: 0, top: '45%'}, 500,  // плaвнo меняем прoзрaчнoсть нa 0 и oднoвременнo двигaем oкнo вверх
		function(){ // пoсле aнимaции
		$(this).css('display', 'none'); // делaем ему display: none;
		$('#overlay').fadeOut(400); // скрывaем пoдлoжку
    });
    }
    });
});
Был бы признателен если тыкнете носом где ошибка в коде и как исправить
страница где тестирую jquery-1.3.2.min.js
http://pdfmanual.ru/zakaz-cherez-formu
страница где тестируюjquery-1.8.3.min.js
http://pdfmanual.ru/zakaz-cherez-formu-1
deleted
26 октября 2022, 10:08
0
А как во vue роуты нельзя делать? Типа так: site/app#/settings/delivery