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

Дима Касаткин
03 февраля 2023, 18:41
+2
По их промо-сайту еле-еле можно разобрать что такое это enKod вообще, но кажется я смог:

Короче enKod это сервис работы с клиентской базой для сайтов и магазинов из двух частей:
1. Подписчики и рассылки
1.1 Функционал Email и Push/SMS сообщений (типа SendPulse и аналогов) для рассылок.
1.2 Ну и инструментарий для пополнения и сегментации баз, включая JS-трекер активности вроде Яндекс.Метрики

2. Виджеты для сайта
2.1 Всплывающие окна подпишись и получи нечто, для пополнения базы клиентов из п.1.1
2.2 Товарные рекомендации типа расстановка ссылок для блока «вам также может быть интересно» в корзине интернет-магазина или где-то ещё на сайте, видимо на основе данных, собираемых функционалом из п.1.2

P.S. Я там не работаю, просто сам недолюбливаю мутные лендинго-подобные сайты (как у enKod) где вместо подробностей вам предлагают записаться на демонстрацию к продажнику от которого наверняка потом придется телефон в реку выбрасывать чтобы не доставал ;-)

Так-то в кейсах у них вся инфа есть, но чтобы её добыть надо прям изучать их несколько… Прямо чувствуешь на этом сайте себя тунцом каким-то, который заглатывает наживку, маркетологи сказали бы что очень такой «цепкий сайтец» с хорошей грубиной просмотра… но мне от пребывания на таких как-то не по себе ¯\_(ツ)_/¯ Хоть сервис по итогу для своей ЦА интересный… но какие тарифы вам на сайте даже примерно не намекнут, запишитесь на демо… ага...
Павел Романов
03 февраля 2023, 18:26
0
Не знаю, выражение работает для всех вариантов:
Артур Шевченко
03 февраля 2023, 18:14
0
Понятно. Смысл в том, что пустое поле типа checkbox не передается на сервер, поэтому нужно создать другое поле типа hidden и проверять именно его, а чтобы значение в поле типа hidden менялось нужно в атрибуте data-afl-required указать имя проверяемого поля. Т.е. должно быть так
<div class="pole pole-checkbox">
            <div class="pole-label">Тип помещения <span class="error_floor">[[+fi.error.room]]</span></div>
            <input type="hidden" name="room-control" value=""/>
            <div class="pole-checkbox-item">
                <input id="room_1" type="radio" name="room[]" value="Квартира" data-afl-required="oom-control" [[!+fi.room:FormItIsChecked=`Квартира`]] >
                <label for="room_1">Квартира</label>
            </div>
            <div class="pole-checkbox-item">
                <input id="room_2" type="radio" name="room[]" value="Частный дом" data-afl-required="oom-control" [[!+fi.room:FormItIsChecked=`Частный дом`]]>
                <label for="room_2">Частный дом</label>
            </div>
            <div class="pole-checkbox-item">
                <input id="room_3" type="radio" name="room[]" value="Гостиница" data-afl-required="oom-control" [[!+fi.room:FormItIsChecked=`Гостиница`]]>
                <label for="room_3">Гостиница</label>
            </div>
            <div class="pole-checkbox-item">
                <input id="room_4" type="radio" name="room[]" value="Коммерческое помещение" data-afl-required="oom-control" [[!+fi.room:FormItIsChecked=`Коммерческое помещение`]]>
                <label for="room_4">Коммерческое помещение</label>
            </div>
        </div>
А в вызове
'validate' => 'room-control:minValue=^1^',
'room-control.vTextMinValue' => 'Выберите значение.'
Артур Шевченко
03 февраля 2023, 18:08
0
Переехать можно куда угодно. Но неплохо было бы понять, какие именно проблемы вы за три года так и не решили?
Артур Шевченко
03 февраля 2023, 18:05
0
Ну сделайте тоже самое в чанке письма.

{set nadbavka = ((($order.cost  - $order.cart_cost - $order.delivery_cost) * 100) / 100) | round}
Сергей Карпович
03 февраля 2023, 17:55
0
присутствует:
<input type="hidden" name="room[]" value="" data-afl-required="room"/>
Артур Шевченко
03 февраля 2023, 17:53
0
Предположу, что разметка неверная. Не вижу контрольного поля и атрибута data-afl-required
Сергей Карпович
03 февраля 2023, 17:47
0
если использую просто room:required — то все равно ошибка в консоли вылетает, как только валидатор по этому полю убираю — форма работатет
Сергей Карпович
03 февраля 2023, 17:34
0
Подскажите как правильно прописать проверку заполненности множественного поля checkbox?
Вот мое поле из формы:
<div class="pole pole-checkbox">
            <div class="pole-label">Тип помещения <span class="error_floor">[[+fi.error.room]]</span></div>
            <input type="hidden" name="room[]" value="" data-afl-required="room"/>
            <div class="pole-checkbox-item">
                <input id="room_1" type="radio" name="room[]" value="Квартира" [[!+fi.room:FormItIsChecked=`Квартира`]] >
                <label for="room_1">Квартира</label>
            </div>
            <div class="pole-checkbox-item">
                <input id="room_2" type="radio" name="room[]" value="Частный дом" [[!+fi.room:FormItIsChecked=`Частный дом`]]>
                <label for="room_2">Частный дом</label>
            </div>
            <div class="pole-checkbox-item">
                <input id="room_3" type="radio" name="room[]" value="Гостиница" [[!+fi.room:FormItIsChecked=`Гостиница`]]>
                <label for="room_3">Гостиница</label>
            </div>
            <div class="pole-checkbox-item">
                <input id="room_4" type="radio" name="room[]" value="Коммерческое помещение" [[!+fi.room:FormItIsChecked=`Коммерческое помещение`]]>
                <label for="room_4">Коммерческое помещение</label>
            </div>
        </div>
