Артур Шевченко

Артур Шевченко

С нами с 24 мая 2019; Место в рейтинге пользователей: #3
Отправить деньги
08 сентября 2022, 23:04
0
Мне кажется документы и отчёты генерируются по требованию из данных которые есть в 1С по шаблонам, которые есть там же. Поэтому вряд ли возможно перенести в БД сайта сгенерированные документы, а главное не ясно зачем?
08 сентября 2022, 22:58
0
Я бы сам написал, схема-то не сложная:
1. Отправить запрос на сервер с id ресурса
2. Получить данные
3. Распарсить шаблон
4. вернуть html
5. Вставить на страницу
6. Показать модалку.
08 сентября 2022, 22:32
0
Отсталость продукта от рынка
это слишком размытая формулировка, что ты имеешь в виду конкретно? А позиционирование определяется рекламой.
06 сентября 2022, 12:04
0
Кроме Битрикса ни одна CMS не ассоциируется с 1С, на мой взгляд. Проблема Modx в целом и MiniShop в частности это отсутствие рекламы. У всех на слуху WP, Битрикс, но выбирать движок должен исполнитель, а не заказчик. Последнего должен волновать результат.
06 сентября 2022, 11:45
0
Ты мне скажи в какой из бесплатных CMS она есть из коробки?
06 сентября 2022, 11:15
0
Я, конечно, не проверял, но мне кажется ни у одного бесплатного решения для электронной коммерции из коробки интеграции с 1С нет. В целом, я согласен с тем, что базовый функционал надо расширять, так как голый MiniShop по этому параметру сильно уступает тому же OpenCart. Но приоритетнее сделать фильтрацию из коробки, избранное, сравнение товаров, а интеграции это индивидуальная потребность конкретного бизнеса. За три года работы с Modx интеграцию с 1С делал раза два, при том что магазинов сделал несколько десятков, а вот фильтры нужны были почти в каждом.
05 сентября 2022, 21:09
+2
Если из коробки сделать интеграцию с 1С, остатки по складам, то minishop надо делать платным, а фишка minishop в его бесплатности. Ты получаешь базу на которую можешь накрутить, что душе угодно.
05 сентября 2022, 21:01
1
0
В общем, я установил UsersOnline и он не работает. Я посмотрел ошибки и завёл его. Вот код сниппета getOnlineUsers.
<?php
    /** @var array $scriptProperties */
    /** @var UsersOnline $UsersOnline */
    if (!$UsersOnline = $modx->getService('usersonline', 'UsersOnline', $modx->getOption('usersonline_core_path', null,
            $modx->getOption('core_path') . 'components/usersonline/') . 'model/usersonline/', $scriptProperties)
    ) {
        return 'Could not load UsersOnline class!';
    }
    if (!$pdo = $modx->getService('pdoTools')) {
        return $modx->lexicon('no_pdo');
    }
    $interval = $modx->getOption('timeInterval', $scriptProperties, -1);
    if ($interval == -1) {
        $interval = $modx->getOption('usersonline_time_span');
    }
    $contexts = $modx->getOption('contexts', $scriptProperties, null);
    
    $innerJoin = array();
    /*$innerJoin = $modx->getOption('innerJoin', $scriptProperties, '');
    $innerJoin = $modx->fromJSON($innerJoin);*/
   
    $innerJoin['UsersOnline'] = array(
        'class' => 'userOnline',
        'on'    => 'modUser.id = UsersOnline.user_id',
    );
    $select = array();
    /*if($select = $modx->getOption('select', $scriptProperties, '')){
         $select = $modx->fromJSON($select);
    }*/    
    $select['UsersOnline'] = '*';
    $time = time();
    $startTime = $time - $interval;
    $where = array();
    /*if($where = $modx->getOption('where', $scriptProperties, '')){
        $where = $modx->fromJSON($where);
    }*/
    
    $where[] = array(
        'UsersOnline.lastvisit:>=' => $startTime,
        'UsersOnline.lastvisit:<=' => $time,
    );
    $contextsArray = array();
    if($contexts != null){
        $contextsArray = explode(',', $contexts);
    }
    if (!empty($contextsArray)) {
        $where[] = array(
            'UsersOnline.context_key:IN' => $contextsArray,
        );
    }
    $scriptProperties['where'] = $modx->toJSON($where);
    $scriptProperties['innerJoin'] = $modx->toJSON($innerJoin);
    $scriptProperties['select'] = $modx->toJSON($select);
    $output = $modx->runSnippet('pdoUsers', $scriptProperties);
    return $output;
Вот вызов.
[[!getOnlineUsers?
    &contexts=`web`
]]
05 сентября 2022, 14:23
0
Очевидно же документация на UsersOnline отсылает к документации на pdoUsers.
04 сентября 2022, 22:45
+1
Есть msAddFields, чтобы плагины не писать.
02 сентября 2022, 21:55
0
Нужно запустить парсер для одной конкретной страницы, причём если ты собираешься делать это в сниппите, запустить парсер нужно будет после того как он уже отработает, т.е. сделать двойную работу. Не кажется ли тебе, что это несколько нерационально? Если не кажется, то тебе нужно найти пример запуска парсера для отдельной страницы где-то на просторах интернета, так как таких кейсов не встречал.
02 сентября 2022, 18:36
0
В uploads_files есть mp4?
02 сентября 2022, 13:15
+1
Это как минимум логически неверно. Нужен не сниппет, а плагин на cобытие OnWebPagePrerender
02 сентября 2022, 13:12
0
<form action="[[*id]]" method="post" class="ajax_form af_example" enctype="multipart/form-data">
<div class="form-group">
<label for="chetest">Поле checkbox <span class="required">*</span>:</label>
<div class="controls">
<span class="error_chetest">[[!+fi.error.chetest]]</span>
<span><input type="checkbox" name="chetest[]" id="chetest" value="Вариант1" [[!+fi.chetest:FormItIsChecked=`Вариант1`]]>Вариант1</span>
<span><input type="checkbox" name="chetest[]" id="chetest" value="Вариант2" [[!+fi.chetest:FormItIsChecked=`Вариант2`]]>Вариант2</span>
<input type="hidden" name="chetest_control" value="">
</div>
</div>
Вешаешь на chetest обработчик события change, если хотя бы один из чекбоксов выбран в chetest_control записываешь 1, если ни один не выбран 0, после этого делаешь так
$('[name="chetest_control"]').trigger('change');
И валидируешь chetest_control. По-другому чекбоксы валидировать нельзя, т.к. если чекбокс не выбран на сервер ничего не передаётся, я попробовал обойти, но нет до AjaxForm всё равно не доходит сообщение об ошибке и вообще информация о том, что есть какой-то там чекбокс.
02 сентября 2022, 11:48
0
А если не секрет — зачем?
02 сентября 2022, 00:54
0
Скорее всего вот так должно работать:
$(document).on('keypress change', '.error', function () {
            var key = $(this).attr('name'); 
            key = key.replace(/[\[\]]/g, '');
            $(this).removeClass('error');
            $('.error_' + key).html('').removeClass('error');
        });
01 сентября 2022, 10:34
0
Надо бы в другой раздел написать Работа называется. А там желающие оценят.
31 августа 2022, 22:12
+1
Вот кусок кода который скрывает ошибки. Проверьте вёрстку.
31 августа 2022, 20:46
0
Лезть в исходники необязательно, повесь на checkbox и radio обработчик события change и скрывай ошибки.