Всего 123 803 комментария

Роман
22 сентября 2022, 08:55
0
Тут основная боль, это phpthumbon с наложением ватермарка. =)
Александр Туниеков
22 сентября 2022, 08:39
0
Решил описать кеширование mFilter2. Начал здесь https://modx.pro/development/23310
Kirill A. Rusanov
22 сентября 2022, 08:17
0
Кажется, вы начали писать что-то подобное localizator. Он бесплатный – читайте доки, смотрите код.
Алексей Смирнов
21 сентября 2022, 23:30
0
Посмотрите это решение:
modx.pro/solutions/23005
Артур Шевченко
21 сентября 2022, 20:45
0
На самом деле, если сделали фильтры как в mFilter2, то suggestions уже просто посчитать.
Дело не в количестве строк кода, а в этом
И при выборе какого-то фильтра делает suggestions 25с.
Александр Туниеков
21 сентября 2022, 20:20
0
Ну тогда надо архитектуру как-то менять.
TV rubrika со списком множественного выбора (там несколько значений вида имя1==1||имя2==2||имя3==3) храниться в базе как текст например такой «1||3||13». И ни как запросом LIKE не отличишь 1 от 13.
Нужно список множественного выбора хранить как отдельные значения в таблице. Например tvsuperselect храниться в 2 таблицах и как текст «1||3||13» и в отдельной таблице отдельные значения. Я не помню как именно.
Если использовать tvsuperselect, то, наверно, можно в pdoPage подцепить 2-ю таблицу и написать что-то вроде
[[!pdoPage?
        &parents=`4`
        &loadModels=`tvsuperselect`
        &leftJoin=`{"2-таблица":....}`
        &groupby=`modResource.id`
        &where=`{"2-таблица.value":[[*option]]}`
        &tpl=`RowTpl`
]]
newbmod
21 сентября 2022, 20:02
0
Спасибо большое!
Да такой подход действительно работает! Мне подошел этот вариант (как раз сейчас 9 элементов).
Но есть ли более универсальный вариант, где более 10 вариантов?
Александр Туниеков
21 сентября 2022, 19:23
+1
Может так
[[!pdoPage?
        &parents=`4`
        &includeTVs=`rubrika`
        &where=`{"rubrika:LIKE":"%[[*option]]%"}`
        &tpl=`RowTpl`
]]
если значения rubrika меньше 10 должно ловить. Если больше 10, то на option=1 словит и 1 и 10 и 11 и т.д.
Александр Туниеков
21 сентября 2022, 18:44
0
Не быстрее. Так только от 1 запроса на картинку избавишься. По идее самый быстрый вариант подцепить парент титле и картинку в pdoResource. На 99% уверен. Но, конечно, если гнаться за скоростью, надо тестировать все варианты и на практике смотреть уже.
newbmod
21 сентября 2022, 16:55
0
TV текущего ресурса — option
TV выбираемых ресурсов с множественными значениями — rubrika
Александр Туниеков
21 сентября 2022, 16:51
0
Не знаю как в прошлый раз тестировал. Тогда в моем компоненте mapFilter загрузка с подсчетом результатов на 10т товавов в каталоге выдавало около 10с, а сейчас первая загрузка около 1,2с а вторая с кешем mysql 0.0769041: Total time. (В каталоге 10т. товаров — это самый большой каталог. Всего товаров на сайте 27т.). Правда сейчас я чуть подшаманил и запрос делаю только для 1 каталога.
А вот прокешированный mFilter2 на этом же каталоге при загрузке из кеша массива ids ресурсов тратит 1.7866640: Total time. И при выборе какого-то фильтра делает suggestions 25с.
mapFilter:

mFilter2:


То есть mapFilter работает все таки быстрее mFilter2. И имеет смысл его доделывать. То есть, я не буду выкладывать код. В течении 2-3 месяцев доделаю и буду продовать :-).

пс. Почему-то mFilter2 ошибочно считает suggestions. Для женщин он посчитал 31 кольцо, а на самом деле их 4082.

пс2.
в mFilter есть подсчёт результатов по каждому фильтру, но для фильтров из коробки я этого делать не планировал
На самом деле, если сделали фильтры как в mFilter2, то suggestions уже просто посчитать. В mFilter2 это 100 строк кода всего.
Роман
21 сентября 2022, 16:50
0
А TV текущего ресурса как называется?
newbmod
21 сентября 2022, 16:46
0
Нужно чтобы хотя бы одно из множества значений TV выбираемых ресурсов совпало со значением TV текущего ресурса
Роман
21 сентября 2022, 16:43
0
Вот тут вообще не понятно, что вы делаете:
{"[[*option]]:IN":rubrika}
Через IN тут не решить вопрос. Нужно через LIKE ()
Добавьте &showLog=`1` и посмотрите, свой запрос.
deleted
21 сентября 2022, 12:34
0
А смысл тратить время на то чтоб разбираться с чужим дополнением, если там кода на несколько строчек?

<style>
    .cookie-message {
        position: sticky;
        z-index: 100;
        bottom: 0;
        background-color: #fff;
        border-top: 1px solid #d3d3d3;
    }

    .cookie-message-inner {
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 1.5rem 0;
        line-height: 1.2;
    }

    .cookie-message-text {
        flex-grow: 2;
    }
</style>

<div class="cookie-message js-cookie-message" hidden>
    <div class="container">
        <div class="cookie-message-inner">
            <div class="cookie-message-text">
                текст
            </div>
            <button class="button js-cookie-message-confirm">ОК</button>
        </div>
    </div>
</div>

<script>
    if (!localStorage.getItem('cookieAccept')) {
        const el = document.querySelector('.js-cookie-message');
        el.style.display = 'block';
        el.querySelector('.js-cookie-message-confirm').addEventListener('click', (e) => {
            localStorage.setItem('cookieAccept', 1);
            el.style.display = 'none';
        }, true);
    }
</script>
Алексей Смирнов
21 сентября 2022, 09:54
0
Сделайте html разметку для фильтра свою. И все будет хорошо.
Ведь это вывод по умолчанию…
Павел
21 сентября 2022, 09:39
0
Я так понимаю — это костыль, а других вариантов нет? Что бы как оно и должно работать? В админке один чекбокс, я думал, что и в фильтре оно должно примерно так же вывестись, нет?
Роман
21 сентября 2022, 09:28
0
Ну почему ерунда стразу. Вывод ответы 1(Да) и 0(Нет). Если вам нужно только Да, то второй с помощью css уберите.
ms|new:boolean
ms|favorite:boolean
ms|popular:boolean
#mse2_filters .mse2s_boolean:nth-child(2n) {
    display: none;
}
Роман
21 сентября 2022, 08:43
0
Скопируйте сниппет ms2Gallery и добавьте свой параметр, в нем передавайте pagetitle, так точно быстрее будет.
Kurt
21 сентября 2022, 03:48
0
Да, конечно.
Зачем использовать готовый компонент? Их же просто так создают.
Надо обязательно зае***ься мозгами.