Лайфхак по config.inc
В modx есть файл с конфигом core/config/config.inc.php, в нем кроме установки имени базы, есть еще возможность переопределять настройки:
1. Удаляем запись в системных настройках с ключом site_name

2. Добавляем ключ удаленной настройки
И воулия))) У нас на сайте появляется название из конфига)
P.S.: только помните о том что при обновлении компонентов или системы у вас ключи заново будут созданы в БД (не забудьте удалить).
Например есть сайты dev и product, для каждого вы можете завести свой конфиг.
прописав название в файлах:
Для dev:
Помимо того что вы можете переопределять старые настройки. Также вы можете создать новые:
[[++site_name]]
{'site_name'| config}
<?php
$modx->getOption('site_name');Но как?
1. Удаляем запись в системных настройках с ключом site_name

2. Добавляем ключ удаленной настройки
<?php
#core/config/config.inc.php
...
$config_options = array (
'site_name' => 'Новое имя сайта', // удалить запись с этим ключем из системных настроек
);
..И воулия))) У нас на сайте появляется название из конфига)
P.S.: только помните о том что при обновлении компонентов или системы у вас ключи заново будут созданы в БД (не забудьте удалить).
Применение
Например есть сайты dev и product, для каждого вы можете завести свой конфиг.
прописав название в файлах:
config.core.php
manager/config.core.php
connectors/config.core.phpДля dev:
<?php
...
define('MODX_CONFIG_KEY', 'dev');
...Для product:<?php
...
define('MODX_CONFIG_KEY', 'product');
...Добавление своих настроек
Помимо того что вы можете переопределять старые настройки. Также вы можете создать новые:
<?php
#core/config/config.inc.php
...
$config_options = array (
'site_name' => 'Новое имя сайта', // удалить запись с этим ключем из системных настроек
'site_new_phone' => '88009000622',
'site_new_work_days' => 'Каждый день с 10 до 21',
'site_new_work_days_array' => ['Пн','Вт'] // причем можно использовать даже массив
);
..на сайте:[[++site_new_phone]]]
[[++site_new_work_days]]]<?php
$modx->getOption('site_new_phone');
$modx->getOption('site_new_work_days'); Комментарии: 29
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Тут идея в том чтобы иметь разные настройки у сайтов и добавлять новые через файл.
С файлом куда проще работать чем с БД, это еще даже если не брать во внимание работу с git.
А cache_path кажется не получиться сменить?
Пытался найти как изменить cache_path у класса xPDOCacheManager не нашел)
или в своих коннекторах, где создается объект $modx указать параметры инициализации
Тут проблем в том что если удалишь site_name то при обновлении он заново будет создан.
Варианты:
В моем варианте можно переопределять любые системные настройки. Они сразу будут применены. Кроме того, новые файлы подключаются автоматом.
П.С. Файл конфига редактировать никто не запрещает. Он индивидуальный и его при обновлении никогда не трогают.
cache_path — однозначно нужно в файле config.inc.php заменять
Осталось только понять зачем?
Написал плагин, который во время сброса кэша срабатывает и удаляет директории с кэшем городов.
Ну и по аналогии обновление ресурсов при сохранении.
В папке
создаются папки
Собственно так и выяснялось что в классе xPDOCacheManager невозможно изменить cache_path
Есть другие разные ухищрения как можно реализовать подобный функционал, сейчас не об этом.
Текущее решение очень простое и работает)
Пользовательские настройки также лучше не мешать с системными, а вынести в отдельный файл. Тогда другой программист поймёт, какие настройки устанавливает система, а какие — переопределил пользователь.
Структура папок
Структура папок
Вид настроек например для
core/config/settings/en/en-settings.inc.php
а то если несколько конфигов будет, то MODX_CONFIG_KEY не поможет.
А переменные, определённые в файле становятся доступны в текущей области действия.
Если же массив с настройками там называется $config_options, то получать его лучше так:
Ну теперь это очевидно для всех, что в тех файлах настроек должен быть return, чтобы способ сработал.
Но даже если там будут переменные, они также включатся в эту область.