Вход Регистрация
Файл: system/controllers/content/actions/category_view.php
Строк: 66
<?php

class actionContentCategoryView extends cmsAction {

    public function 
run(){

        
$user cmsUser::getInstance();

        
// Получаем название типа контента и сам тип
        
$ctype_name $this->request->get('ctype_name');
        
$ctype $this->model->getContentTypeByName($ctype_name);

        if (!
$ctype) { cmsCore::error404(); }
        if (!
$ctype['options']['list_on']) { cmsCore::error404(); }

        
$category = array('id' => false);
        
$subcats = array();

        
// Получаем SLUG категории
        
$slug $this->request->get('slug');

        if (!
$ctype['is_cats'] && $slug != 'index') { cmsCore::error404(); }

        if (
$ctype['is_cats'] && $slug != 'index') {
            
$category $this->model->getCategoryBySLUG($ctype_name$slug);
            if (!
$category){ cmsCore::error404(); }
        }

        
// Получаем список подкатегорий для текущей
        
$current_cat_id $category['id'] ? $category['id'] : 1;
        
$subcats $this->model->getSubCategories($ctype_name$current_cat_id);

        
// Получаем список наборов
        
$datasets $this->model->getContentDatasets($ctype['id'], true);

        
// Текущий набор
        
$dataset $this->request->get('dataset'false);

        
// Это вывод на главной?
        
$is_frontpage $this->request->get('is_frontpage'false);

        
// Номер страницы
        
$page $this->request->get('page'1);

        
// Если это не главная, но данный контент выводится на главной и сейчас
        // открыта индексная страница контента - редиректим на главную
        
if (!$is_frontpage && cmsConfig::get('frontpage') == "content:{$ctype_name}&& $slug == 'index' && !$dataset && $page==1){
            
$query cmsCore::getInstance()->uri_query;
            if (
$query){
                
$this->redirect(href_to_home() . "/?" http_build_query($query));
            } else {
                
$this->redirectToHome();
            }
        }

        
// Если есть наборы, применяем фильтры текущего
        // иначе будем сортировать по дате создания
        
if ($datasets){
            if(
$dataset && empty($datasets[$dataset])){ cmsCore::error404(); }
            
$keys array_keys($datasets);
            
$current_dataset $dataset $datasets[$dataset] : $datasets[$keys[0]];
            
$this->model->applyDatasetFilters($current_dataset);
        } else {
            
$this->model->orderBy('date_pub''desc');
        }

        
// Фильтр по категории
        
if ($ctype['is_cats'] && $slug != 'index') {
            
$this->model->filterCategory($ctype_name$category$ctype['is_cats_recursive']);
        }

        
// Скрываем записи из скрытых родителей (приватных групп и т.п.)
        
$this->model->filterHiddenParents();

        
// Формируем базовые URL для страниц
        
$page_url = array(
            
'base'  => href_to($ctype['name'] . ($dataset '-'.$dataset ''), isset($category['slug']) ? $category['slug'] : ''),
            
'first' => href_to($ctype['name'] . ($dataset '-'.$dataset ''), isset($category['slug']) ? $category['slug'] : '')
        );

        list(
$ctype$category) = cmsEventsManager::hook("content_before_category", array($ctype$category));
        list(
$ctype$category) = cmsEventsManager::hook("content_{$ctype['name']}_before_category", array($ctype$category));
        
        
        
$items_list_html '';
        
$is_hide_items = !empty($ctype['options']['is_empty_root']) && $slug == 'index';

        
// Получаем HTML списка записей
        
if (!$is_hide_items){
            
$items_list_html $this->renderItemsList($ctype$page_urlfalse$category['id'], array(), $dataset);            
        }

        return 
cmsTemplate::getInstance()->render('category_view', array(
            
'is_frontpage' => $is_frontpage,
            
'is_hide_items' => $is_hide_items,
            
'parent' => isset($parent) ? $parent false,
            
'slug' => $slug,
            
'ctype' => $ctype,
            
'datasets' => $datasets,
            
'dataset' => $dataset,
            
'category' => $category,
            
'subcats' => $subcats,
            
'items_list_html' => $items_list_html,
            
'user' => $user
        
), $this->request);

    }

}
Онлайн: 0
Реклама