Оказывается, в последних версиях MODX Revolution появилась еще одна политика доступов — Developer с описанием «Context administration policy with most Permissions except Administrator and Security functions».
Но почему-то ее просто так не видно. Почему? Потому что при установке MODX-а для этой политики не указывается шаблон политик, то есть в таблице modx_access_policies эта запись с ключом template=0.
А меж тем данная политика содержит 142 значения, что не намного меньше полного админа (у которого 172 настройки), зато прописано все самое важное, чтобы и права дать, и сильно не распоясать. Так что если кому понадобится, идите в таблицу modx_access_policies и указывайте для этой политики ключ template=1, и политика появится в админке.
С радостью сообщаю, что пакеты modxRepository и modxSmarty опубликованы в официальном репозитории modx.com
Про modxRepository я писал не мало, а вот про modxSmarty только мельком заикался. А между прочим считаю его одним из самых интересных своих пакетов. Объясню почему. Из-за особенностей парсера MODX, и самого MODX в целом, шаблоны MODX (именно modTemplate) — это по сути своей не совсем шаблоны, а как бы контроллеры. То есть именно то, какой шаблон указан для документа, определяет, какая логика будет проработана в процессе обработки документа. Это будет определено на уровне содержащихся в шаблоне сниппетов и чанков. Но как таковой функции шаблонизации они все-таки не имеют. Попробуйте, к примеру, сменить разом полностью все оформление готового сайта. Не получится просто так. А даже если и получится, то MODX-шаблоны будут играть в этом далеко не первую роль.
Использование пакета modxSmarty позволяет использовать для разработки своих сайтов шаблонизатор Smarty (забегая вперед, скажу, что в дальнейшем появятся подобные пакеты и для других систем шаблонизации, типа Twig и т.п.).
В данном случае Smarty дает сразу два мощных преимущества: 1. Реальную шаблонизацию, с возможностью смены всего скина сайта. 2. Дополнительные инструменты по обработке MODX-элементов и кешированию.
С первым пунктом наверняка многим все понятно, а по второму чуть подробней: Пакет modxSmarty не просто дает дополнительные настройки и устанавливает плагин, он еще и инсталирует несколько Smarty-плагинов, которые позволяют работать с MODX-тегами. Что это дает? Это позволяет значительно облегчить нагрузку на MODX-парсер, и не обрабатывать по несколько раз одни и те же элементы, когда это не надо.
Сразу скажу, что наилучший эффект достигается с пакетом phpTemplates, который позволяет выполнять php-код сразу на уровне статических шаблонов.
Несколько примеров работы с modxSmarty в видеоролике.
Добрый день.
Да, можно. 1. Можете посмотреть публичный коннектор компонента Gallery (там он наиболее полный). 2. Я использую урезанную версию без лишних проверок, что-то типа этого:
<?php $_REQUEST['ctx'] = 'web'; if(!isset($location)){ $location = ''; } @session_cache_limiter('public'); define('MODX_REQP',false); require_once dirname(dirname(dirname(dirname(dirname(__FILE__))))).'/config.core.php'; require_once MODX_CORE_PATH.'config/'.MODX_CONFIG_KEY.'.inc.php'; require_once MODX_CONNECTORS_PATH.'index.php'; if ($modx->user->hasSessionContext($modx->context->get('key'))) { $_SERVER['HTTP_MODAUTH'] = $_SESSION["modx.". $modx->context->get('key') .".user.token"]; } else { $_SESSION["modx." .$modx->context->get('key'). ".user.token"] = 0; $_SERVER['HTTP_MODAUTH'] = 0; } /* handle request */ if(!$path = $modx->getOption('mycomponent.core_path')){ $path = $modx->getOption('core_path').'components/mycomponent/'; } $path .= 'processors/web/'; $modx->request->handleRequest(array( 'processors_path' => $path, 'location' => $location, ));
И если надо, вызываю его другим коннектором, передавая $location в него.
Пожалуйста
Спасибо большое, буду экспериментировать.
И еще в меню админки 3 компонента, а в assets/components их 8
Компоненты в core/components/ и в меню не имеют прямой связи. Меню рулится через управление менюхой (Система->Действия). Опять-таки, это общий вопрос по системе, потому такие вещи или гуглим, или пишем общий топик-вопрос.
шаблон bootstrap находится в сборке тут assets/components/modxsite/templates/bootstrap. Как назначить этот шаблон страницам сайта?
Это в системной настройке в modxSmarty надо указывать название шаблона. В данном случае bootstrap, хотя там по-моему он изначально и установлен. Но правильно делать копию шаблона и указывать в настройке уже свой шаблон. В видюхе про сборку магазина это подробно демонстрируется.
Добрый день! Нравится модель процессор/коннектор, очень удобно с ней работать, но она требует, чтобы пользователь был авторизован в контексте mgr. Можно ли это обойти и использовать процессоры для контекста web?
Спасибо, получилось. Николай, еще один вопрос, шаблон bootstrap находится в сборке тут assets/components/modxsite/templates/bootstrap. Как назначить этот шаблон страницам сайта? И еще в меню админки 3 компонента, а в assets/components их 8… так и должно быть? Прошу простить если туплю:)
Я тоже замечал у них логические ошибки в работе механизма. Сам отработал такую последовательность: 1. Просто создаю новое голое облако через Create new cloud. 2. Уже потом сверху накатываю на него образ Inject into Cloud. 3. При необходимости создаю нового админ-пользователя.
Я прошу прощения, никак не могу понять как все таки развернуть образ. Они импортнули сборку, теперь sborka.fi1osof.modxcloud.com-130506.1553.42-2.2.7-pl.transport.zip лежит у меня в Vault с пометками manually imported и ниже ссылки меню Inject into Cloud Create New Cloud From Snapshot и Delete. Выполнял Inject into Cloud и Create New Cloud From Snapshot. Все выполняется вроде, но в сайтах обычный голый modx… Подскажите пожалуйста что делаю неправильно.