Виталий

Виталий

С нами с 25 октября 2019; Место в рейтинге пользователей: #706
Виталий
16 ноября 2022, 01:30
0
Все проверял, и article:0 и article:1, балы в нуле, со снипетом, что на сайте у Ильи Уткина, не работает точный поиск, mSearch2 наверное по другому алгоритму работает. Печаль конечно, для магазина запчастей, артикул одно из приоритетов в поиске.
Но это не совсем критично, так как дубли идут если только, в одном из поиске есть точное соответствие и оно дальше не изменяется. Т.е. 20025002 и 20025001 не дают дубли, а 20025002 и 20025002334 дают, таких соответствий немного, так что в принципе нормально.
Виталий
15 ноября 2022, 19:50
0
Алексей, балы ничего не меняют, наверное снипет поиска так работает. Со скобками, если честно ничего не понял. Спасибо.
Виталий
15 ноября 2022, 06:45
0
И еще один вопрос, убрал в фильтрах с помощью параметра
&suggestions=`0`
количество товаров, а подскажите как убрать скобки у производителя.
Виталий
13 ноября 2022, 18:22
0
Направление для решения понял, спасибо, если объем файлового хранилища на хостинге будет поджимать пойду по этому пути. Спасибо, вопрос закрыт.
Виталий
13 ноября 2022, 18:09
0
Алексей понял, спасибо, значит простого решения нет через параметры снипета, я это и хотел понять, оставлю этот вопрос тогда до лучших времен, так как это просто моя хотелка, принципиальной надобности в этом нет. А не подскажешь как вывести вместо заглушки фото товара, фото из TV поля, или там все тоже непросто и обычной заменой пути к адресу заглушки не обойтись и надо опять писать код.
Виталий
13 ноября 2022, 16:59
0
Так не получится, так как одна общая деталировка подгружается только к одной группе товаров, если прописать, что при отсутствии фото подгружать фото из папки А, то эта деталировка будет подгружаться ко всем товарам где нет фото. Мне как Алексей посоветовал наверное будет проще подгружать через TV фото деталировки, а при появление фото товара я его просто через карточку загружу, так не запутаюсь и все фото будут соответствовать товарам.
Виталий
13 ноября 2022, 16:39
0
Алексей, попытаюсь пояснить схематически.
Категория товаров одна в ней:

Товары | ID Связи | Карточка товара | Слайдер товаров

