1. Не забывай все-таки менять права на папки и файлы с root-а :-) Но это так, к слову. В данном случае не в этом проблема.
  2. Смотри чаще core/cache/logs/error.log Вот какие там интересные записи: [2013-08-24 01:23:09] (FATAL) The requested resource has no valid content type specified. [2013-08-24 01:23:09] (ERROR @ /index.php) Error 42S02 executing statement:. Array ( [0] => 42S02 [1] => 1146 [2] => Table '*.modx_session' doesn't exist ) А теперь расскажи, как ты устанавливал MODX, что у тебя части таблиц нету? Вот все таблицы, что у тебя сейчас есть в базе данных: mysql> show tables -> ; +------------------------------------+ | Tables_in_******** | +------------------------------------+ | modx_access_actiondom | | modx_access_actions | | modx_access_category | | modx_access_context | | modx_access_elements | | modx_access_media_source | | modx_access_menus | | modx_access_permissions | | modx_access_policy_template_groups | | modx_access_policy_templates | | modx_access_resource_groups | | modx_access_resources | | modx_access_templatevars | | modx_actiondom | | modx_actions | | modx_actions_fields | | modx_active_users | | modx_categories | | modx_categories_closure | | modx_class_map | | modx_context | | modx_dashboard | | modx_dashboard_widget | | modx_dashboard_widget_placement | | modx_document_groups | | modx_element_property_sets | | modx_fc_profiles | | modx_fc_profiles_usergroups | | modx_fc_sets | | modx_lexicon_entries | | modx_manager_log | | modx_media_sources | | modx_media_sources_contexts | | modx_media_sources_elements | | modx_member_groups | | modx_namespaces | | modx_property_set | | modx_register_topics | | modx_site_content | | modx_site_htmlsnippets | | modx_site_plugins | | modx_site_snippets | | modx_site_templates | | modx_site_tmplvar_access | | modx_site_tmplvar_contentvalues | | modx_site_tmplvar_templates | | modx_site_tmplvars | | modx_system_eventnames | | modx_system_settings | | modx_user_attributes | | modx_user_messages | | modx_user_settings | | modx_users | +------------------------------------+ 53 rows in set (0.01 sec) И как видишь, таблицы modx_session действительно нет, и это не единственная отсутствующая таблица.

Да, подобные решения очень нужны. Планирую выпустить серьезно обновленную сборку, в котором будет больше готовых модулей на процессорах+Smarty, включая менюшку на процессорах и т.п. Но вот оформлению в виде Smarty-плагинов предпочитаю именно процессоры. Есть ряд причин:

  1. Smarty-плагины — это не формат MODX-а, и они не особо укладываются в модель пакетов для него. А даже если их включать в пакеты, то для подключения их надо указывать Smarty дополнительную директорию расширений (через плагин). Все это очень не удобно.
  2. Smarty-плагины подходят только для самого Smarty. Отдельно их не вызовешь. А вот MODX-процессоры можно вызвать где угодно — хоть в Smarty, хоть в плагиных, хоть в сниппетах, хоть в других плагинах. К тому же процессоры можно использовать и в других системах шаблонизации (ведь все еще витают идеи прикрутить Twig и т.п.).
  3. Smarty-плагины — это просто функции, а значит их расширить или переопределить нельзя. С процессорами все гораздо интересней, потому что это классы. В общем, я стараюсь Smarty не обвешивать особенно.

Ну, примерно так: <?php /**

  • Smarty plugin
  • @package Smarty
  • @subpackage PluginsFunction */

function smarty_function_galAlbum($params, & $smarty) { if(!isset($params['album']) OR !$album = $params['album']){return;}

$output = '';
if(!$rowTpl = $params['rowTpl']){
	$output = array();
}

if(!empty($params['assign'])){
    $assign = (string)$params['assign'];
}

$modx = & $smarty->modx;

// Получаем все элементы
$q = $modx->newQuery('galItem');
$q->join('galAlbumItem', 'AlbumItems');
$q->where(array(
    'AlbumItems.album' => $album,
));

if($items=$modx->getCollection('galItem', $q)){
	foreach($items as $item){
	    $item = array(
	        'name'			=>$item->get('name'),
            'description'	=>$item->get('description'),

// 'filename' =>$item->get('filename'), // 'mediatype' =>$item->get('mediatype'), // 'url' =>$item->get('url'), 'relativeImage' => $item->get('relativeImage'), // 'thumbnail' =>$item->get('thumbnail'), // 'image' =>$item->get('image'), // 'absoluteImage' =>$item->get('absoluteImage'), // 'filesize' =>$item->get('filesize'), // 'image_path' =>$item->get('image_path'), ); if($rowTpl){ $smarty->assign('item',$item); $output.=$smarty->fetch($rowTpl); } else{ $output[]=$item; } } } return !empty($assign) ? $smarty->assign($assign, $output) : $output; }

Алишер, пришли логин/пароль ssh в личку. И адрес сайта.

Доброго времени суток. Я пробую установить сайт на digitalocean, установка прошла отлично, но, когда пытаюсь войти в админку, то получаю: 503 Error Page not found The page you requested was not found. Причем другие файлы из папки manager, запускаются. НЕ могли бы мне помочь в решении этой проблемы. Спасибо.

Ясно. Так и поступлю. Спасибо.

что кономичнее на твой взгляд — getCollection или все-таки процессор? Ты путаешь довольно разные вещи. getCollection — это конкретный метод xPDO для получения массива объектов. При этом это не только запросы к базе данных, но и набивка результатов в конечные объекты. Чтобы это лучше понимать, прочитай эти статьи: modxclub.ru/blog/200.html modxclub.ru/blog/166.html А процессор — это процессор. И в нем логика может быть какая угодно. Так вот, классический modObjectGetlistprocessor использует в том числе и метод xPDO::getCollection(). Просто помимо этого он имеет ряд методов для проверки прав, формирования запроса, подсчета общего числа элементов, обработки вывода и т.п. Конечно же он по определению тяжелее, чем просто getCollection(). Но если брать те же getlist-процессоры из shopModx-а, то там не используется метод getCollection, а используется чистое PDO/xPDO. Те процессоры в итоге легче гораздо. Но в случае с Gallery работать с объектами конечно же лучше как минимум по двум причинам:

  1. получаемые galItem-объекты имеют все необходимые методы для работы с этими картинками, а так же формирования путей, самбов и т.п.
  2. как правило элементов не много, так что нагрузкой можно пренебречь.

Резонно. Так и поступлю.

Крайне неудачное решение. Используй MODX_CORE_PATH .'components/site/processors/' и все. А экономия с путями тебе сразу несколько минусов дает:

  1. Компонент — это не только процессоры. Это еще контроллеры для админки, модели и т.п.
  2. Папка core не попадает в снимки сайта, так что Vapor-ом уже не сможешь перенести свой сайт. И еще куча минусов, включая «элементарно забыть про что-то там в core».