Если бы пути были неверные, то как бы MODX вообще запустился? И как бы он логи записал?

Спал я. Подожди немного, сейчас поправлю.

ребята я сделал это))) 9.9406340122223 s Memory: 2.25 Mb 12.515887975693 s Memory: 2 Mb Time: 9.714555978775 s Memory: 2 Mb некешируемая пустая страничка грузится за 0.0165 s как вам такие результаты?

права не поменял наверно… проверь что в config.inc.php. скорее всего там пути не прописались

Да, я смотрел в этот лог. Ставил /имя сайта/setup У меня даже нет идей, куда делись недостающие таблицы, ставил так 2 раза, когда сам не нашел решения, стукнулся сюда

  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; }