Всего 125 336 комментариев

Michael
16 июля 2022, 11:23
0
Уже не первый раз слышу про событие mse2_load но на практике так и не понял как спим работать. Мне вот например нужно также используя это событие и скрипты перезагрузить у слайдера tin slider но я так и не понял как это правильно сделать. Возможно я не один такой из начинающих и кому-то будет полезно увидеть на примере как работать с этим событием. не нашел примеров как с ним работать.
Michael
16 июля 2022, 11:18
0
Классно звучит но ниче не понял. пример можно? Я простой человек, который знает совсем немного modx, могу делать простые вещи пока только. Буду признателен если покажете кусочками кода как это сделать.
Michael
16 июля 2022, 11:15
0
Подключен только минифицированный скрипт библиотеки nouislider.min.js и в html выведен код вот так:

<div class="pb-4 mb-2">
                  <h3 class="h6">Цена</h3>
                  <div class="range-slider" data-start-min="90000" data-start-max="250000" data-min="30000" data-max="500000" data-step="1000">
                    <div class="range-slider-ui"></div>
                    <div class="d-flex align-items-center">
                      <div class="w-50 pe-2">
                        <div class="input-group"><span class="input-group-text fs-base">₽</span>
                          <input class="form-control range-slider-value-min" type="text">
                        </div>
                      </div>
                      <div class="text-muted">—</div>
                      <div class="w-50 ps-2">
                        <div class="input-group"><span class="input-group-text fs-base">₽</span>
                          <input class="form-control range-slider-value-max" type="text">
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
я пытаюсь этот html натянуть на фильтры. Шаблон я имел ввиду я купил сверстанный шаблон и пытаюсь поставить на mFilter2 этот шаблон. Пробую повторить как в исходных чанах которые идут с mFilter2 и не состыковываемая потому что в nouislider работает с вот этими данными
data-start-min="1000" data-start-max="5000" data-min="500" data-max="10000" data-step="1000"
а как туда подставить данные я не могу понять.
Артур Шевченко
16 июля 2022, 11:11
0
Например с помощью JavaScript на событие mse2_load получить нужные значения из инпутов, передать в конструктор слайдера и инициализировать слайдер.
Артур Шевченко
16 июля 2022, 11:07
0
Нет таких дополнений. У вас пользователей 10-20 человек? Или всё же эти условия нужно распространять на определённые группы пользователей? Количество задаётся вручную или распределяется автоматически в процентном соотношении?
Miša Bulic
16 июля 2022, 10:57
0
а как подключен ui slider? Что за шаблон?
weranda
16 июля 2022, 10:31
0
Могли бы привести конкретный код/пример или ссылку на таковой?
kudesia
16 июля 2022, 00:29
0
Спасибо…

Но выдает какое-то длиннющее число
дмитрий
15 июля 2022, 22:35
0
Для modx 3 работает?
Michael
15 июля 2022, 17:39
0
Ок. Тогда на примере.
У меня слайдер tiny-slider
Я в каждом чанке слайдера товара создаю скрипт
<script>
$(document).on('mse2_load', function(e, data) {
  updateSliderHeight: updateInnerWrapperHeight(),
});
</script>

Понимаю что это бред, который не работает в данный момент. Но пытаюсь нащупать истину.
Поправьте меня пожалуйста.
Семён Кудрявцев
15 июля 2022, 14:12
0
Да, про события в итоге нашел их и решил задачу, а идея писать сначала во временный файл, а потом перезаписывать в конечный — это прям то, что нужно!
Константин
15 июля 2022, 13:27
0
Спасибо, сработало, но только для 1 уровня вложенности. А есть возможность на все подпапки распространить действие скрипта? prnt.sc/xnhfQGV-tKee
Евгений Шеронов
15 июля 2022, 13:12
0
Можете прям здесь (или в тех поддержку на Modstore) приложить ссылку на сайт.
По классам для ajax замен или по ошибкам в консоли будет понятнее проблема.
Евгений Шеронов
15 июля 2022, 13:09
0
Пожалуйста :)

На почте остался полный текст комментария, там было про события компонента.
Они в общем-то есть, позволяют многое, но документация скудновата.
Соберусь силами и добью документацию :)

