Всего 125 994 комментария

Алексей
17 августа 2021, 17:18
0
Не получилось вылечить? С такой же проблемой столкнулся
Aleksandr Huz
17 августа 2021, 17:05
+2
Переслал на хорошее кофе с булочкой))
Денис Надей
17 августа 2021, 16:59
0
Заменил файл (страница повисла и вообще не грузится теперь ) pagetitle не отпрабатывает дальше. вернул в прежний вид
Сергей Шлоков
17 августа 2021, 16:47
+1
Ну можно поступить проще — нажать сверху кнопочку «Поблагодарить автора» и угостить его хорошим кофе ;)
Александр Туниеков
17 августа 2021, 16:43
0
Параметр cacheTime на 3600 включает кеширование запросов в базу
Параметр cacheTime больше 0 включает кеширование запросов в базу. 3600 это час жизни кеша.
Чтот косноязычно выражаюсь :-).
Сергей Шлоков
17 августа 2021, 16:42
+2
Да, планирую. Если парсер для страниц можно указать любой (в системной настройке) и отказаться от pdoParser'а, то чанки парсятся жестко только феномом на глядя на то, какой парсер указан в настройке. В принципе можно отключить феном для чанков (отдельной настройкой), то там другая засада — текущий парсер включится только если есть скобки [[. Т.е. ни смарти ни твиговские теги не распарсятся. Как-то так, если я ничего не путаю.

В общем, задача — чтобы pdoTools всегда использовал указанный в системной настройке парсер, который может быть pdoParser, SmartyParser (есть в ZoomX) или TwigParser (если такой будет).
Александр
17 августа 2021, 16:16
0
Спасибо, но в этом случае как я понимаю он все опции в виде ссылок выкинет. А если нужны определённые характеристики в виде ссылок на ресурсы? Может быть в шаблоне с применением If? Допустим если «value == встроенная» то один вывод где значение в виде ссылки если значение другое то другой вывод. Извиняюсь в php не силён. )))) Я конечно понимаю, что это костыль, но ситуация, что нужно именно так сделать.
Тодор
17 августа 2021, 15:29
0
Создаеш TV, с типом ввода — Список (множественный выбор)
В поле вожможные значения пишеш чтото такое
@EVAL return $modx->runSnippet('msProducts', array(
    'parents'=>$parentID,
    'where'=>'{"Data.price:>=":"150"}',
    'limit'=>0,
    'sortby'=>'{"pagetitle":"ASC"}',
    'tplOuter'=>'@INLINE [[+output]]',
    'tpl'=>'@INLINE [[+pagetitle]]==[[+id]]',
    'outputSeparator'=>'||'
));
А при выводе на сайте береш значение твоей TV и передаеш в pdoResources
{'!pdoResources' | snippet:[
    'parents' => 0,
    'limit' => 0,
    'resources' => $_modx->resource.your_tv_field,
    'tpl' => '@INLINE <a href="{$uri}">{$pagetitle}</a>'
]}
я только не помню точно ставит ли «Список (множественный выбор)» — какой-то свой разделитель между значениями, если ето не "," то надо будет заменить розделитель
Aleksandr Huz
17 августа 2021, 14:45
+2
Думаю, что для развития pdoTools нужно создать сбор, так как без поддержки энтузиазм долго не живет.
А еще, не мешало бы переписать скрипты на ванильный js.
Баха Волков
17 августа 2021, 14:26
1
0
А где можно узнать какие параметры должны передаваться в $where а какие в $options?
В where выборка, а в options вот
Алексей Соин
17 августа 2021, 14:19
0
Хотя я всё-таки из этих двух шаблонизаторов отдаю предпочтение Smarty.
А в связи с тем что fenom не обновляется уже больше года и по возможностям уступает другим шаблонизаторам, планируется ли в pdoTools добавить поддержку тогоже Smarty(Twig)? Ну или использовать по умолчанию не феном в pdotools для modx 3(если он когдато выйдет?).
Александр Туниеков
17 августа 2021, 13:06
2
+1
Вообщем победил кеширование :-).
{'!mFilter2' | snippet : ['cacheTime'=>3600]}
Параметр cacheTime на 3600 включает кеширование запросов в базу. В mFilter2 кеширование не доработано. Сейчас 8 часов возился и сделал. Нужно заменить код файла core/components/msearch2/model/msearch2/msearch2.class.php кодом из https://gist.github.com/touol/a1c46d7fd199c0889c361c4075c28d39
К сожалению, не правя компонент, не исправишь кеширование.
На виндоус локалке при кешировании время ответа на категории с 4000 товаров сокращается с 30-60сек до 3-8сек со включенными подсказками. На боевом сайте не тестировал.
Можите попробовать у себя.
Можно еще ускорить вывод страницы кешируя сам выводmfilter2. Но это если договоримся по работе. Если что мой час стоит 600р.
Сергей Шлоков
17 августа 2021, 12:14
0
Может я чего-то не понимаю, но получается совсем не короче. Этот путь из названия перемещается в параметр. Т.е. ещё нужно писать отдельный параметр. Что явно выглядит длиннее.
Yurij Finiv
17 августа 2021, 11:46
0
Отличная новость.
У сниппетов есть небезопасный параметр «elementsPath», который позволяет контент-менеджеру обходить соответствующую системную настройку.
Сознаюсь честно, использовал данную опцию в некоторых проектах, так как было удобно не строчить долгий путь к папке
mkas
17 августа 2021, 11:36
0
Столкнулся с необходимостью сделать покупку в один клик. Кнопка находится в той же форме, что и обычная кнопка добавления товара. Логика такая: по нажатию на кнопку обратимся к php для очистки корзины, а новый товар добавится после силами могучего Minishop2.

