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

Сергей
14 июня 2021, 00:48
0
Спасибо за предложение! Я в итоге увлекся и сделал сам :)
Результат прикрепляю ниже. Может кому пригодится.
На правильность метода не претендую, для меня это рабочий вариант) От прорисовки страницы до загрузки таблицы с 30000 строк = 2,1 сек.

pdoPage сниппет. С ним одна проблема — он выводит результат на страницу, который нам не нужен. Пока не понял как его убрать — просто вывожу в скрытый div.
<div style="display:none">
[[!pdoPage?
    &parents=`2`
    &ajaxMode=`default`
    &sortby=`[[!#GET.sortby:default=`Id`]]`
    &sortdir=`[[!#GET.sortdir:default=`desc`]]`
    &tvFilters=`SecondName==%[[!#GET.search:default=``]]%`
    &tpl=`patientListTpl`
    &includeTVs=`Id,SecondName,Note` 
    &limit=`10`
]]
</div>

Комментарии:
  1. [[!#GET.sortby:default=`Id`]] — через GET из dataTable с помощью ajax передаем параметры для сортировки
  2. &tvFilters=`SecondName==%[[!#GET.search:default=``]]%` — точно так же передаем данные для поиска
  3. &tpl=`patientListTpl` — данные которые необходимо передать dataTable с целью отображения их в таблице. Формат данных:
    ["[[+tv.Id]]","[[+tv.SecondName]]","[[+tv.Note]]"],
    Каждое значение в кавычках соответсвует столбцам таблицы. В конце строки нужна запятая!

Инициализация dataTable:
$(function () {
    var orderparam = [0, "desc"]; //сортировка по дефолту по первому столбцу таблицы
    var columnparam = ["Id", "SecondName", "Note"]; //столбцы таблицы
    var table = $("#example1").DataTable({
        "order": [orderparam],
        "lengthChange": false,
        "processing": true,
        "serverSide": true, //определяет в каком формате мы отправим данные для dataTable в callback
        "ajax": function (data, callback, settings) {
            var pageinfo = table.page.info(); //узнаем номер страницы для передачи в pdoPage
            var orderinfo = table.order(); //узнаем сортировку для pdoPage
            var searchinfo = table.search(); //данные поиска для pdoPage

            //перед заполнением таблицы запрашиваем данные у pdoPage с помощью get запроса
            $.ajax({
                url: "kartoteka?page=" + (pageinfo.page + 1) + '&sortby=' + columnparam[orderinfo[0][0]] + '&sortdir=' + orderinfo[0][1] + '&search=' + searchinfo,
            }).then(function (json, textStatus, jqXHR) {
                var json = JSON.parse(json); //получаем JSON от pdoPage
                var output = json.output.replace(/,\s*$/, ""); //берем только нужные нам данные. Убираем лишнюю запятую.
                var dr = JSON.parse('{"data":[' + output + ']}'); //полученные нами данные - текст. Конвертируем его в JSON.

                //все что мы получили отдаем для заполнения таблицы
                callback({
                    draw: data.draw, //специальный счетчик обращений dataTable
                    recordsTotal: json.total, //количество строк в ответе от pdoPage
                    recordsFiltered: json.total, //количество строк в ответе от pdoPage
                    data: dr.data //данные для заполнения
                });
            });

        },
        //если вдруг нужны кнопки. Они отрисовываются после заполнения таблицы. Поэтому, кнопки добавляем с помощью initComplete
        "buttons": ["colvis"],
        "initComplete": function () {
            table.buttons().container().appendTo($('#example1_wrapper .col-md-6:eq(0)')); //обратите внимание не селекторы, у вас они могут отличаться
        }
    });
});
Евгений Webinmd
13 июня 2021, 17:38
+1
У минишопа в системных настройках есть настроечки:
ms2_category_grid_fields — тут дописываете ключи ваших опций
ms2_category_show_options — тут надо выставить в ДА
Евгений Лазарев
13 июня 2021, 16:48
0
Глупость сказал, не посмотрел на сокращение. Записи не доступны. Я подумал про hdOrderData. Файл hdorder.class.php при die() в __construct ноль внимания. хотя в mysql карту объекта все есть. Единственное различие с minishop2 разве что в том что нет поля class_key.
Николай Савин
13 июня 2021, 16:20
+1
Он подключается автоматически через mysql карту объекта
Евгений Лазарев
13 июня 2021, 16:18
0
Спасибо тебе добрый человек. Я на него думал, но так и не смог понять где он подключается (сам msproduct.class.php).
Stepan
13 июня 2021, 10:20
0
при таком раскладе не загружается класс
modResource

```
0.0011110: Could not process query, error #1054: Unknown column 'modResource.id' in 'field list'
```
Сергій
12 июня 2021, 12:12
0
У меня это сделано на закрытой CRM системе. Могу только по демонстрации экрана показать. Напишите свой вайбер или скайп мне в ЛС.
Сергей
12 июня 2021, 11:36
0
Спасибо за ответ.
Если вас не затруднит — поделитесь, пожалуйста, ссылкой на пример или примером кода.
Сергій
12 июня 2021, 05:21
+1
Добрый день. Можно в datatables подставить json ресурсов и фильтровать их.
Уже делал такую работу могу показать как все работает.
varanika
12 июня 2021, 00:08
0
Убрала у плагина галку статичного файла и заводиться начало. Появился лексикон по крайней мере)
varanika
11 июня 2021, 23:45
0
А есть зависимости какие-то от хостинга / версии php? Ставлю из репозитория, а что — то не до конца ставится, словарей будто части нет. И не только их. Хм… Дальше пока не лазила, пытаюсь понять без словарей в чем дело :)
А задумка клевая! Спасибо))
Николай Савин
11 июня 2021, 19:36
+1
Нет процессоры тут не при чем.
Вся магия в плагине на который вы ссылаетесь и модифицированном методе get класса msproduct.class.php
Евгений Лазарев
11 июня 2021, 19:25
0
Делал на основе modextra. Там автоматическое создание классов. Да через getObject все показывает. Думал может в processor связка какая но нет.
Николай Савин
11 июня 2021, 19:20
+1
Вы только XML таблицу сделали или классы под каждую таблицу тоже добавили?
Через $modx->getObject(hdOrder) записи доступны?
Николай Савин
11 июня 2021, 19:18
0
Можно еще написать Issue на github и мне с @Иван Бочкарев в личку. Тогда точно вопрос решится.
Ответ такой же какой и вопрос — посмотреть как это сделано в miniShop2
Евгений Лазарев
11 июня 2021, 15:46
0
Уважаемые разработчики. Вопрос не совсем по теме, но все же. Вдруг кто откликнется. Как из своей таблицы добавить данные в $_modx->resource, как это сделано в minishop2? Если что вот ссылка на вопрос. Очень не хватает компетентного ответа. modx.pro/help/21936
Евгений Лазарев
11 июня 2021, 14:58
0
Нет. Это совершенно не то.
Sparklingman
11 июня 2021, 13:54
0
Добрый день! Задача стоит такая. В комментах Tickets нужно чтобы пользователь опубликовал всего один комментарий в одном ресурсе, и больше не смог, и форму убираем. Как мне прописать в снипетах Tickets? Есть советы? А то голову ломаю)
Uladzislau
10 июня 2021, 23:43
0
[2021-06-10 23:42:59] (ERROR @ /home/######/public_html/core/components/msimportexport/model/msimportexport/msie.class.php: 5222) Ошибка для create:
Array
(
[id] =>
[article] => 111
[pagetitle] => Test current
[options-pets_size] => 1
[options-pets_age] => 1
[options-testimony] => 1
[options-taste] => 1
[options-appointment] => 1
[options-material] => 1
[options-structure] => 1
[options-petheight] => 1
[options-petweight] => 1
[options-features] => 1
[options-length] => 1
[options-wooltype] => 1
[options-season] => 1
[options-releaseform] => 1
[options-for_whom] => 1
[options-petview] => 1
[options-aquavol] => 1
[content] => 1
[vendor] => 19
[options-importer] => test
[made_in] => test
[price] => 100
[old_price] =>
[new] => 1
[popular] => 1
[favorite] => 1
[parent] => 3
[template] => 3
[published] => 1
[weight] => 10
[options-weights] => Array
(
[0] => 10
[1] => 20
[2] => 30
)

[class_key] => msProduct
[context_key] => web
[tvs] =>
)