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

Алексей Шумаев
22 марта 2021, 09:12
0
Как вариант, если речь идёт о товарах: сделайте отдельный сервер для товарной БД с api + интерфейс по управлению товарами для менеджеров. Фронт на js, бэк на чём угодно, на том же slim'е.
Синхронизируйте с ним сколько угодно сайтов.
Роман
22 марта 2021, 06:38
0
Первый вариант приемлемый, только с базой не понятно как быть. В течении в базу пишутся разные данные, статистика, заказы, да и мало ли еще что.
Артур Шевченко
21 марта 2021, 20:30
0
Да это не оказия, это уже пердимонокль)))
Артур Шевченко
21 марта 2021, 20:20
0
Migx хранит данные в json, поэтому стандартными средствами никак. Вам нужно написать свой сниппет, который будет получать поле, преобразовывать его в массив, сортировать массив и возвращать отсортированный массив.
Александр Туниеков
21 марта 2021, 15:29
0
составить запрос основываясь на modUserGroupMember
{'getTable' | snippet : [
    'table'=>[
        'class'=>'modUserGroupMember',
        'actions'=>[
            'create'=>[
            ],
            'update'=>[
                'icon' => 'fa fa-edit',
            ],
        ],
        'pdoTools'=>[
            'class'=>'modUserGroupMember',
            'leftJoin'=>[
                'modUserProfile'=>[
                    'class' => 'modUserProfile',
                    'on' => 'modUserProfile.internalKey = modUserGroupMember.member',
                ],
            ],
            'where'=>[
                'modUserGroupMember.user_group'=>2,
            ],
            'select'=>[
                'modUserProfile'=>'*',
            ],
        'decodeJSON'=>1,
        ],
        'checkbox'=>0,
        'autosave'=>1,
        'row'=>[
                'internalKey'=>[
                    'label'=>'data- 1 добавляем в data-индификатор строки, чтобы по нему можно было искать редактируемое значение fullname',
                    'data'=>1
                    ],
                 'fullname'=>[
                    'class'=>'modUserProfile',
                            'edit'=>[
                                'type'=>'text',
                                'search_fields'=>['internalKey '=>'internalKey', ],
                            ],
                    ], 
                 'oc_name'=>[
                     'label'=>'extended поле не редактируется',
                     'edit'=>['type'=>'view']
                    ],
            ],
    ],
]}
Денис
21 марта 2021, 14:53
0
Спасибо, поля профиля вывелись. extended к сожалению как раз и нужно было редактировать( А как выводить пользователей определенной группы?
РОМАН
21 марта 2021, 14:18
0
Для ссылок
{$id | url | preg_replace : '~^https?://~' : '' | preg_replace : '/\w+\..{2,3}(?:\..{2,3})?(?:$|(?=\/))/i' : ''}
Плагин для подмены ресурса
<?php
if ($modx->event->name == 'OnPageNotFound') {
	$alias = $modx->context->getOption('request_param_alias', 'q');
	if (!isset($_REQUEST[$alias])) {return false;}
	$request = $_REQUEST[$alias];
	$tmp = explode('/', $request); // получаем ссылку
	$document = $modx->getObject('msProduct', array('alias' => end($tmp))); // ищем товар по алиасу, последний кусок из /catalog/category/product-alias
	if($document){
		$modx->resource = $document;
		$modx->request->prepareResponse(); // рендерим товар миную контексты!
		exit();
	}
}
В настройках сниппетов PDO проставьте {$_modx->context.key}
Александр Туниеков
21 марта 2021, 13:20
0
Блин с extended полями не понятно как их вывести и редактировать. Не работает сейчас компонент с ними!
Я extended полями не пользуюсь. Просто если надо поля доп таблицу завожу какую надо.
Александр Туниеков
21 марта 2021, 13:17
0
'loadModels'=>'pdoUsers', не надо
{'getTable' | snippet : [
    'table'=>[
        'class'=>'modUser',
        'actions'=>[
            'create'=>[
            ],
            'update'=>[
                'icon' => 'fa fa-edit',
            ],
        ],
        'pdoTools'=>[
            'class'=>'modUser',
            'leftJoin'=>[
                'modUserProfile'=>[
                    'class' => 'modUserProfile',
                    'on' => 'modUserProfile.internalKey = modUser.id',
                ],
            ],
            'select'=>[
                'modUser' => 'modUser.id',
                'modUserProfile'=>'*',
            ],
        'decodeJSON'=>1,
        ],
        'checkbox'=>0,
        'autosave'=>1,
        'row'=>[
                'id'=>[
                    ],
                 'fullname'=>[
                    'class'=>'modUserProfile'
                    ], 
                 'oc_name'=>[
                     'label'=>'extended поле не редактируется',
                     'edit'=>['type'=>'view']
                    ],
            ],
    ],
]}
Александр Мельник
21 марта 2021, 13:12
+1
Заказчик даже не пояснил зачем это нужно?
Обычно должно быть наоборот, заказчик приходит и говорит у меня вот такая-то проблема, а разработчик предлагает варианты решения.

Какие варианты решения пришли мне в голову
1) иметь два сайта. Один открытый для всех, другой закрытый. Менеджер работает в админке закрытого, а ночью например по крону написанные вами скрипты синхронизируют базы данных и файлы с открытым сайтом.
2) Каким то образом все страницы сайта делать статичными, кешировать в файлы и отдавать пользователю файлы. А ночью сбрасывать кеш и генерировать новые страницы.
Игорь
21 марта 2021, 12:57
0
MODX 2.8.1
Minishop 2.8.1
Php 7.3.8

