Сергей Шлоков

Сергей Шлоков

Был в сети 06 ноября 2025, 19:54
Заказы не принимаю
Почему-то многие думают, что мы уже живем в эпоху мысленного обмена информацией. Я каждый раз обламываюсь пытаясь найти у себя телепатические способности. :(
Кать, для краткости ваш вопрос можно было написать короче «Чего-то не получается». :)
П.С. Хотя уже кто-то разобрался. :)
Добавил переадресацию на страницу редактирования элемента при Ctrl+Shift+Enter.
П.С. Modx.com почему-то не принимает такое название editSelectedElement. Буду экспериментировать с другими. Так что пока удаляю с Гита.
Если не откликаются, значит не могут помочь или вопрос слишком нубский. Не писать же всем кто прочитал «Я не знаю». Это раз. Два. В блогах тикет поднять нельзя. Но можно поднять его в блоке «Прямой эфир». Нужно просто написать комментарий в своем тикете и таким образом обратить повторное внимание.
Можно через PDO сделать
$c = $modx->newQuery('Objekt');
    $c->command('update');
    $c->set(array(
        'name'  => $name
        ));
    $c->where(array(
        'id'    => $id,    
    ));
    $c->prepare();
    $sql = $c->toSql();
   // sql можно составить и вручную 
   // sql = "UPDATE $modx->getTableName('objekt') SET `name` = {$name} WHERE `id` = {$id}";
    if ($count = $modx->exec($sql)) {
    //  Обновлено $count строк
    }
Провел небольшой тест на своем сайте (на локалке). Ресурсов меньше 100. Тренировался только на чанках. Время вызова сниппета pdoMenu в чанке [[$main_menu]] отличается на 0.02 сек. Поэтому я его учитывать не стал.
Вот шаблон страницы. Чанки простые, без фильтров и премудростей.
<!DOCTYPE html>
<html lang="ru">
<head>
    [[$head]]
</head>    
<body>
    // Шапка страницы
    [[$header]]
    // Меню. В нем вызывается pdoMenu
    [[$main_menu]]
    // Галерея
    [[$gallery]]
    // Содержание ресурса 
    [[*content]]
    // Подвал страницы
    [[$footer]]
    </div> 
</body>
</html>
Вызов в различных комбинациях. 5 раз для каждого метода. Показаны средние значения.
--------------------------------------------------------------
ВЫЗОВ КЭШИРУЕМЫХ ЧАНКОВ
--------------------------------------------------------------
// Чанки MODX из базы
               Первый запуск            Второй (из кэша)
Время:             0.74           |          0.21
Запросы:            63            |          10
// Чанки с диска
               Первый запуск            Второй (из кэша)
Время:             0.66           |          0.21
Запросы:            58            |          10

--------------------------------------------------------------
ВЫЗОВ НЕКЭШИРУЕМЫХ ЧАНКОВ
--------------------------------------------------------------
// Чанки MODX из базы
               Первый запуск                Второй 
Время:             0.74           |          0.32
Запросы:            63            |          12
// Чанки с диска
               Первый запуск                Второй
Время:             0.66           |          0.27
Запросы:            58            |          12

--------------------------------------------------------------
ВЫЗОВ НЕКЭШИРУЕМЫХ СТАТИЧЕСКИХ ЧАНКОВ
--------------------------------------------------------------
// Статические чанки MODX
               Первый запуск                Второй 
Время:             0.77           |          0.32
Запросы:            65            |          12
// Чанки с диска
               Первый запуск                Второй 
Время:             0.66           |          0.27
Запросы:            58            |          12
Видно, что запросов в базу стало меньше. Но выигрыш небольшой. По крайней мере, на небольших сайтах. При кэшировании разницы вообще нет. Может быть на больших сайтах с вызовом некэшируемых элементов эта разница будет заметнее. Но мне проверить негде.
Вывод. На небольших сайтах результаты в районе погрешности. Преимуществ нет.
Вот такое получилось исследование.

П.С. Оставлю себе для разработки, чтобы не морочится со статическими элементами — каждому нужно прописывать пути в отличие от данного приема. Для простоты поменял логику парсера. Теперь он проверяет, есть ли такой чанк на диске, если есть — грузит, нет — берет из базы. Без всяких подчеркиваний.