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

Артур Шевченко
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
Михаил
26 октября 2022, 08:24
+1
Вот тут найдете ответ. Vue + MODx
Николай
25 октября 2022, 23:30
0
такая ошибка выходила когда был неверно указан Секретный ключ магазина. Может неверно указан параметр Витрина магазина.
Александр Туниеков
25 октября 2022, 16:38
+1
В общем. Думаю надо тв позиции в каталоге email
при выводе
<a data-email="[[+email]]">запросить цену</a>
js берем data-email и подставляем в скрытое поле
добавить в форму скрытое поле в котором будет указан адрес получателя
Александр Туниеков
25 октября 2022, 16:24
0
А если феном использовать?
{switch каталог}
{case 'поставщик1'}
{'!formit' | snippet : ['emailto'=>'a1@b.ru']}
{case 'поставщик2'}
{'!formit' | snippet : ['emailto'=>'a2@b.ru']}
{/switch}
или заводишь тв email в каталоге. Когда показываешь каталог цепляешь тв и в формит на каждую позицию с отдельным емаил. Хотя так конечно ерунда получается.
Артур Шевченко
24 октября 2022, 20:19
+1
Я прекрасно вас понял. Вам нужно сделать выбор вместо пользователя, т.е. добавить в форму скрытое поле в котором будет указан адрес получателя и менять его по нужным вам условиям или при помощи JS или средствами CMS, смотря какие условия. В вашем случаем можно в шаблоне проверять родителя текущего товара и в зависимости от него устанавливать почту получателя.
Виталий
24 октября 2022, 19:47
0
Артур, мы немного не поняли друг друга, твоя подсказка подразумевает выбор почты со стороны пользователя. А мне необходимо, чтобы пользователь просто отправлял дефолтный запрос, а пути следования запроса к адресату я указываю. Другими словами, объясню проще: в каталоге запчастей допустим я договорился со сторонней организацией что запросы пользователей по определённым позициям будут приходить на почту этой организации. С другой организацией такой же договорняк. А пользователь должен просто клацать запрашивая стоимость, ему не нужно знать какая организация получит запрос. Главное чтобы почта ушедшая с одной позиции организации номер 1 не приходила организации №2.
Так что, я опять на начале пути, еще бы подсказку…
Артур Шевченко
24 октября 2022, 18:44
0
Да уже давно никто не сомневается в его способностях)))
Николай Савин
24 октября 2022, 17:56
0
Предположу, Он имеет в виду, что очень умен и тоже может решить подобную задачу, но с уже с применением трех классов вместо одного.
Артур Шевченко
24 октября 2022, 13:04
0
Дык, я без претензий, просто поделился кейсом. Я бы и сам облаком не пользовался, но заказчик хочет видео отзывы, а на обычном хостинге много не сохранишь, вот и решили воспользоваться облаком, тем более, что всё уже было почти готово)))
Наумов Алексей
24 октября 2022, 12:33
0
привет, прочитал статью!
Да, я поправлю и выпущу обновление.
Нюанс в том, кол-во пользователей облаков минимально и никто не сталкивался с этим в easyComm, да и я сам тоже)
Артур Шевченко
24 октября 2022, 11:01
0
Привет, ты своими словами объясни, а я погуглю, а то ссылка не открывается.
Артур Шевченко
24 октября 2022, 11:00
+1
Мне кажется если и засылать, то к EasyComm