Дополнительно установлен компононет frontpadapi для выгрузки заказов в CRM (немножко переделанный), плагин срабатывает на событие msOnBeforeCreateOrder — но я не думаю, что дело в нем (много куда уже его ставили)
Денис
21 марта 2021, 12:57
0
Здравствуйте!

Подскажите пожалуйста, как вывести таблицу с пользователями. Пробую так:

{'getTable' | snippet : [
    'loadModels'=>'pdoUsers',

    'table'=>[
        'class'=>'modUser',
        'actions'=>[
            'create'=>[
            ],
            'update'=>[
                'icon' => 'fa fa-edit',
            ],
        ],
        'pdoTools'=>[
            'class'=>'modUser',
            'limit'=>10,
            'groups'=>'OPT',
        ],
        'checkbox'=>0,
        'autosave'=>1,
        'row'=>[
                'id'=>[
                    ],
                 'fullname'=>[
                    ], 
                 'extended'=>[
                     'oc_name'=>[],
                    ],
 
                'label'=>[
                    'label'=>'Имя',
                    'filter'=>1
                    ],
            ],
    ],
]}
Но кроме id ничего не выводится. Хотелось бы вывести пользователей из определенной группы, поля из профиля и доп. поля extended.
Александр Мельник
21 марта 2021, 12:52
0
Тоже часто возникают подобные глюки на разных сайтах.
Тоже долго и упорно ломал голову, включал яндекс вебвизор, часами просматривал ведеозаписи.
Тоже была идея что люди много раз кликают на кнопку — оформить заказ, для чего писались скрипты чтобы удалить кнопку из DOM после первого клика. И еще много разных ухищрений было сделано, но почти нигде это не дало результата.
Правильнее всего — созвониться с клиентом и попросить рассказать его, что он делал, какие странности заметил.

У меня вот на днях была оказия. Один магазин на модексе, оплата заказов происходит через корейскую компанию-банк для чего писалась отдельный класс оплаты. Так вот одна клиентка начала писать, что у нее каждый день с карточки списываются деньги за оплату одного и того же заказа. Долго пытался понять в чем же дело, пока не нашли переводчика, не созвонились с Кореей, не поговорили с ней. Оказывается в современном мире не принято закрывать вкладки в браузере, ведь оперативной памяти много, так зачем заморачиваться и что-то закрывать. И компьютер тоже никто не выключает. Так вот у нее вкладка, на которой происходила оплата, всегда висит открытой (а там работа по оплате с этим корейским банком построена через сокет соединение с их сервером, оно постоянно держится открытым) и каждый раз когда она открывала браузер, все вкладки перезагружались и оплата в очередной раз улетала в банк. И вот попробуй такое «предугадай».
Евгений Webinmd
21 марта 2021, 12:40
0
напишите версию минишопа, модх, версию php, не включен ли какой-то кешер не стандартный. Дайте чуть больше информации, так как всплывала у одного пользователя такая же проблема, но так и не смогли понять почему такое происходит.
Подобная тема
yuri
20 марта 2021, 23:05
0
парент один, да. а привязка по дереву ко многим
Алексей Смирнов
20 марта 2021, 20:35
0
А у вас ВСЕ товары только в 1й категории?
Алексей Смирнов
20 марта 2021, 20:35
0
отключить xpdo не возможно. она либо есть либо (нет) прямые запросы. Проверьте используются ли в БД индексы.
Ну и смотря какой хостинг. Ну и частота процессора очень сильно влияет на быстроту mysql.
Илья
20 марта 2021, 13:23
0
С безопасностью пока что беда, но я ещё и в первом посте писал что этот«модуль» лучше использовать на локалхосте.
За комменты спасибо буду подтягивать лапшу в скрипте.
yuri
20 марта 2021, 12:33
0
возможно есть вариант разделить таблицы товаров и объектов или что-то в этом духе? или разделить таблицы товаров по категориям, тогда в каждой категории выйдет по 50-100 тыс товаров. а с ними система работает.
yuri
20 марта 2021, 12:32
0
попробовал отключить xpdo — скорость осталась на дне. возможно, что это не он.
постоянно идут ошибки о медленных запросах mysql