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

Артур Шевченко
25 января 2021, 00:13
0
Насколько мне известно, платных компонентов которые решают эту проблему нет. Поэтому вариантов у вас немного
1. Ждать что-то кто-то, напишет решение, а оно будет сложным для неподготовленного человека, т.к. нужно будет кастомизировать админку, а это непросто, как по мне.
2. Написать своё дополнение.
3. Сделать этот функционал как отдельную страницу на фронте доступную только админу.
Артур Шевченко
25 января 2021, 00:02
1
+1
Если у вас будет повторяться pagetitle, то modx будет ругаться, оно вам надо? Думаю, нет. А проверить элементарно. Если я правильно понял, $usersMedia['data'] содержит массив полей, из которых вы создаёте ресурс, значит надо в цикле делать прямой запрос в БД через newQuery, где в условии ставить pagetitle=$usersMedia['data'][поле которое помещается в заголовок ресурса]. Если запрос вернёт хотя бы одно значение значит, такой ресурс уже есть и надо его либо обновить, либо пропустить и продолжить выполнение цикла. Как сделать запрос в БД подскажет Гугл ключевые слова modx xpdo sql. Ну а дальше уже всё как сейчас. Либо можно поступить проще, но если ресурсов много, то это может быть неоптимальным решением с точки зрения потребления ресурсов, просто попытаться получить объект
$resource=$modx->getObject ('modResource', array('pagetitle'=>$usersMedia['data']['fieldname']));
if(!$resource){
//Создаём новый ресурс
}
<code>
Артур Шевченко
24 января 2021, 23:52
0
Думаю это лишнее, в конце концов, тут не курсы по программированию, а форум. Но если @Павел Бигель расскажет подробнее в чём плюсы его варианта, то это будет здорово. Пока я вижу только один — не нужно ничего изобретать, можно использовать как есть.
Роман
24 января 2021, 23:43
0
Вы все правильно понимаете, да, но как правильно проверить на pagetitle или idpost???
Это все уникальные поля. idpost в этом поле id с другого сервиса, он уникальный так же как и pagetitle. НО pagetitle может и повториться теоретически.
Sergey (Sentinel)
24 января 2021, 23:01
0
@Павел Бигель Паш, занаследуй процессор и напиши поиск, и покажи как надо… а то тыц не понятна… :)))
Алексей Шумаев
24 января 2021, 22:59
+4
Крайне рекомендую изучить код примеров (а лучше попробовать реализовать самостоятельно) всем начинающим разработчикам под modx, даже если вам такой функционал сейчас не нужен.
Затрагивается куча важных моментов по работе с modx в целом и с ms2 в частности. Благодаря подробным комментариям фактически получился отличный урок. Однозначно поможет не наступить на кучу грабель.
Павел, спасибо!
Sergey (Sentinel)
24 января 2021, 22:35
0
Кто-то уже использовал? Поделитесь опытом… :))
Артур Шевченко
24 января 2021, 21:27
0
Так $idpost содержит всего одно значение и это всегда значение предыдущей страницы, т.е. вероятность того, что у вас подряд идут два одинаковых id крайне мала. Далее, зачем вообще вам idpost, если гораздо логичнее перед добавлением нового ресурса проверять есть ли ресурс с таким pagetitle и если есть, то не добавлять? И getCollection лучше заменить на getIterator так как вам все объекты разом не нужны. И ещё, чистить кеш всего сайта в цикле не кажется мне хорошей идеей.
Александр
24 января 2021, 19:02
0
версия mysql — 8.0.22 (в 5.7 все гуд)
ошибка вот Array
(
[0] => 42000
[1] => 1064
[2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ASC LIMIT 1' at line 1
)
происходит при загрузке картинок в галерею, файлы успешно загружаются, но в ms2_products названия картинок не прописываются
DocentBF
24 января 2021, 11:37
0
В текущей реализации — увы, никак.
Павел Гвоздь
24 января 2021, 07:46
0
Решил обойтись без кучи файлов, там итак кеш-файлов хватает)
Evgeny
24 января 2021, 02:38
0
подскажите пожалуйста — как ограничить поле для текста? прям не хватает параметра для настраиваемого отступа по всем осям в отдельности)
Артур Шевченко
23 января 2021, 19:58
0
Господа, не ссортесь, право слово программирование штука гибкая и у задачи может быть много решений, в какой-то ситуации лучше одно решение, в какой-то другое. getCollection кушает много памяти это факт, но если ресурсов немного, то данное обстоятельство некритично. Хотя я склоняюсь на сторону Артёма использование процессора сложновато и плохо вписывается в понятие «по-быстрому», я сам новичок и писал для новичков, Артём подсказал, где поправить, чтобы было быстрее и безопаснее получился, на мой взгляд вполне простой и понятный код, неуниверсальный конечно, но такая задача и не ставилась.
Артем
23 января 2021, 19:48
+1
Никто не мешает занаследовать процессор и искать по чему хочется.
Дык нафиг он нужен, если там нет ни одного метода, который не нужно переопределять?
searchResources юзает getCollection, ровно как и остальные методы для поиска, тут можно передать привет оперативке.
process тоже переопределять нужно.
И что там в итоге остается, проверка прав?
Артур Шевченко
23 января 2021, 19:37
0
Таки согласен, см. в-третьих. Постараюсь написать и такой вариант. Хотя я тот ещё любитель ООП))
Павел Бигель
23 января 2021, 19:25
0
Никто не мешает занаследовать процессор и искать по чему хочется.
Артур Шевченко
23 января 2021, 19:23
0
Во-первых, мне лично не очень понятно как и что я могу передать в этот процессор и что он мне вернёт, где можно почитать как с ним работать?
Во-вторых, зачем мне поиск по TV, чанкам, сниппетам и пользователям, это избыточный функционал для моей задачи.
В-третьих, я не учел что такой процессор существует.
В-четвёртых, для саморазвития полезно изобрести велосипед другой, в конце концов я никого на нём ездить не заставляю:-)
Павел Бигель
23 января 2021, 19:13
+1
Люди продолжают изобретать велосипеды
тыц
Артур Шевченко
23 января 2021, 18:58
0
Валидатор у вас странный. Он данные берёт из базы, а должен с фронта. Я бы проверял $_FILES на количество файлов.