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

Сергей С
16 июня 2023, 19:09
0
Попробую. Спасибо. Where уже в массив перевёл т.к. там несколько условий and, OR.
Dan
Dan
16 июня 2023, 16:53
+1
Во первых, $dop должна быть не строка, а массив и where вы можете указать тоже в виде массива:
//как должен выглядеть $dop = [1234,5678,89654,4848];
$option_par['where'] = [
    'Data.is_general' => 1,
    'OR:id:IN' => $dop
]
$modx->runSnippet('msProducts',$option_par);
Сергей С
16 июня 2023, 13:17
0
В какую настройку прописывать поле изображений? Несколько изображений он загрузит? в ms2gallery?
Сергей С
16 июня 2023, 13:01
0
Будет ли работать если фид на стороннем сайте? Умеет ли обновлять уже загруженные товары? Подтянет ли фото со стороннего сайта? Зачем нужен feed_id?
Сергей С
16 июня 2023, 12:40
0
Так пробовал. не работает в самом начале оба эти варианта указал.
Кровельный
16 июня 2023, 12:21
0
Как добавить множественный список с автодополнением в ресурс/документ (свое кастомное поле tags_cloud), также как реализовано tags в ms2?
Например, у ресурса уже есть в бд значения ["тег 1","тег 2","тег 3"], но в супер-селекте они не выводятся и не вводятся. Есть у кого подсказка или решение?