HTML
<button type="submit" data-type="getOne">Купить в 1 клик</button>
JS
function startGetOneWork(){
        let getOneWork = document.querySelectorAll('[data-type="getOne"]');
        for(index = 0; index < getOneWork.length; index++){
            getOneWork[index].addEventListener('click', () => {
                console.log('Попытка очистки корзины');
                reset_button_podmena();
                clearOrderFixTresh();
                
                async function clearOrder(){
                    let url = "/minishop2-controller?type=clearOrder";
                    let headers = {
                        method: "POST"
                    }
                    let response = await fetch(url, headers);
                    if(response.ok){
                        console.log("Корзина очищена");
                    }else{
                        console.log("Ошибка очистки корзины");
                    }
                }
            });
        }
    }
    
    startGetOneWork();
PHP (создаете ресурс, в нем вызываете сниппет)
if($_SERVER["REQUEST_METHOD"] == "POST"){
        switch($_GET["type"]){
            case "clearOrder":
                $miniShop2 = $modx->getService('miniShop2');
                $miniShop2->initialize($modx->context->key);
                $miniShop2->cart->clean();
                break;
            default: return;
        }
    }
Дмитрий
17 августа 2021, 11:19
0
Здравствуйте, добавил скрипт сразу на страницу сравнения, но удаляет почему то при нажатии по одному, а не все сразу( В чем может быть проблема?
Анатолий
17 августа 2021, 11:11
0
Все получилось, так:
['published' => 0],
['parents' => 2, 'select' => 'id,pagetitle', 'sortby' => 'menuindex']
А где можно узнать какие параметры должны передаваться в $where а какие в $options?
mkas
17 августа 2021, 11:09
0
А никак, они сами не знают)) Сделали мутанта, теперь поди разбери, как оно работает))
Баха Волков
17 августа 2021, 11:07
+4
Ура, уважаемый Сергей теперь вместо того, чтобы просто бомбить, будет бомбить и делать)
Баха Волков
17 августа 2021, 11:05
+2
Добавить сниппетам возможность возвращать необработанный массив данных.
Это востребовано при использовании Fenom. Сейчас есть возможность получить такой массив через кодировку в json и обратно, но это всё-таки оверхед.
Я тут похлопаю