с 1 по 20 | 1 | допустим товар 11 | с 1 по 20
с 21 по 40 | 2 | допустим товар 25 | с 21 по 40
с 41 по 60 | 3 | допустим товар 49 | 41 по 60
с 61 по 80 | 4 | допустим товар 75 | с 61 по 80
Теперь поясню, группы товаров связаны связью(многие к многим) столбцы 1 и 2, в 3 столбце гипотетически просматриваемый товар покупателем, в последнем столбце то что транслирует слайдер. Если было бы возможно для каждой группы(был бы отдельный шаблон) писать снипет, проблем нет — выбираю по
parents
, но так как снипет один для всех групп, надо как-то оттолкнуться от Id просматриваемого товара, я так думаю. Я не знаю так можно например записать:
[[msProducts?
	&parents=`0`
	&ilink=`1,2,3,4`
       	&master=`[[*id]]`
]]
Будет снипет понимать, что покупатель сейчас смотрит например товар 49 и выводить в слайдер все товары с 41 по 60 связанные связью 3.
Виталий
13 ноября 2022, 00:50
0
Да я не стал писать полный вызов msProducts, там у меня и лимит есть и master прописан, дело то в другом,
Если я напишу
[[msProducts?
	&parents=`0`
	&ilink=`1`
       	&master=`15`
]]
То это не решит вопрос, снипет в шаблоне один, как другие связи вывести чтоб автоматом подгружались к id нужного товара, или мне надо выбрать связь «один ко многим» и вызывать так:
[[msProducts?
	&parents=`0`
	&ilink=`1,2,3`
       	&master=`15,23,46`
тогда снипет будет понимать из какой связи смотрит товар покупатель и будет подгружать в слайдер нужное.
Блин читаю мануал и не могу понять алгоритм, извиняюсь.
Виталий
12 ноября 2022, 21:58
0
Спасибо, с фото буду пробывать по вашему совету через TV.
По второму вопросу постараюсь пояснить:
Есть родитель у которого допустим 150 товаров, конкретно это какое-то оборудование(родитель) и товары(запчасти). Но запчасти имеют градацию чисто технически, допустим: топливная система, двигатель, шасси и т.д. Товары одной градации при создании я связываю связью «многие к многим», т.е. в одной категории товары идут связанные не со всеми в этой категории а по градации. Т.е. создаю связь с id 1 и связываю одну группу, потом создаю связь с id 2 и связываю другую и т.д.
В карточке товара есть блок-слайдер назовем его допустим «С этими товарами смотрят» где листаются товары которые связаны связью.
Вызов этого блока делаю:
[[msProducts?
	&parents=`102`
	&ilink=`1`	
]]
Вот в ID связи то все и дело, мне нужно чтобы слайдер листал в одной категории товары только связанные с тем что сейчас смотрит покупатель, и так как в
&ilink=`___`
стоит выставленная id связь, то в товарах этого же родителя, но в другой градации будут листаться опять товары Id связи №1. Вот я и спрашивал как можно сделать, чтобы в слайдере msProducts выводил только связи товара который сейчас смотрит покупатель.
Виталий
10 ноября 2022, 20:13
0
Спасибо, если у кого-то дойдут руки доделать ресурс перевода синтаксиса в обратном порядке было бы здорово. В сети много примеров всяких вкусностей для сайта с использованием Fenom, а на ресурсах запущенных при царе горохе, теги Modx очень актуальны, пока не найдешь времени функционал сайта перевести под Fenom, чтобы он не поплыл.
Виталий
10 ноября 2022, 12:40
0
Добрый день.
Ресурс однозначно в закладки кучу времени экономит. Подскажите а от обратного как перевести синтаксис Fenom на Modx, как синтаксисом Modx записать
{$total.cost}
и
{$total.count}
Виталий
29 октября 2022, 21:33
0
Александр, спасибо за участие.
1. Правильно конечно было поставить miniShop2, но для функционала задуманного это не надо, так как просто делаю информационный сайт, просто в силу специфики контента присутствует парт каталоги запчастей, вот и возникла мысль может люди кто занимается продажей захотят к себе целевую аудиторию, поэтому максимум на перспективу парсинг пользователей на мыло продавцов запчастей. И да таблица это просто название и артикул + привяжу деталировку и кнопка запроса. Остальные столбцы лишние, страница просто в тесте.
2. Поставщик это просто адресат кому надо отправить запрос.
3.Да все правильно, цель именно такая чтобы запрос ушел только на адрес соответствующий поставщику. Почему выпадающий список, ну вначале дали наводку пойти этим путем, вот как-то и пошло поехало.
P/s в принципе того что хотел я добился, последним костылем было очистка
option
если не выбран поставщик, сейчас хоть до усери жми кнопку пока не выберешь не отправится форма, ну и закрыв ее спокойно можно посмотреть номер поставщика, выбрать и отправить запрос, тем более при закрытии поля не очищаются и заполнять снова не придется останется только выбрать правильного поставщика. Конечно если было бы валидация со столбцом Поставщик, было бы вообще Огонь, но мне такое тяжело осилить. Если у вас есть другие более интересные способы решения было бы интересно послушать.
Виталий
29 октября 2022, 19:10
0
Артур, по первой проблеме решилось, сменил выводы ошибок, убрал jGrowl, сделал вывод в самой форме, теперь
<option>
если не выбрать поставщика не очищаются.
По вопросу Дело в том, что это не просто текст, а HTML, а с ним можно работать в js. Например можно кнопке, которая открывает модалку, добавить атрибут data-postavshik=«1» и при открытии модалки брать значение этого атрибута и вставлять в скрытое поле формы. если бы я мог платить, я бы не писал в раздел вопросы. Можно по этому вопросу подсказочку или отсылку на пример или мануал.Спасибо.
Виталий
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, 07:21
0
1. Исходники AjaxForm вроде не трогал, единственное где ковырял код это default.js. Снес и заново установил на всякий случай AjaxForm, ничего не изменилось.
2. В столбце таблицы Поставщик, в строках прописываю номер поставщика, в идеале конечно бы если бы перед отправкой AjaxForm сравнивал номер поставщика и если бы он не соответствовал выбору в форме, валидатор бы не давал отправить форму запроса. Но мне такое не осилить, хотя бы исправить чтобы
input
не очищался если вообще никто не выбран.
Виталий
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
Виталий
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