В таблице modx_site_content добавлена структура tags_cloud
Плагин:
<?php
switch ($modx->event->name) {
    case "OnMODXInit":
        $modx->loadClass('modResource');    
        $map = array(
            'modResource' => array(
                'fields' => array(
                    'tags_cloud' => null,
                ),
                'fieldMeta' => array(
                    'tags_cloud' => array(
                        'dbtype' => 'varchar',
                        'precision' => '100',
                        'phptype' => 'json',
                        'null' => true,
                    ),
                ),
            ),
        );
        
        foreach ($map as $class => $data) {
            $modx->loadClass($class);
            foreach ($data as $tmp => $fields) {
                if ($tmp == 'fields') {
                    foreach ($fields as $field => $value) {
                        foreach (array('fields', 'fieldMeta', 'indexes') as $key) {
                            if (isset($data[$key][$field])) {
                                $modx->map[$class][$key][$field] = $data[$key][$field];
                            }
                        }
                    }
                } elseif ($tmp == 'composites' || $tmp == 'aggregates') {
                    foreach ($fields as $alias => $relation) {
                        if (!isset($modx->map[$class][$tmp][$alias])) {
                            $modx->map[$class][$tmp][$alias] = $relation;
                        }
                    }
                }
            }
        }
        break;
    case 'OnDocFormPrerender':
        $tags_cloud = $resource->get('tags_cloud');
        $tags_cloud = $modx->toJSON($tags_cloud);
        $modx->log(1, print_r($tags_cloud, 1));
        
        $modx->controller->addHtml("
        <script type='text/javascript'>
            Ext.ComponentMgr.onAvailable('modx-panel-resource', function(){
                const leftCol = this.items[1].items[0].items[0].items[0];
                const rightCol = this.items[1].items[0].items[0].items[1];
                config = [] || config || {};
                
                const tags_cloud = {
                    typeAhead: true,
                    triggerAction: 'all',
                    lazyRender: true,
                    resizable: true,
                    anchor: '100%',
                    description: '<b>[[*tags_cloud]]</br>Облако тегов</b>',
                    fieldLabel: 'Облако тегов',
                    id: 'modx-resource-tags_cloud',
                    maxLength:255,
                    msgTarget: 'under',
                    name:'tags_cloud',
                    hiddenName: 'tags_cloud',
                    xtype: 'superboxselect', // combo, modx-combo - одиночный выбор, а combobox и другие не работают
                    store: new Ext.data.JsonStore({
                        id: 'tags_cloud-store',
                        root: 'results',
                        autoLoad: false,
                        autoSave: false,
                        totalProperty: 'total',
                        //fields: ['value'],
                        fields: $tags_cloud,
                        url: MODx.config.connectorUrl,
                        baseParams: {
                            action: 'mgr/item/getoptions',
                            key: 'tags_cloud'
                        }
                    }),
                    mode: 'remote',
                    displayField: 'value',
                    valueField: 'value',
                    
                    extraItemCls: 'x-tags_cloud',
                    expandBtnCls: 'x-form-trigger',
                    clearBtnCls: 'x-form-trigger',
                    renderTo: Ext.getBody(),

                    editable: true,
                    selectOnFocus: false,
                    preventRender: true,
                    forceSelection: true,
                    enableKeyEvents: true,
                    displayField: ['value'],
                    valueField: ['value'],
                    //value: $tags_cloud,
                    hiddenValue: $tags_cloud,
                    emptyText: 'Выбирете или введите теги',
                    tpl: new Ext.XTemplate('<tpl for=\".\"><div class=\"x-combo-list-item\"><span>{value}</span></div></tpl>',{ compiled: true })
                }

                rightCol.items.splice(3, 0,  tags_cloud); // поле выводится там где сменить Шаблон, Пункт меню
            });
        </script>");
    break;
}
Артур Шевченко
16 июня 2023, 10:47
0
Скорее всего тут
'where' => '{«Data.is_general:=»:1,«OR:id:IN»:'.$dop.'}',
получается не валидный json. Думаю должно быть так
'where' => '{"Data.is_general:=":1,"OR:id:IN":"'.$dop.'"}',
Максим
16 июня 2023, 09:30
+1
Вся эта идея с генерацией уникального ключа для каждой формы, помещения по этому ключу данных в сессию, при отправке формы считываная этого с сессии… вызывает ощущение дикого костыля.
А для чего тогда нужно использовать сессии в PHP, если не для этого в том числе? Когда лет 10 назад (а то и больше) изучал PHP, препод как раз так и предлагал делать: хранить данные формы в сессии! Думаю, ничего принципиально нового в подходе не поменялось за это время… если мы говорим именно про PHP.
Александр Мельник
16 июня 2023, 07:36
+1
спасибо, Алексей.
нужная вещь и сделана с душой, код качественный.
Сергей С
15 июня 2023, 22:32
0
ну там огромный сниппет для ajax в нем подгружается список товаров. То есть внутри сниппета мы вызываем сниппет. И передаем параметры, а в выборке 'where' => '{«Data.is_general:=»:1,«OR:id:IN»:'.$dop.'}',
Смысл его весь скидывать если загвоздка в паре строк:
$dop = '83595,5693,4659';
$option_par = array(
'parents' => $parent,
'where' => '{«Data.is_general:=»:1,«OR:id:IN»:'.$dop.'}',
'limit' => 0,
'tpl' => 'tpl.checkbox',
);
$content = $modx->runSnippet('msProducts',$option_par);
Артур Шевченко
15 июня 2023, 21:37
0
Тогда код спиппета покажи
Сергей С
15 июня 2023, 21:31
0
Но это не феном. Это в сниппете там php.
Артур Шевченко
15 июня 2023, 19:31
0
Просто удали одинарные кавычки. А ещё конкатенация строк в Fenom делается через '~', а не через точку.
Vladislav
15 июня 2023, 17:16
0
если закомментировать эти строчки
//$q->groupby("{$this->classManager}.id");
        //$q->sortby("COUNT({$this->classChat}.mid)", "ASC");
в
modtelegrm.class.php
в методе
getAvailableManagerByUid()
то начинает работать, но это пока менеджер один, если будет больше одного, то не уверен что работоспособность сохраниться.
Vladislav
15 июня 2023, 16:07
0
С регистрацией менеджера в телеге разобрался. Пользователь искаля по полю email в профиле т.е. среди массива объектов ModUserProfile. Назначил пользователю email без собаки и домена, совпадающий с именем. Теперь стало так:

Но, в диалоге Хелпера все равно выводится «Нет доступных менеджеров». Буду думать дальше…
Евгений Webinmd
15 июня 2023, 14:21
0
в статье написано что можно. Также в исходниках есть файл, в котором можно прописать список полей. Такие же файлы есть для сниппетов/ресурсов/плагинов
Артур Шевченко
15 июня 2023, 13:58
0
Можно ли настраивать список создаваемых ТВ, сниппетов, ресурсов?