Всего 123 801 комментарий

Константин Ильин
18 августа 2023, 14:05
0
ну тут тогда код написать выборки и создания на основания выборки, в целом он простой, логика такая:
1. указываем id ресурса с потомками в переменную
2. сначала получаем его(ресурс родитель) и копируем через resource/create передавая процессору через toArray весь массив
3. После получаем потомков и в цикле через процессор resource/create создаем потомков уже у нового полученного ресурса.

если вам не нужно копировать сам родитель то второй шаг не нужен, т.е. просто получить потомки и создать такие же в новом родителе через resource/create, передавая через toArray весь массив, заменяя parent на нужный
Денис Усачев
18 августа 2023, 13:46
0
Недавно Chrome начал показывать предупреждение:
[Deprecation] Listener added for a synchronous 'DOMNodeInserted' DOM Mutation Event. This event type is deprecated (https://w3c.github.io/uievents/#legacy-event-types) and work is underway to remove it from this browser. Usage of this event listener will cause performance issues today, and represents a risk of future incompatibility. Consider using MutationObserver instead.
Всему причина msfavorites assets/components/msfavorites/js/default.js

а имеено DOMNodeInserted

$(window).on('load', function () {
        $('body').msfavorites('loadFavorites', true);
        $($.fn.msfavorites.selectors.main).msfavorites();

        $('body').on('DOMNodeInserted', function (event) {
            var html;
            if (event.target && (html = event.target.innerHTML) && typeof html === 'string' && html.match(new RegExp($.fn.msfavorites.defaults))) {
                $(document).trigger($.fn.msfavorites.CONTENT_CHANGE, jQuery.merge([html], arguments));
            }
        });
    });
заменить на

$(window).on('load', function () {
    $('body').msfavorites('loadFavorites', true);
    $($.fn.msfavorites.selectors.main).msfavorites();
    var observer = new MutationObserver(function (mutationsList) {
        for (var i = 0; i < mutationsList.length; i++) {
            var mutation = mutationsList[i];
            var target = mutation.target;
            if (mutation.type === 'childList' && target && target.innerHTML) {
                var html = target.innerHTML;
                if (typeof html === 'string' && html.match(new RegExp($.fn.msfavorites.defaults))) {
                    $(document).trigger($.fn.msfavorites.CONTENT_CHANGE, jQuery.merge([html], arguments));
                }
            }
        }
    });
    observer.observe($('body')[0], { childList: true, subtree: true });
});
пробелема решена
Артур Шевченко
18 августа 2023, 13:40
+2
В общем добавил что-то типа CSRF-токена извне теперь не достучаться.
Алексей Шумаев
18 августа 2023, 11:20
+1
Главное прикрыть запросы извне.
Какие заголовки передаются из js можно посмотреть и добавить нужный при необходимости.
Роман
18 августа 2023, 10:53
0
работает, pagetitle не меняет хотя бы, но алиасы все равно меняет, новые прописывает, можно алиасы сохранить как то?
Алексей Шумаев
18 августа 2023, 09:39
+1
В /assets/action.php добавьте старый добрый
if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') die;
Dan
Dan
18 августа 2023, 07:19
+1
Процессором только в этом же родителе, но тогда alias-ы будут другие. Я вам уже три раза один вопрос задал, но так и не увидел ответа. Зачем вам нужно сохранить алиасы?
Dan
Dan
18 августа 2023, 07:18
0
Вы себе напридумывали. Василий, как и остальные, писал по делу всегда. Если вы тупили, то он прямо на это и указывал. Пишите пожелания, может и сделают. Все таки он разрабатывается в свободное время ребятами, это же не их фултайм работа.
Роман
17 августа 2023, 21:30
0
Это как снипет запустить на странице?
Константин Ильин
17 августа 2023, 20:56
0
Можно использовать процессор дубликата

$options = [
    "id" => 18, // Ресурс с потомками который копируем
    "name" => "Новый ресурс", // Новое название
    "prefixDuplicate" => false,  
    "published_mode" => "preserve", 
    "duplicate_children" => true
];
$result = $modx->runProcessor('resource/duplicate', $options);
Роман
17 августа 2023, 20:30
0
Вложенные включены, а как создать НЕ в этом родителе? При копировании он по умолчанию появляется рядом.
Игорь
17 августа 2023, 20:17
0
я не сильно много обращался, но ответ всегда был конструктивным. Пару раз обращался — Василий действительно помог, он реально молодец (и всей душой за это дело переживал)…
Если есть компонент за 3+ рублей и есть пожелания — можно же подумать и доделать для всех остальных (это же реально нормальное пожелание — на том же Wordpress есть готовые плагины, где модуль поиска уже встроен в фильтр и работает именно так)…
Николай Савин
17 августа 2023, 19:35
0
Василий вам решал любые ваши задачи по требованию?
Dan
Dan
17 августа 2023, 19:29
1
0
Нельзя сделать из коробки, поэтому вам так и ответили, ибо это все таки техподдержка, а не фриланс-биржа, а вообще сделать можно. Я сам такое делал и не на одном проекте. Нужно лишь написать свой метод фильтрации, и конкретно в этом случае ничего сложного. Попробуйте, он все равно ничего не сломает, либо будет работать, либо нет. А когда все таки получится сделать, то поймете, что в принципе несложно. Просто зайдите по ссылке, которую я в 1ом комменте скидывал и делайте все по примеру.
Dan
Dan
17 августа 2023, 19:27
0
Копии в том же родителе создать хотите? Вложенные урлы включены?
Игорь
17 августа 2023, 17:59
0
я так и не смог разобраться… в платной техподдержке ответили типа, что так сделать нельзя (зря только оплатили новую лицензию)… (((… грустно как-то стало с MODX работать после ухода Василия ((
Олег
17 августа 2023, 13:18
0
Да, спасибо, всё наладилось!