Да, подобные решения очень нужны. Планирую выпустить серьезно обновленную сборку, в котором будет больше готовых модулей на процессорах+Smarty, включая менюшку на процессорах и т.п. Но вот оформлению в виде Smarty-плагинов предпочитаю именно процессоры. Есть ряд причин:
Ну, примерно так: <?php /**
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 работать с объектами конечно же лучше как минимум по двум причинам:
Крайне неудачное решение. Используй MODX_CORE_PATH .'components/site/processors/' и все. А экономия с путями тебе сразу несколько минусов дает: