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

class widgetContentCategories extends cmsWidget {

    public 
$is_cacheable false;

    public function 
run() {

        
$ctype cmsModel::getCachedResult('current_ctype');

        
$ctype_name $this->getOption('ctype_name');

        
$active_cat false$path = [];

        if (!
$ctype_name) {

            if (!
$ctype) { return false; }

            
$ctype_name $ctype['name'];

        }

        if (
$ctype && $ctype['name'] == $ctype_name) {

            if (!
$ctype['is_cats']) { return false; }

            if (
strpos(cmsCore::getInstance()->uri'.html') === false) {

                
$current_ctype_category cmsModel::getCachedResult('current_ctype_category');
                if (!empty(
$current_ctype_category['id'])) {
                    
$active_cat $current_ctype_category;
                }

            } else {

                
$item cmsModel::getCachedResult('current_ctype_item');
                if(!
$item){ return false; }

                if (!empty(
$item['category'])) {
                    
$active_cat $item['category'];
                }

            }

        } else { 
// проверка, если показ категорий отключен

            
$model  cmsCore::getModel('content');
            
$_ctype $model->getContentTypeByName($ctype_name);
            if (!
$_ctype['is_cats']) {
                return 
false;
            }
        }

        
$model = isset($model) ? $model cmsCore::getModel('content');

        
$cats $model->filterIsNull('is_hidden')->getCategoriesTree($ctype_name$this->getOption('is_root'));
        if (!
$cats) { return false; }

        if (
$active_cat) {

            
$path array_filter($cats, function($cat) use($active_cat) {
                return (
$cat['ns_left'] <= $active_cat['ns_left'] &&
                        
$cat['ns_level'] <= $active_cat['ns_level'] &&
                        
$cat['ns_right'] >= $active_cat['ns_right'] &&
                        
$cat['ns_level'] > 0);
            });

        }

        
// считаем вручную кол-во вложенных
        // т.к. у нас могут быть скрытые категории
        // не используем ($cat['ns_right'] - $cat['ns_left']) - 1
        
$childs_count = [];

        
// результирующее дерево
        
$tree = [];

        
$show_full_tree $this->getOption('show_full_tree');
        
$cover_preset   $this->getOption('cover_preset');

        foreach(
$cats as $cat){

            if(
$cat['parent_id'] > 1){
                if(!isset(
$childs_count[$cat['parent_id']])){
                    
$childs_count[$cat['parent_id']] = 1;
                } else {
                    
$childs_count[$cat['parent_id']] += 1;
                }
            }

            
$cat['is_active'] = $cat['is_hidden'] = false;
            
$cat['childs_count'] = 0;
            
$cat['img_src'] = html_image_src($cat['cover'], $cover_presettrue);

            
$css_classes = [];

            if (!empty(
$active_cat['id']) && $cat['id'] == $active_cat['id']) {
                
$css_classes[] = 'active'// Совместимость cо старыми шаблонами
                
$cat['is_active'] = true;
            }

            if (!(isset(
$path[$cat['id']]) || isset($path[$cat['parent_id']]) || $cat['ns_level'] <= 1) && !$show_full_tree) {
                
$css_classes[] = 'folder_hidden'// Совместимость cо старыми шаблонами
                
$cat['is_hidden'] = true;
            }

            if(
$cat['img_src']){
                
$css_classes[] = 'set_cover_preset';
            }

            
$cat['css_classes'] = $css_classes;

            
$tree[$cat['id']] = $cat;

        }

        if(
$childs_count){
            foreach (
$childs_count as $id => $count) {
                if(isset(
$tree[$id])){

                    
$tree[$id]['childs_count'] = $count;

                    if(
$count){
                        
$tree[$id]['css_classes'][] = 'folder';
                    }

                }
            }
        }

        
$ctype_default cmsConfig::get('ctype_default');

        return array(
            
'ctype_name'   => (($ctype_default && in_array($ctype_name$ctype_default)) ? '' $ctype_name),
            
'cats'         => $tree,
            
'active_cat'   => $active_cat// в шаблоне не используется, совместимость
            
'cover_preset' => $cover_preset,
            
'path'         => (!empty($path) ? $path : array()) // в шаблоне не используется, совместимость
        
);

    }

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