в стиппете указываю валидатор:
'validate' => 'room:minValue=^1^',
'room.vTextMinValue' => 'Выберите значение.'
На выходе валидация не работает, при отправке формы ошибки в консоли
Alexey
03 февраля 2023, 17:20
0
Привет!

Я не разбирался в сессиях компонента, если честно. Но у mSync есть событие mSyncAfterImport, по которому принимается массив выгруженных товаров: новых и обновленных. На мой взгляд, проще написать плагин на это событие, в котором будут прилетать выгруженные товары. И потом их сравнить с существующими на сайте.

Вот пример плагина, который публикует товары, которые были в выгрузке (перед импортом весь каталог снимается с публикации, но это в другом плагине):

if ($modx->event->name == 'mSyncAfterImport') {
    $good_ids = $importResources['product']['updated'];
    $good_ids = array_unique(array_merge($good_ids, $importResources['product']['created']));
    $query = $modx->newQuery('modResource');
    $query->command('update');
    $query->where(array('class_key' => 'msProduct', 'published' => 0, 'id:IN' => $good_ids));
    $query->set(array(
        'published' => 1
    ));
    $query->prepare();
    $query->stmt->execute(); 
    $modx->cacheManager->refresh();
}

Чутка доработать его и всё норм будет)
Артур Шевченко
03 февраля 2023, 16:30
0
Да, там ещё кое-что надо изменить. После
$.post(config['connectorUrl'], params, function (response) {
вставить
if(response.page != response.pages){
            $(config['more']).find('button').attr('disabled', false);
        }else{
            $(config['more']).find('button').attr('disabled', true);
        }
И закомментировать или удалить
if (config['mode'] == 'button') {
                    if (response['pages'] == response['page']) {
                        $(config['more']).hide();
                    }
                    else {
                        $(config['more']).show();
                    }
                }
kudesia
03 февраля 2023, 15:40
0
и вот

joxi.ru/1A5qe74uwwPg9A

из поля не убрались лишние

preg_replace("/[^0-9\/+]/"
или
preg_replace("/[^0-9+]/"

может надо?
Константин Ильин
03 февраля 2023, 14:06
0
а, у вас с другого сайта берется все… понял. Я то полагал, что контекст создан в одной и той же админке и к тому же «сайту» обращаетесь, только домены разные.
Тогда Вам выше подсказали, или гугл. Тут даже дело не в модх.
Алексей
03 февраля 2023, 13:44
0
Добавил в вызов 'frontend_js'=>'[[+assetsUrl]]js/pdopage.js', все заработало. Единственное если кнопкой подгружаешь до последней страницы, то кнопка пропадает, а при возврате при помощи пагинации не появляется.
vit
vit
03 февраля 2023, 13:18
0
Так лежат то они в site.ru/assets/….
Если я с сайта 1.site.ru обращусь к шрифту он его вообще не найдет(
alex87.ru
03 февраля 2023, 13:16
0
И сейчас работает, только конкретно в ресурсе выводится не через +, а через *: [[*createdby:userinfo=`fullname`]]
Алексей
03 февраля 2023, 12:53
0
<div id="pdopage" class="items-product">
								<div class="row rows row-flex">
									{'!pdoPage' | snippet : [
										'element'=>'msProducts',
										'parents'=>$modx->resource->id,
										'depth'=>10,
										'tpl' =>'product.tpl',
										'limit' =>4,
										'maxLimit'=>200,
										'pageLimit'=>10,
										'ajax'=>1,
										'ajaxHistory'=>1,
										'ajaxMode'=>'button',
										'tplPage' =>'@INLINE <a href="{$href}" class="but">{$pageNo}</a>',
										'tplPageActive'=>'@INLINE <a href="{$href}" class="but active">{$pageNo}</a>',
										'tplPageWrapper'=>'@INLINE <div class="pagination">{$pages}</div>',
										'tplPagePrev' =>'@INLINE <li class="control"><a href="{$href}"><</a></li>',
										'tplPageNext'=>'@INLINE <li class="control"><a href="{$href}">></a></li>',
										'tplPageSkip'=>'@INLINE <span>...</span',
										'tplPagePrevEmpty'=>'@INLINE <li class="disabled"><span><<</span></li>',
										'tplPageNextEmpty'=>'@INLINE <li class="disabled"><span>>></span></li>',
										'sortby'=>'{"menuindex":"DESC"}',
										'where'=>'{"template":"6"}'
									]}
								</div>
								<div class="pages">
									[[!+page.nav]]
								</div>
							</div>