Самозагрузка C5 из внешнего скрипта
Я пишу скрипт импорта для добавления внешнего содержимого в установку C5.
Я не уверен, какие файлы мне нужно включить, чтобы получить доступ к C5 API (без каких-либо действий, таких как загрузка страницы)?
/concrete/dispatcher.php
выполняет загрузку инициализаций, но я не уверен, какие из них требуются. Просто в том числе dispatcher.php
заставляет скрипт перейти к диалоговому окну установки.
Есть ли канонический способ инициализации C5 во внешнем инструменте? Я не могу найти ничего в документации для разработчиков.
2 ответа
E сть C5_ENVIRONMENT_ONLY
константу, которую вы можете определить, после чего вы можете включить файл "index.php", чтобы получить систему c5, не позволяя ей обслуживать определенную страницу или тему.
<?php
define('C5_ENVIRONMENT_ONLY', true);
include("index.php");
//C5 should be loaded now, so you can interact with the API...
Я только что проверил это на последней версии (5.6.1), и она работала просто отлично - я смог запросить базу данных через Loader::db() и мог взаимодействовать с вошедшим в систему пользовательским объектом (global $u). Поэтому я предполагаю, что если эти две вещи сработают, то все будет работать.
Я нашел эти 2 темы форума некоторое время назад:
- http://www.concrete5.org/developers/bugs/5-4-2-1/c5_integration-with-upgraded-version-of-core/
- http://www.concrete5.org/community/forums/customizing_c5/setting-up-cron-job-script-include-just-the-and039functions-anda/
... которые указывают, что вы также должны объявить DIR_BASE
константа... но это может быть старым требованием, потому что мои тесты работали без него.
Чтобы написать скрипт импорта, я бы предложил добавить одну страницу на панель инструментов, как описано здесь. Это действительно просто и будет обрабатывать загрузку для вас.