1. Гость, Нет времени набирать посты, чтобы открыть HIDE ? Теперь есть решение, станьте Членом Клуба!
  2. Новые покупки

    09.01.2017: Быстрый заказ для OC 2.x 1.7.3

    08.01.2017: Софт для накрутки Андроид инсталлов (установок)

    05.01.2017: Распродажа курсов Маматова "Мужской комплект"

    05.01.2017: Как обрести мощную эрекцию и здоровую простату, используя секреты китайских Императоров

    05.01.2017: Нашумевший курс про Же*нщину-плю*с

    05.01.2017: Тренер знаменитостей, диетолог, фитнес-модель Nike, Adidas...Книга о наборе мышечной массы

    05.01.2017: от 100$ в месяц на дорвеях Вконтакте

    03.01.2017: [Бизнес Молодость] Бизнес под ключ

    02.01.2017: [Udemy.com] Стать Суперучеником 2: Научитесь скоростному чтению и улучшению памяти

    02.01.2017: [Udemy.com] Рисование и Скетчинг для Начинающих

    02.01.2017: [Udemy.com] Twitter маркетинг в 2016 году: Получайте Новых Подписчиков Ежедневно

    02.01.2017: [Udemy.com] Instagram для художников

    02.01.2017: Практический видеокурс "Простатит - секретные материалы+бонус - запись вебинара

    02.01.2017: Техники эффективного обучения - Распродажа 95%

    02.01.2017: Медитация и осознанность. 10 минут в день, которые приведут ваши мысли в порядок

    02.01.2017: [Бизнес Молодость] Выбор ниши

    02.01.2017: Громов Андрей, курс "Адаптивный Мини Интернет Магазин с корзиной заказов и простой CRM"

    02.01.2017: Сборник из 8 онлайн курсов всего за 5 900 вместо 22 990

    02.01.2017: Джон Ассараф - Выиграй денежную игру[3]

    02.01.2017: Джон Ассараф - Выиграй денежную игру[2]

  3. Нужен организатор

    05.01.2017: Распродажа курсов Маматова "Мужской комплект"

    05.01.2017: Как обрести мощную эрекцию и здоровую простату, используя секреты китайских Императоров

    05.01.2017: Нашумевший курс про Же*нщину-плю*с

    05.01.2017: Тренер знаменитостей, диетолог, фитнес-модель Nike, Adidas...Книга о наборе мышечной массы

    05.01.2017: от 100$ в месяц на дорвеях Вконтакте

    03.01.2017: [Бизнес Молодость] Бизнес под ключ

    02.01.2017: [Udemy.com] Стать Суперучеником 2: Научитесь скоростному чтению и улучшению памяти

    02.01.2017: [Udemy.com] Рисование и Скетчинг для Начинающих

    02.01.2017: [Udemy.com] Twitter маркетинг в 2016 году: Получайте Новых Подписчиков Ежедневно

    02.01.2017: [Udemy.com] Instagram для художников

    02.01.2017: Практический видеокурс "Простатит - секретные материалы+бонус - запись вебинара

    02.01.2017: Техники эффективного обучения - Распродажа 95%

    02.01.2017: Медитация и осознанность. 10 минут в день, которые приведут ваши мысли в порядок

    02.01.2017: [Бизнес Молодость] Выбор ниши

    02.01.2017: Громов Андрей, курс "Адаптивный Мини Интернет Магазин с корзиной заказов и простой CRM"

    02.01.2017: Сборник из 8 онлайн курсов всего за 5 900 вместо 22 990

    02.01.2017: Джон Ассараф - Выиграй денежную игру[3]

    02.01.2017: Джон Ассараф - Выиграй денежную игру[2]

    02.01.2017: Джон Ассараф - Выиграй денежную игру[1]

    01.01.2017: Доступ к базе коммерческих фото Shutterstock

Релиз Аспро: Корпоративный сайт, адаптивный aspro.allcorp

