Как исправить админку ModX Revo после переноса?
Пишет такое:
Warning: include_once(/home/s/sem38mc5/sem38mc5.beget.tech/public_html-stage/core/model/modx/modx.class.php): failed to open stream: No such file or directory in /home/s/sem38mc5/sem38mc5.beget.tech/public_html/manager/index.php on line 52
Warning: include_once(): Failed opening ‘/home/s/sem38mc5/sem38mc5.beget.tech/public_html-stage/core/model/modx/modx.class.php’ for inclusion (include_path=’.:/usr/share/php’) in /home/s/sem38mc5/sem38mc5.beget.tech/public_html/manager/index.php on line 52
Warning: include(/home/s/sem38mc5/sem38mc5.beget.tech/public_html-stage/core/error/unavailable.include.php): failed to open stream: No such file or directory in /home/s/sem38mc5/sem38mc5.beget.tech/public_html/manager/index.php on line 53
Warning: include(/home/s/sem38mc5/sem38mc5.beget.tech/public_html-stage/core/error/unavailable.include.php): failed to open stream: No such file or directory in /home/s/sem38mc5/sem38mc5.beget.tech/public_html/manager/index.php on line 53
Warning: include(): Failed opening ‘/home/s/sem38mc5/sem38mc5.beget.tech/public_html-stage/core/error/unavailable.include.php’ for inclusion (include_path=’.:/usr/share/php’) in /home/s/sem38mc5/sem38mc5.beget.tech/public_html/manager/index.php on line 53 Site temporarily unavailable!
Директории все менял массовой заменой, так что никаких ошибок не может быть, никаких лишних пробелов и т.д.
Как быть, куда копать?
* строчки с 49 по 54, в которых загвоздка:
/* include the modX class */ if (!(include_once MODX_CORE_PATH . 'model/modx/modx.class.php')) < include MODX_CORE_PATH . 'error/unavailable.include.php'; die('Site temporarily unavailable!'); >
Оценить 3 комментария
Тег include
Тэги {include} используются для включения других шаблонов в текущий. Любые переменные, доступные в текущем шаблоне, доступны и во включаемом.
Вы также можете передать переменные в подключаемый шаблон в виде атрибутов. Любая переменная, переданная в подключаемый шаблон, доступны только в области видимости подключаемого файла. Переданные переменные имеют преимущество перед существующими переменными с аналогичными именами.
{include "pagination.tpl" count=$total_pages current=$.get.page}
Все значения присвоенных переменных восстанавливаются после того, как подключаемый шаблон отработал. Это значит, что вы можете использовать все переменные из подключающего шаблона в подключаемом, но изменения переменных внутри подключаемого шаблона не будут видны внутри подключающего шаблона после команды {include} .
Если требуется сохранить результат отрисовки шаблона в переменную то используйте $.fetch($templates, $values) :
{set $data = $.fetch('user.tpl', ["name" => $data.name, "email" => $data.email])}
{insert}
В отличии от {include} тег {insert} не вызывает дочерний шаблон во время отрисовки, а вставляет код дочернего шаблона в родительский на момент компиляции. Это позволяет сэкономить ресурсы на проверке и чтении шаблона. Однако такой формат подключения шаблона имеет ограничения. Имя шаблона должно быть задано явно, без использования переменных и выражений:
{insert 'pagination.tpl'} {* отработает *} {insert $pagination} {* вызовет ошибку *}
Благодарность автору
Если по какой-либо причине вы хотите поблагодарить автора данного ресурса, вы можете это сделать одним из удобных для вас способов ниже.
Один из самых популярных способов поблагодарить автора, воспользоваться сервисом Яндекс.Деньги.
MODX. Подключение внешних php файлов
Поскольку MODX кеширует файлы, так просто подключить свой php класс или библиотеку не получится. Для того чтобы это сделать, необходимо добавить файл до окончания инициализации MODX.
Будьте внимательны, неправильное указание пути может привести к 500 ошибке при попытке попасть в административную панель, которую можно исправить только c наличием доступа к SQL базе и FTP.
Создаем плагин привязанный к событию OnMODXInit
Идем на вкладку элементы, нажимаем кнопку «Новый плагин», даем ему имя и указываем следующий код. На вкладке «системные события» ставим галку напротив OnMODXInit
switch ($modx->event->name) < case 'OnMODXInit': // Укажем путь до файла $file = MODX_CORE_PATH . 'classes/my.class.php'; if (file_exists($file)) < require_once $file; >break; >
Если вы все же нарвались на 500 ошибку, удалите плагин с помощью phpMyAdmin в таблице prefix_site_plugins, и удалите папку с кешем /core/chache
Вариант с инициализацией MODX в классе/файле/библиотеке
/* Подключаем MODX */ require_once '/absolute/path/to/modx/config.core.php'; require_once MODX_CORE_PATH.'model/modx/modx.class.php'; $modx = new modX(); $modx->initialize('web'); $modx->getService('error','error.modError', '', ''); $classPath= MODX_CORE_PATH . 'classes/'; if (file_exists($classPath)) { $files= scandir($classPath); foreach ($files as $file) { if (preg_match('/.+\.class.php$/',$file)) { require $classPath . $file; } } }
Использование PHP-вставок в шаблонах MODX Revo
В MODX Revolution существует такое понятие, как «Сниппет» – PHP-код, выполнение которого выводит результат на сайте. Сниппет вставляется в шаблон сайта, а значит, это как раз то, что нам нужно для решения задачи.
Итак, для того, чтобы вставить PHP-код в шаблон вашего сайта, вам необходимо:
1. Авторизоваться в панели управления вашим сайтом.
2. Переключиться на вкладку «Элементы» и напротив пункта «Сниппеты» нажать на +.
После чего у вас откроется страница с добавлением нового сниппета.
3. На открывшейся странице в форму вписываем имя (оно может быть как на русском, так и на английском языке) и код сниппета (обязательно должен начинаться с ), а также выбираем категорию (если это необходимо).
Не забываем запомнить имя нового сниппета, так как оно нам еще потребуется. И нажимаем «Сохранить».
4. Далее переходим в редактирование шаблона вашего сайта. Для этого во вкладке «Элементы» выберите нужный вам шаблон и в нужное место вставьте код вызова сниппета.
Если нужно, чтобы результаты скрипта кэшировались, то используйте:
Если же кэширование не нужно, то используйте:
Вот таким способом можно внедрять различные PHP-скрипты в шаблон MODX Revo.