P.S. а сам вопрос касательно того, что пока пишется файл поисковики могут получить не валидную часть — добавлю в TODO, чтобы из коробки файл писался с временным названием и после записи переименовывался.
vectorserver
15 июля 2022, 12:02
+1
Написать @Евгений Шеронов, это его компонент!
Denis
15 июля 2022, 12:01
0
Фильтрация происходит здесь:
core/components/migx/model/migx/migx.class.php
function filterItems($where, $items) {

        $tempitems = array();
        foreach ($items as $item) {
            $include = true;
            foreach ($where as $key => $operand) {
                $key = explode(':', $key);
                $field = $key[0];
                $then = $include;
                $else = false;
                $subject = $item[$field];

                $operator = isset($key[1]) ? $key[1] : '=';
                $params = isset($key[2]) ? $key[2] : '';
                $operator = strtolower($operator);
                switch ($operator) {
                    case '!=':
                    case 'neq':
                    case 'not':
                    case 'isnot':
                    case 'isnt':
                    case 'unequal':
                    case 'notequal':
                        $output = (($subject != $operand) ? $then : (isset($else) ? $else : ''));
                        break;
                    case '<':
                    case 'lt':
                    case 'less':
                    case 'lessthan':
                        $output = (($subject < $operand) ? $then : (isset($else) ? $else : ''));
                        break;
                    case '>':
                    case 'gt':
                    case 'greater':
                    case 'greaterthan':
                        $output = (($subject > $operand) ? $then : (isset($else) ? $else : ''));
                        break;
                    case '<=':
                    case 'lte':
                    case 'lessthanequals':
                    case 'lessthanorequalto':
                        $output = (($subject <= $operand) ? $then : (isset($else) ? $else : ''));
                        break;
                    case '>=':
                    case 'gte':
                    case 'greaterthanequals':
                    case 'greaterthanequalto':
                        $output = (($subject >= $operand) ? $then : (isset($else) ? $else : ''));
                        break;
                    case 'isempty':
                    case 'empty':
                        $output = empty($subject) ? $then : (isset($else) ? $else : '');
                        break;
                    case '!empty':
                    case 'notempty':
                    case 'isnotempty':
                        $output = !empty($subject) && $subject != '' ? $then : (isset($else) ? $else : '');
                        break;
                    case 'isnull':
                    case 'null':
                        $output = $subject == null || strtolower($subject) == 'null' ? $then : (isset($else) ? $else : '');
                        break;
                    case 'inarray':
                    case 'in_array':
                    case 'ia':
                    case 'in':
                        $operand = is_array($operand) ? $operand : explode(',', $operand);
                        $output = in_array($subject, $operand) ? $then : (isset($else) ? $else : '');
                        break;
                    case 'find':
                    case 'find_in_set':
                        $subject = is_array($subject) ? $subject : explode(',', $subject);
                        $output = in_array($operand, $subject) ? $then : (isset($else) ? $else : '');
                        break;
                    case 'find_pd':
                    case 'find_in_pipesdelimited_set':
                        $subject = explode('||', $subject);
                        $output = in_array($operand, $subject) ? $then : (isset($else) ? $else : '');
                        break;
                    case 'contains':
                        $output = strpos($subject, $operand) !== false ? $then : (isset($else) ? $else : '');
                        break;
                    case 'snippet':
                        $result = $this->modx->runSnippet($params, array('subject' => $subject, 'operand' => $operand));
                        $output = !empty($result) ? $then : (isset($else) ? $else : '');
                        break;
                    case '==':
                    case '=':
                    case 'eq':
                    case 'is':
                    case 'equal':
                    case 'equals':
                    case 'equalto':
                    default:
                        $output = (($subject == $operand) ? $then : (isset($else) ? $else : ''));
                        break;
                }

                $include = $output ? $output : false;

            }
            if ($include) {
                $tempitems[] = $item;
            }

        }
        return $tempitems;
    }
vectorserver
15 июля 2022, 11:57
0
<?php
/** @var modX $modx */
/** @var modResource $resources */
$resources = $modx->getCollection('modResource',array('parent' => 211));
foreach ($resources as $res) {
    $res->setTVValue('seotitle',$res->get('pagetitle'));
    $res->set('isfolder', 1);
    $res->save();
}