Тема в разделе "Модули 1С Битрикс", создана пользователем allnulled, 21 ноя 2015.

  1. allnulled

    allnulled Администраторы Команда форума Администраторы

    Регистрация:
    2 фев 2015
    Сообщения:
    16.897
    Симпатии:
    1.146
    1 (1).jpg

    Описание решения

    Профессиональное решения для разработки корпоративного сайта по любой тематике, широкий функционал решения:

    Каталог товаров
    • три вида отображения товаров: списком, плиткой или таблицей.
    • возможность задать вид отображения по умолчанию для любого раздела.
    • формы обратной связи для заказа продукции или отправки вопроса.
    • управление статусами товаров: в наличии, под заказ, ожидается, с возможностью задать свои собственные статусы.
    • прикрепление файлов и фото галерей к товару.
    Каталог услуг:
    • двухуровневый каталог услуг.
    • формы заказа услуг услуги или вопроса по услугам.
    • возможность связи услуг с отзывами по услуги, сотрудниками кто консультирует по услугам, проектам и товарам. Все связанный элементы будет выведены снизу страницы после описания услуги.
    • прикрепление файлов и фото галереи к услуге.
    Широкий набор контентных разделов, позволят удовлетворить потребности даже самых крупных компаний:
    • о компании
    • история
    • лицензии
    • партнёры
    • сотрудники
    • вакансии
    • реквизиты
    • новости
    • статьи
    • акции
    • вопрос-ответ
    • контакты
    Для разработчиков - Bootstrap 3.0 вёрстка и встроенные примеры подключения и использования типовых стилей и стандартных UI элементов на странице http://allcorp.aspro-demo.ru/info/more/.

    Удобные и гибкие настройки решения:
    • 10 цветовых схем.
    • два варианта расположения и оформления главного меню.
    • 4 варианта ширины центрального баннера.
    • возможность показывать/скрыть каталог услуг на главной странице.
    • возможность показать/скрыть каталог товаров на главной странице.
    • расположение меню на внутренних страницах слева, либо справа.
    • + дополнительные настройки в параметрах компонентов для разработчиков для более гибкой настройки решения.

    https://marketplace.1c-bitrix.ru/solutions/aspro.allcorp/



     
  2. Загрузка...

    Похожие темы Форум Дата
    Релиз Аспро: Стройка - корпоративный сайт строительной компании Модули 1С Битрикс 11 ноя 2016
    Релиз Корпоративный сайт медицинского центра от Аспро | aspro.medcenter Модули 1С Битрикс 28 фев 2016
    Складчина Распродажа курсов Маматова "Мужской комплект" Курсы по здоровью 5 янв 2017
    Складчина Техники эффективного обучения - Распродажа 95% Курсы по психологии 2 янв 2017
    Складчина Распродажа Маматова -- Шкатулка Курсы по здоровью 17 дек 2016

  3. allnulled

    allnulled Администраторы Команда форума Администраторы

    Регистрация:
    2 фев 2015
    Сообщения:
    16.897
    Симпатии:
    1.146
    aspro.allcorp 1.0.14 от 18.09.15

    Исправления:
    • Исправлена ошибка в шаблоне детальной страницы каталога и проекта из-за которой не выводились значения множественного свойства
    • Исправлена ошибка в шаблоне списка товаров каталога из-за которой выводилось неверное значение свойства Статус
    • Исправлено непропорциональное отображение картинки для анонса в списке элементов при виде отображения таблицей

    Скачать версию UTF8, почищенную.
     
    • Нравится Нравится x 1
  4. allnulled

    allnulled Администраторы Команда форума Администраторы

    Регистрация:
    2 фев 2015
    Сообщения:
    16.897
    Симпатии:
    1.146
    код CCache.php исправленный:
    Код:
    <?
    // Cache functions
    // Tagged cache. After add/delete/update cached objects need to clear tag cache. This events see farther
    // (C) Konstantin Chechetkin - ASPRO
    if(!class_exists("CCache")){
        class CCache {
            static public $arIBlocks = NULL;
            static public $arIBlocksInfo = NULL;
          
            if(CModule::IncludeModule("iblock")):
            function CIBlock_GetList($arOrder = array("SORT" => "ASC", "CACHE" => array("MULTI" => "Y", "GROUP" => array(), "RESULT" => array(), "TAG" => "", "PATH" => "", "TIME" => 36000000)), $arFilter = array(), $bIncCnt = false){
                list($cacheTag, $cachePath, $cacheTime) = self::_InitCacheParams("iblock", __FUNCTION__, $arOrder["CACHE"]);
                $obCache = new CPHPCache();
                $cacheID = __FUNCTION__."_".$cacheTag.md5(serialize(array_merge((array)$arOrder, (array)$arFilter, (array)$bIncCnt)));
                if($obCache->InitCache($cacheTime, $cacheID, $cachePath)){
                    $res = $obCache->GetVars();
                    $arRes = $res["arRes"];
                }
                else{
                    $arRes = array();
                    $arResultGroupBy = array("GROUP" => $arOrder["CACHE"]["GROUP"], "MULTI" => $arOrder["CACHE"]["MULTI"], "RESULT" => $arOrder["CACHE"]["RESULT"]);
                    unset($arOrder["CACHE"]);
                    $dbRes = CIBlock::GetList($arOrder, $arFilter, $bIncCnt);
                    while($item = $dbRes->Fetch()){
                        if($item['ID']){
                            $item['LID'] = array();
                            $dbIBlockSites = CIBlock::GetSite($item['ID']);
                            while($arIBlockSite = $dbIBlockSites->Fetch()){
                                $item['LID'][] = $arIBlockSite['SITE_ID'];
                            }
                        }
                        $arRes[] = $item;
                    }
                  
                    if($arResultGroupBy["MULTI"] || $arResultGroupBy["GROUP"] || $arResultGroupBy["RESULT"]){
                        $arRes = self::GroupArrayBy($arRes, $arResultGroupBy);
                    }
                  
                    self::_SaveDataCache($obCache, $arRes, $cacheTag, $cachePath, $cacheTime, $cacheID);
                }
                return $arRes;
            }
            endif;
    
            function CIBlockElement_GetList($arOrder = array("SORT" => "ASC", "CACHE" => array("MULTI" => "Y", "GROUP" => array(), "RESULT" => array(), "TAG" => "", "PATH" => "", "TIME" => 36000000)), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()){
                list($cacheTag, $cachePath, $cacheTime) = self::_InitCacheParams("iblock", __FUNCTION__, $arOrder["CACHE"]);
                if(is_array($arSelectFields) && $arSelectFields){
                    $arSelectFields[] = "ID";
                }
                $obCache = new CPHPCache();
                $cacheID = __FUNCTION__."_".$cacheTag.md5(serialize(array_merge((array)$arOrder, (array)$arFilter, (array)$arGroupBy, (array)$arNavStartParams, (array)$arSelectFields)));
                if($obCache->InitCache($cacheTime, $cacheID, $cachePath)){
                    $res = $obCache->GetVars();
                    $arRes = $res["arRes"];
                }
                else{
                    $arRes = array();
                    $arResultGroupBy = array("GROUP" => $arOrder["CACHE"]["GROUP"], "MULTI" => $arOrder["CACHE"]["MULTI"], "RESULT" => $arOrder["CACHE"]["RESULT"]);
                    unset($arOrder["CACHE"]);
                    $dbRes = CIBlockElement::GetList($arOrder, $arFilter, $arGroupBy, $arNavStartParams, $arSelectFields);
                    if($arGroupBy === array()){
                        // only count
                        $arRes = $dbRes;
                    }
                    else{
                        $arResultIDsIndexes = array();
                        $bGetSectionIDsArray = (in_array("IBLOCK_SECTION_ID", $arSelectFields) || !$arSelectFields);
                        if($bGetDetailPageUrlsArray = (in_array("DETAIL_PAGE_URL", $arSelectFields) || !$arSelectFields)){
                            if($arSelectFields){
                                if(!in_array("IBLOCK_ID", $arSelectFields)){
                                    $arSelectFields[] = "IBLOCK_ID";
                                }
                                if(!in_array("IBLOCK_SECTION_ID", $arSelectFields)){
                                    $arSelectFields[] = "IBLOCK_SECTION_ID";
                                }
                                if(!in_array("ID", $arSelectFields)){
                                    $arSelectFields[] = "ID";
                                }
                            }
                            $bGetSectionIDsArray = true;
                        }
                        // fields and properties
                        $arRes = self::_GetFieldsAndProps($dbRes, $arSelectFields, $bGetSectionIDsArray);
                        if($bGetDetailPageUrlsArray){
                            $arBySectionID = $arNewDetailPageUrls =  array();
                            $FilterIblockID = $arFilter["IBLOCK_ID"];
                            $FilterSectionID = $arFilter["SECTION_ID"];
                            foreach($arRes as $arItem){
                                if($IBLOCK_ID = ($arItem["IBLOCK_ID"] ? $arItem["IBLOCK_ID"] : $FilterIblockID)){
                                    if($arSectionIDs = ($arItem["IBLOCK_SECTION_ID"] ? $arItem["IBLOCK_SECTION_ID"] : $FilterSectionID)){
                                        if(!is_array($arSectionIDs)){
                                            $arSectionIDs = array($arSectionIDs);
                                        }
                                        foreach($arSectionIDs as $SID){
                                            $arByIBlock[$IBLOCK_ID][$SID][] = $arItem["ID"];
                                        }
                                    }
                                }
                                else{
                                    $arNewDetailPageUrls[$arItem["ID"]] = array($arItem["DETAIL_PAGE_URL"]);
                                }
                            }
                          
                            foreach($arByIBlock as $IBLOCK_ID => $arIB){
                                $arSectionIDs = $arSections = array();
                                foreach($arIB as $SECTION_ID => $arIDs){
                                    $arSectionIDs[] = $SECTION_ID;
                                }
                                if($arSectionIDs){
                                    $arSections = CCache::CIBlockSection_GetList(array("CACHE" => array("TAG" => CCache::GetIBlockCacheTag($IBLOCK_ID), "MULTI" => "N", "GROUP" => array("ID"))), array("ID" => $arSectionIDs), false, array("ID", "CODE", "EXTERNAL_ID", "IBLOCK_ID"));
                                }
                                foreach($arIB as $SECTION_ID => $arIDs){
                                    if($arIDs){
                                        $rsElements = CIBlockElement::GetList(array(), array("ID" => $arIDs), false, false, array("ID", "DETAIL_PAGE_URL"));
                                        $rsElements->SetUrlTemplates(CCache::$arIBlocksInfo[$IBLOCK_ID]["DETAIL_PAGE_URL"]);
                                        $rsElements->SetSectionContext($arSections[$SECTION_ID]);
                                        while($arElement = $rsElements->GetNext()){
                                            $arNewDetailPageUrls[$arElement["ID"]][$SECTION_ID] = $arElement["DETAIL_PAGE_URL"];
                                        }
                                    }
                                }
                            }
    
                            foreach($arRes as $i => $arItem){
                                if(count($arNewDetailPageUrls[$arItem["ID"]]) > 1){
                                    $arRes[$i]["DETAIL_PAGE_URL"] = $arNewDetailPageUrls[$arItem["ID"]];
                                }
                                unset($arRes[$i]["~DETAIL_PAGE_URL"]);
                            }
                          
                        }
    
                        if($arResultGroupBy["MULTI"] || $arResultGroupBy["GROUP"] || $arResultGroupBy["RESULT"]){
                            $arRes = self::GroupArrayBy($arRes, $arResultGroupBy);
                        }
                    }
                  
                    self::_SaveDataCache($obCache, $arRes, $cacheTag, $cachePath, $cacheTime, $cacheID);
                }
                return $arRes;
            }
          
            function CIBlockSection_GetList($arOrder = array("SORT" => "ASC", "CACHE" => array("MULTI" => "Y", "GROUP" => array(), "RESULT" => array(), "TAG" => "", "PATH" => "", "TIME" => 36000000)), $arFilter = array(), $bIncCnt = false, $arSelectFields = array(), $arNavStartParams = false){
                list($cacheTag, $cachePath, $cacheTime) = self::_InitCacheParams("iblock", __FUNCTION__, $arOrder["CACHE"]);
                if(is_array($arSelectFields) && $arSelectFields){
                    $arSelectFields[] = "ID";
                }
                $obCache = new CPHPCache();
                $cacheID = __FUNCTION__."_".$cacheTag.md5(serialize(array_merge((array)$arOrder, (array)$arFilter, (array)$bIncCnt, (array)$arNavStartParams, (array)$arSelectFields)));
                if($obCache->InitCache($cacheTime, $cacheID, $cachePath)){
                    $res = $obCache->GetVars();
                    $arRes = $res["arRes"];
                }
                else{
                    $arRes = array();
                    $arResultGroupBy = array("GROUP" => $arOrder["CACHE"]["GROUP"], "MULTI" => $arOrder["CACHE"]["MULTI"], "RESULT" => $arOrder["CACHE"]["RESULT"]);
                    unset($arOrder["CACHE"]);
                    $dbRes = CIBlockSection::GetList($arOrder, $arFilter, $bIncCnt, $arSelectFields, $arNavStartParams);
                    // fields and properties
                    $arRes = self::_GetFieldsAndProps($dbRes, $arSelectFields);
                  
                    if($arResultGroupBy["MULTI"] || $arResultGroupBy["GROUP"] || $arResultGroupBy["RESULT"]){
                        $arRes = self::GroupArrayBy($arRes, $arResultGroupBy);
                    }
                  
                    self::_SaveDataCache($obCache, $arRes, $cacheTag, $cachePath, $cacheTime, $cacheID);
                }
                return $arRes;
            }
          
            function CSaleBasket_GetList($arOrder = array("SORT" => "ASC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array(), $cacheTag = "", $cacheTime = 36000000, $cachePath = ""){
                CModule::IncludeModule('sale');
                if(!strlen($cacheTag)){
                    $cacheTag = "_notag";
                }
                if(!strlen($cachePath)){
                    $cachePath = "/ccache/sale/CSaleBasket_GetList/".$cacheTag."/";
                }
                $obCache = new CPHPCache();
                $cacheID = 'CSaleBasket_GetList_'.$cacheTag.md5(serialize(array_merge((array)$arOrder, (array)$arFilter, (array)$arGroupBy, (array)$arNavStartParams, (array)$arSelectFields)));
                if($obCache->InitCache($cacheTime, $cacheID, $cachePath)){
                    $res = $obCache->GetVars();
                    $arRes = $res["arRes"];
                }
                else{
                    $arRes = array();
                    $arResultGroupBy = array("GROUP" => $arGroupBy["GROUP"], "MULTI" => $arGroupBy["MULTI"], "RESULT" => $arSelectFields["RESULT"]);
                    $arGroupBy = (isset($arGroupBy["BX"]) ? $arGroupBy["BX"] : $arGroupBy);
                    $dbRes = CSaleBasket::GetList($arOrder, $arFilter, $arGroupBy, $arNavStartParams, $arSelectFields);
                    if(in_array("DETAIL_PAGE_URL", $arSelectFields) === false){
                        while($item = $dbRes->Fetch()){
                            $arRes[] = $item;
                        }
                    }
                    else{
                        while($item = $dbRes->GetNext()){
                            $arRes[] = $item;
                        }
                    }
                  
                    if($arResultGroupBy["MULTI"] || $arResultGroupBy["GROUP"] || $arResultGroupBy["RESULT"]){
                        $arRes = self::GroupArrayBy($arRes, $arResultGroupBy);
                    }
                          
                    self::_SaveDataCache($obCache, $arRes, $cacheTag, $cachePath, $cacheTime, $cacheID);
                }
                return $arRes;
            }
          
            function CForumMessage_GetListEx($arOrder = array("SORT" => "ASC"), $arFilter = array(), $arGroupBy = false, $iNum = 0, $arSelectFields = array(), $cacheTag = "", $cacheTime = 36000000, $cachePath = ""){
                CModule::IncludeModule('forum');
                if(!strlen($cacheTag)){
                    $cacheTag = "_notag";
                }
                if(!strlen($cachePath)){
                    $cachePath = "/ccache/forum/CForumMessage_GetListEx/".$cacheTag."/";
                }
                $obCache = new CPHPCache();
                $cacheID = 'CForumMessage_GetListEx_'.$cacheTag.md5(serialize(array_merge((array)$arOrder, (array)$arFilter, (array)$arGroupBy, (array)$iNum, (array)$arSelectFields)));
                if($obCache->InitCache($cacheTime, $cacheID, $cachePath)){
                    $res = $obCache->GetVars();
                    $arRes = $res["arRes"];
                }
                else{
                    $arRes = array();
                    $arResultGroupBy = array("GROUP" => $arGroupBy["GROUP"], "MULTI" => $arGroupBy["MULTI"], "RESULT" => $arSelectFields["RESULT"]);
                    $bCount = (isset($arGroupBy["BX"]) ? $arGroupBy["BX"] : $arGroupBy);
                    $dbRes = CForumMessage::GetListEx($arOrder, $arFilter, $bCount, $iNum, $arSelectFields);
                    if($bCount){
                        $arRes = $dbRes;
                    }
                    else{
                        while($item = $dbRes->Fetch()){
                            $arRes[] = $item;
                        }
                      
                        if($arResultGroupBy["MULTI"] || $arResultGroupBy["GROUP"] || $arResultGroupBy["RESULT"]){
                            $arRes = self::GroupArrayBy($arRes, $arResultGroupBy);
                        }
                    }
                  
                    self::_SaveDataCache($obCache, $arRes, $cacheTag, $cachePath, $cacheTime, $cacheID);
                }
                return $arRes;
            }
          
            private function _MakeResultTreeArray($arParams, &$arItem, &$arItemResval, &$to){
                if($arParams["GROUP"]){
                    $newto = $to;
                    $FieldID = array_shift($arParams["GROUP"]);
                    $arFieldValue = (is_array($arItem[$FieldID]) ? $arItem[$FieldID] : array($arItem[$FieldID]));
                  
                    foreach($arFieldValue as $FieldValue){
                        if(!isset($to[$FieldValue])){
                            $to[$FieldValue] = false;
                        }
                        $newto = &$to[$FieldValue];
                        self::_MakeResultTreeArray($arParams, $arItem, $arItemResval, $newto);
                    }
                }
                else{
                    if($arParams["MULTI"] == "Y"){
                        $to[] = $arItemResval;
                    }
                    elseif($arParams["MULTI"] == "YM"){
                        if($to){
                            $to = array_merge((array)$to, (array)$arItemResval);
                        }
                        else{
                            $to = $arItemResval;
                        }
                    }
                    else{
                        $to = $arItemResval;
                    }
                }
            }
          
            function GroupArrayBy($arItems, $arParams){
                $arRes = array();
                $resultIDsCount = count($arParams["RESULT"]);
                $arParams["RESULT"] = array_diff((array)$arParams["RESULT"], array(null));
                $arParams["GROUP"] = array_diff((array)$arParams["GROUP"], array(null));
                foreach($arItems as $arItem){
                    $val = false;
                    if($resultIDsCount){
                        if($resultIDsCount > 1){
                            foreach($arParams["RESULT"] as $ID){
                                $val[$ID] = $arItem[$ID];
                            }
                        }
                        else{
                            $val = $arItem[current($arParams["RESULT"])];
                        }
                    }
                    else{
                        $val = $arItem;
                    }
                    self::_MakeResultTreeArray($arParams, $arItem, $val, $arRes);
                }
                return $arRes;
            }
                  
            private function _InitCacheParams($moduleName, $functionName, $arCache){
                CModule::IncludeModule($moduleName);
                $cacheTag = $arCache["TAG"];
                $cachePath = $arCache["PATH"];
                $cacheTime = ($arCache["TIME"] > 0 ? $arCache["TIME"] : 36000000);
                if(!strlen($cacheTag)){
                    $cacheTag = "_notag";
                }
                if(!strlen($cachePath)){
                    $cachePath = "/CCache/".$moduleName."/".$functionName."/".$cacheTag."/";
                }
                return array($cacheTag, $cachePath, $cacheTime);
            }
          
            private function _GetElementSectionsArray($ID){
                $arSections = array();
                $resGroups = CIBlockElement::GetElementGroups($ID, true, array("ID"));
                while($arGroup = $resGroups->Fetch()){
                    $arSections[] = $arGroup["ID"];
                }
                return (!$arSections ? false : (count($arSections) == 1 ? current($arSections) : $arSections));
            }
          
            private function _GetFieldsAndProps($dbRes, $arSelectFields, $bIsIblockElement = false){
                $arRes = $arResultIDsIndexes = array();
                if($arSelectFields && (in_array("DETAIL_PAGE_URL", $arSelectFields) === false && in_array("SECTION_PAGE_URL", $arSelectFields) === false)){
                    $func = "Fetch";
                }
                else{
                    $func = "GetNext";
                }
                while($item = $dbRes->$func()){
                    if(($existKey = ($arResultIDsIndexes[$item["ID"]] ? $arResultIDsIndexes[$item["ID"]] : ($arResultIDsIndexes[$item["ID"]] !== null ? false : null))) !== null){
                        $existItem = &$arRes[$existKey];
                        if($bIsIblockElement){
                            unset($item["IBLOCK_SECTION_ID"]);
                            unset($item["~IBLOCK_SECTION_ID"]);
                        }
                        foreach($item as $key => $val){
                            if($key == "ID") {
                                continue;
                            }
                            if(isset($existItem[$key])){
                                if(is_array($existItem[$key])){
                                    if(!in_array($val, $existItem[$key])){
                                        $existItem[$key][] = $val;
                                    }
                                }
                                else{
                                    if($existItem[$key] != $val){
                                        $existItem[$key] = array($existItem[$key], $val);
                                    }
                                }
                            }
                            else{
                                $existItem[$key] = $val;
                            }
                        }
                    }
                    else{
                        if($bIsIblockElement){
                            $item["IBLOCK_SECTION_ID"] = self::_GetElementSectionsArray($item["ID"]);
                            unset($item["~IBLOCK_SECTION_ID"]);
                        }
                        $arResultIDsIndexes[$item["ID"]] = count($arRes);
                        $arRes[] = $item;
                    }
                }
              
                return $arRes;
            }
          
            private function _SaveDataCache($obCache, $arRes, $cacheTag, $cachePath, $cacheTime, $cacheID){
                if($cacheTime > 0){
                    $obCache->StartDataCache($cacheTime, $cacheID, $cachePath);
                  
                    if(strlen($cacheTag)){
                        global $CACHE_MANAGER;
                        $CACHE_MANAGER->StartTagCache($cachePath);
                        $CACHE_MANAGER->RegisterTag($cacheTag);
                        $CACHE_MANAGER->EndTagCache();
                    }
                  
                    $obCache->EndDataCache(array("arRes" => $arRes));
                }
            }
          
            function GetIBlockCacheTag($IBLOCK_ID){
                if(!$IBLOCK_ID){
                    return false;
                }
                else{
                    return CCache::$arIBlocksInfo[$IBLOCK_ID]["CODE"].$IBLOCK_ID;
                }
            }
          
            function ClearTagIBlock(&$arFields){
                global $CACHE_MANAGER;
                $CACHE_MANAGER->ClearByTag("iblocks");
            }
          
            function ClearTagIBlockBeforeDelete($ID){
                global $CACHE_MANAGER;
                $CACHE_MANAGER->ClearByTag("iblocks");
            }
          
            function ClearTagIBlockElement(&$arFields){
                global $CACHE_MANAGER;
                if($arFields["IBLOCK_ID"]){
                    $CACHE_MANAGER->ClearByTag(CCache::GetIBlockCacheTag($arFields["IBLOCK_ID"]));
                }
            }
          
            function ClearTagIBlockSection(&$arFields){
                global $CACHE_MANAGER;
                if($arFields["IBLOCK_ID"]){
                    $CACHE_MANAGER->ClearByTag(CCache::GetIBlockCacheTag($arFields["IBLOCK_ID"]));
                }
            }
          
            function ClearTagIBlockSectionBeforeDelete($ID){
                global $CACHE_MANAGER;
                if($ID > 0){
                    if($IBLOCK_ID = CCache::CIBlockSection_GetList(array("CACHE" => array("MULTI" => "N")), array("ID" => $ID), false, array("IBLOCK_ID"), true)){
                        $CACHE_MANAGER->ClearByTag(CCache::GetIBlockCacheTag($IBLOCK_ID));
                    }
                }
            }
        }
    
        // Clear cache after add/delete/update cached objects
        //define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/initphp.log");
        AddEventHandler("iblock", "OnAfterIBlockAdd", Array("CCache", "ClearTagIBlock"));
        AddEventHandler("iblock", "OnAfterIBlockUpdate", Array("CCache", "ClearTagIBlock"));
        AddEventHandler("iblock", "OnBeforeIBlockDelete", Array("CCache", "ClearTagIBlockBeforeDelete"));
    
        AddEventHandler("iblock", "OnAfterIBlockElementAdd", array("CCache", "ClearTagIBlockElement"));
        AddEventHandler("iblock", "OnAfterIBlockElementUpdate", array("CCache", "ClearTagIBlockElement"));
        AddEventHandler("iblock", "OnAfterIBlockElementDelete", array("CCache", "ClearTagIBlockElement"));
    
        AddEventHandler("iblock", "OnAfterIBlockSectionAdd", Array("CCache", "ClearTagIBlockSection"));
        AddEventHandler("iblock", "OnAfterIBlockSectionUpdate", Array("CCache", "ClearTagIBlockSection"));
        AddEventHandler("iblock", "OnBeforeIBlockSectionDelete", Array("CCache", "ClearTagIBlockSectionBeforeDelete"));
    
        // initialize CCache::$arIBlocks array
        if(CCache::$arIBlocks === NULL){
            $arIBlocksTmp = CCache::CIBlock_GetList(array("CACHE" => array("TAG" => "iblocks")), array("ACTIVE" => "Y"));
            CCache::$arIBlocks = CCache::GroupArrayBy($arIBlocksTmp, array("GROUP" => array("LID", "IBLOCK_TYPE_ID", "CODE"), "MULTI" => "Y", "RESULT" => array("ID")));
            CCache::$arIBlocksInfo = CCache::GroupArrayBy($arIBlocksTmp, array("GROUP" => array("ID")));
        }
    }
    ?>
     

Пользователи, которые прочитали эту тему (Всего: 0)