Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 130 комментариев

Дмитрий
Дмитрий
Вячеслав Варов
Вячеслав Варов
Докрутил, ранее не подтягивались настройки если запрашивать из одного контекста настройки другого
<?php
switch ($modx->event->name) {
    case 'OnHandleRequest':
        // Функция для загрузки настроек из файлов
        function loadSettings($directory) {
            $settings = [];
            if (file_exists($directory) && is_dir($directory)) {
                foreach (glob($directory . '*.inc.php') as $file) {
                    $response = require($file);
                    if (is_array($response)) {
                        $settings = array_merge($settings, $response);
                    }
                }
            }
            return $settings;
        }

        // Загрузка общих настроек
        $site_all = MODX_CORE_PATH . 'config/settings/';
        $globalSettings = loadSettings($site_all);

        // Конфигурация для сайта с конфигом MODX_CONFIG_KEY
        $site_dir = MODX_CORE_PATH . 'config/settings/' . MODX_CONFIG_KEY . '/';
        $configKeySettings = loadSettings($site_dir);

        // Конфигурация для текущего контекста
        $context_key = $modx->context->get('key');
        $context_dir = MODX_CORE_PATH . 'config/settings/' . $context_key . '/';
        $contextSettings = loadSettings($context_dir);

        // Объединение всех настроек
        $allSettings = array_merge($globalSettings, $configKeySettings, $contextSettings);

        // Применение настроек к текущему контексту
        foreach ($allSettings as $key => $value) {
            $modx->context->setOption($key, $value);

            // Сохранение настроек в базе данных
            $setting = $modx->getObject('modContextSetting', [
                'context_key' => $context_key,
                'key' => $key
            ]);
            if (!$setting) {
                $setting = $modx->newObject('modContextSetting');
                $setting->set('context_key', $context_key);
                $setting->set('key', $key);
            }
            $setting->set('value', $value);
            $setting->save();
        }
        break;
}
?>
Наумов Алексей
Наумов Алексей
Добрый день. Да ничем в принципе)
Замените на button. В js скрипте в первых строчках файла есть селектор для элемента, отправляющего форму, замените и его тоже.
Alexey
Alexey
В системных настройках админки есть опция «enable_dragdrop», которая запрещает/разрешает перетаскивание в дереве меню админки. Если необходимо отключить перетаскивание для конкретной группы пользователей, то можно попробовать в плагине на событие OnMODXInit проверять группу текущего пользователя и — если группа подходит — как-то так:

$modx->setOption('enable_dragdrop', 0);

Возможно, для этой цели есть более «точные» события, внимательно не смотрел
Артур Шевченко
Артур Шевченко
Не выношу папку core и, должен сказать, за 6 лет проблем с безопасностью не было.

теперь эта папка доступна извне
Эта проблема решается настройкой конфигурации сервера.
Konstantin
Konstantin
Подскажите как быть если по соображениям безопастности папка core находится в другом месте и переименована? при установке пакета sendit белый экран. Простой перенос файлов из автосозданной при установке пакета папки core в мою core ничего не изменилось — белый экран, заработало только когда вернул папку core в корень сайта. Но теперь эта папка доступна извне что не безопасно, Подскажите как решаете этот вопрос вы?
Сергей
Сергей
Можно поинтересоваться чем обусловлено использование input[type=«submit»] вместо button. Мало того что форма сейчас просто не отправляется — обновляется страница, в предыдущих версиях работало отправка по button (бог с ним про disable и тд) — проверки кнопки не было.
Но как использовать input, если переписывать с button, если кнопка нужна двустрочная или текст с картинкой. Попалось сейчас пару проектов таких при обновлении.