Задать вопрос
  • Как убрать ошибку битрикса?

    @redesupar Автор вопроса
    на 1 сайте тоже так же стоит
    $arSearch["TITLE_CUSTOM"]=getElProp("TITLE_CUSTOM", $arSearch["ITEM_ID"]);
    $arSearch["CML2_ARTICLE"]=getElProp("CML2_ARTICLE", $arSearch["ITEM_ID"]);
    $arSearch["TSVET"]=getElPropList("TSVET", $arSearch["ITEM_ID"]);
    $arSearch["KOMPLEKTATSIYA_PERVICHNAYA_UPAKOVKA"]=getElProp("TITLE_CUSTOM", $arSearch["ITEM_ID"]);
    $arSearch["TRANSPORTNAYA_UPAKOVKA"]=getElPropList("TRANSPORTNAYA_UPAKOVKA", $arSearch["ITEM_ID"]);

    я ничего не менял, весь init.php должен работать
  • Как убрать ошибку битрикса?

    @redesupar Автор вопроса
    konsealex, у инфоблока доступ есть, товары выводятся и в корзину попадают
  • Как изменить количество товаров после обмена 1с битрикс?

    @redesupar Автор вопроса
    по 1 пункту просто гентекст на фетч меняю? $ar_fields = $addProps->Fetch()

    по 2 пункту вроде как стоит проверка) или это не так?
    if ($ar_fields['QUANTITY'] > 0 && $ar_fields['PROPERTY_MIN_UPAKOVKA_VALUE'] > 0)
  • Как изменить количество товаров после обмена 1с битрикс?

    @redesupar Автор вопроса
    есть ли пример похожий на мой? я делал и через это событие, как я понял он весь каталог 12 раз перебрал у меня
  • Как вставить текст после N-го абзаца?

    @redesupar
    <?php get_template_part( 'content' ); ?>

    а в content.php закидываешь код что выше
  • Какое событие лучше использовать для изменения количества после импорта?

    @redesupar Автор вопроса
    Роман Грицук, Такого события почему то нет, точнее вообще не реагирует
  • Как заменить выбор максимального количества товара в битриксе?

    @redesupar Автор вопроса
    Роман Грицук, спасибо решил через второе сделать, но почему то не получается, обновлю сейчас в теме код
  • Как вытащить пользовательские свойства в меню битрикс?

    @redesupar Автор вопроса
    scottparker, да там и находиться, поэтому создал пользовательское свойоство чтобы самому писать ссылки
  • Почему не работают ссылки в bitrix.menu?

    @redesupar Автор вопроса
    Ярослав Александров, а как его написать? вообще совсоем не понял, может быть тогда уже просто пользовательское свойство добавить и его вывезти, но я так пытаюсь так и не получилось получить UF_SSILKA
  • Почему не работают ссылки в bitrix.menu?

    @redesupar Автор вопроса
    Ярослав Александров, там пробелов нету
    убериал слэши
    "SECTION_URL" => "/#SECTION_CODE_PATH#/",
    так
    "SECTION_URL" => "#SECTION_CODE_PATH#",
    последние и передние слеши убрались, но проблема осталась
    скажем есть пункт О центре у него линк about
    у других есть свои пути например about/loyalty то он выдает about/about%2Floyalty
    а мне этого ненадо надо чтобы он брал линк и неважно под каким он элементом и не брал больше about
  • Почему не работают ссылки в bitrix.menu?

    @redesupar Автор вопроса
    PetrPo, так он не работает вообще
  • Как сформировать нужный массив на Битриксе?

    @redesupar Автор вопроса
    Ярослав Александров,
    окей, но чето неполучается

    $promomag = $onlineShop["ID"];
    $entity = IblockTable::compileEntity('dondrakon');
    $object = $entity->getIblock()->getEntityDataClass();
    $query = $object::query()
        ->addFilter('ACTIVE', 'Y')
        ->addFilter('MAGAZINE.VALUE', $promomag)
        ->addSelect('TEXT_PROMOCODE.VALUE');
    $elements = $query->fetchCollection();
    foreach ($elements as $item) {
        $arResult["ONLINE_SHOP"]['PROMO'][] = $item;
    }
    //echo "<pre>"; print_r($arResult["ONLINE_SHOP"]); echo "</pre>";
    foreach ($elements as $item) {
        $arResult["ONLINE_SHOP"]['PROMO'][] = $item['TEXT_PROMOCODE'];
    }
  • Как сформировать нужный массив на Битриксе?

    @redesupar Автор вопроса
    Ярослав Александров, пытаюсь добавить новое в чужой код
  • Как сформировать нужный массив на Битриксе?

    @redesupar Автор вопроса
    Ярослав Александров,

    result-modifier.php
    <?
    $arResult["ONLINE_SHOP"] = array(); //Интернет магазины
    $arResult["OFFLINE_SHOP"] = array(); //Офлайн магазины
    $arResult["GROUP_OFFLINE_SHOP"] = array(); //сгруперованные офлайн магазины
    $sectionIds = array(); //id групп (сети магазинов)
    
    //echo "<pre>"; print_r($arResult["ITEMS"]); echo "</pre>";
    
    foreach($arResult["ITEMS"] as $shop){
        if($shop["PROPERTIES"]["ONLINE_SHOP"]["VALUE"] == "Y"){ //
            $arResult["ONLINE_SHOP"][] = $shop;
        }
        if($shop["PROPERTIES"]["OFFLINE_SHOP"]["VALUE"] == "Y"){
            $arResult["OFFLINE_SHOP"][] = $shop;
        }
    }
    
    foreach($arResult["OFFLINE_SHOP"] as $shop){
        if($shop["IBLOCK_SECTION_ID"] > 0){ //значит это филиал входит в какую-то сеть
            // алгоритм такой: нам нужно сгрупировать все филиалы в сеть магазинов.
            if(!in_array($shop["IBLOCK_SECTION_ID"], $sectionIds)){ //если такой сети магазинов ещё нет
                $sectionIds[] = $shop["IBLOCK_SECTION_ID"];
                //сначала берем данный из первого попавшегося филиала, а потом возьмём данные из раздела, если они там конечно будут
                $arResult["GROUP_OFFLINE_SHOP"]["SECTION_".$shop["IBLOCK_SECTION_ID"]]["SECTION_ID"] = $shop["IBLOCK_SECTION_ID"];
                //$arResult["GROUP_OFFLINE_SHOP"]["SECTION_".$shop["IBLOCK_SECTION_ID"]]["NAME"] = $shop["NAME"];
                //$arResult["GROUP_OFFLINE_SHOP"]["SECTION_".$shop["IBLOCK_SECTION_ID"]]["DESCRIPTION"] = $shop["PREVIEW_TEXT"];
                //$arResult["GROUP_OFFLINE_SHOP"]["SECTION_".$shop["IBLOCK_SECTION_ID"]]["ADDRESS"] = $shop["DISPLAY_PROPERTIES"]["ADDRESS"]["DISPLAY_VALUE"];
                //$arResult["GROUP_OFFLINE_SHOP"]["SECTION_".$shop["IBLOCK_SECTION_ID"]]["PHONES"] = $shop["DISPLAY_PROPERTIES"]["PHONES"]["VALUE"];
                //$arResult["GROUP_OFFLINE_SHOP"]["SECTION_".$shop["IBLOCK_SECTION_ID"]]["EMAIL"] = $shop["DISPLAY_PROPERTIES"]["EMAIL"]["DISPLAY_VALUE"];
                //$arResult["GROUP_OFFLINE_SHOP"]["SECTION_".$shop["IBLOCK_SECTION_ID"]]["WORKING_TIME"] = $shop["DISPLAY_PROPERTIES"]["WORKING_TIME"]["DISPLAY_VALUE"];
                //$arResult["GROUP_OFFLINE_SHOP"]["SECTION_".$shop["IBLOCK_SECTION_ID"]]["LINK"] = $shop["DISPLAY_PROPERTIES"]["LINK"]["VALUE"];
                //$arResult["GROUP_OFFLINE_SHOP"]["SECTION_".$shop["IBLOCK_SECTION_ID"]]["PREVIEW_PICTURE"] = $shop["PREVIEW_PICTURE"];
            }
        }else{ // это одиночный магазинчик
            //С 19.07.2021 это условие потеряло смысл, так как все офлайн магазины теперь храним в разделах, как и филиалы. else оставлен здесь чисто на всякий случай
            $arResult["GROUP_OFFLINE_SHOP"]["SHOP_".$shop["ID"]]["NAME"] = $shop["NAME"];
            $arResult["GROUP_OFFLINE_SHOP"]["SHOP_".$shop["ID"]]["DESCRIPTION"] = $shop["PREVIEW_TEXT"];
            $arResult["GROUP_OFFLINE_SHOP"]["SHOP_".$shop["ID"]]["ADDRESS"] = $shop["DISPLAY_PROPERTIES"]["ADDRESS"]["DISPLAY_VALUE"];
            $arResult["GROUP_OFFLINE_SHOP"]["SHOP_".$shop["ID"]]["PHONES"] = $shop["DISPLAY_PROPERTIES"]["PHONES"]["VALUE"];
            $arResult["GROUP_OFFLINE_SHOP"]["SHOP_".$shop["ID"]]["EMAIL"] = $shop["DISPLAY_PROPERTIES"]["EMAIL"]["DISPLAY_VALUE"];
            $arResult["GROUP_OFFLINE_SHOP"]["SHOP_".$shop["ID"]]["WORKING_TIME"] = $shop["DISPLAY_PROPERTIES"]["WORKING_TIME"]["DISPLAY_VALUE"];
            $arResult["GROUP_OFFLINE_SHOP"]["SHOP_".$shop["ID"]]["LINK"] = $shop["DISPLAY_PROPERTIES"]["LINK"]["VALUE"];
            $arResult["GROUP_OFFLINE_SHOP"]["SHOP_".$shop["ID"]]["MAP"] = $shop["DISPLAY_PROPERTIES"]["MAP"]["VALUE"];
            $arResult["GROUP_OFFLINE_SHOP"]["SHOP_".$shop["ID"]]["CITY"] = $shop["DISPLAY_PROPERTIES"]["CITY"]["DISPLAY_VALUE"];
            $arResult["GROUP_OFFLINE_SHOP"]["SHOP_".$shop["ID"]]["UNDERGROUND"] = $shop["DISPLAY_PROPERTIES"]["UNDERGROUND"]["DISPLAY_VALUE"];
            $arResult["GROUP_OFFLINE_SHOP"]["SHOP_".$shop["ID"]]["PREVIEW_PICTURE"] = $shop["PREVIEW_PICTURE"];
            $arResult["GROUP_OFFLINE_SHOP"]["SHOP_".$shop["ID"]]["PRODUCTS_CATEGORY"] = $shop["DISPLAY_PROPERTIES"]["PRODUCTS_CATEGORY"];
        }
    }
    
    //теперь для всех сетей получим значения из разделов
    $arSections = array();
    $arFilter = Array('IBLOCK_ID'=>$arResult["ID"], 'ID'=>$sectionIds);
    $arSelect = array("ID", "IBLOCK_ID", "NAME", "PICTURE", "DESCRIPTION", "DESCRIPTION_TYPE", "UF_*");
    $rsSect = CIBlockSection::GetList(Array(), $arFilter, true, $arSelect);
    while ($arSect = $rsSect->GetNext()){
    	$arSections[] = $arSect;
    }
    //dump($arSections);
    //ВАЖНО: свойства раздела перезатирают свойства из элемента
    foreach($arSections as $arSect){ //заполняем наши сети новыми значениями, если они есть. А если их нет, то останутся старые (те, которые из элементов)
        if(array_key_exists("SECTION_".$arSect["ID"], $arResult["GROUP_OFFLINE_SHOP"])){ //если такая сеть есть, то обновим в ней данные
            if(!empty($arSect["NAME"])){
                $arResult["GROUP_OFFLINE_SHOP"]["SECTION_".$arSect["ID"]]["NAME"] = $arSect["NAME"];
            }
            if(!empty($arSect["DESCRIPTION"])){
                $arResult["GROUP_OFFLINE_SHOP"]["SECTION_".$arSect["ID"]]["DESCRIPTION"] = $arSect["DESCRIPTION"];
            }
            if(!empty($arSect["UF_ADDRESS"])){
                $arResult["GROUP_OFFLINE_SHOP"]["SECTION_".$arSect["ID"]]["ADDRESS"] = $arSect["UF_ADDRESS"];
            }
            if(!empty($arSect["UF_PHONES"])){
                $arResult["GROUP_OFFLINE_SHOP"]["SECTION_".$arSect["ID"]]["PHONES"] = $arSect["UF_PHONES"];
            }
            if(!empty($arSect["UF_EMAIL"])){
                $arResult["GROUP_OFFLINE_SHOP"]["SECTION_".$arSect["ID"]]["EMAIL"] = $arSect["UF_EMAIL"];
            }
            if(!empty($arSect["UF_WORKING_TIME"])){
                $arResult["GROUP_OFFLINE_SHOP"]["SECTION_".$arSect["ID"]]["WORKING_TIME"] = $arSect["UF_WORKING_TIME"];
            }
            if(!empty($arSect["UF_LINK"])){
                $arResult["GROUP_OFFLINE_SHOP"]["SECTION_".$arSect["ID"]]["LINK"] = $arSect["UF_LINK"];
            }
            if(!empty($arSect["PICTURE"])){
                $arResult["GROUP_OFFLINE_SHOP"]["SECTION_".$arSect["ID"]]["PREVIEW_PICTURE"] = CFile::GetFileArray($arSect["PICTURE"]);
            }
        }
    }
    //dump($arResult);
    
    
    //формируем массив товарных категорий
    $arProductsCategory = array();
    foreach($arResult["ITEMS"] as $arItem){
        foreach($arItem["DISPLAY_PROPERTIES"]["PRODUCTS_CATEGORY"]["VALUE"] as $key => $value){
            $arProductsCategory[$value]["VALUE_XML"] = $value;
            $arProductsCategory[$value]["VALUE_ID"] = $arItem["DISPLAY_PROPERTIES"]["PRODUCTS_CATEGORY"]["PROPERTY_VALUE_ID"][$key];
            $arProductsCategory[$value]["NAME"] = $arItem["DISPLAY_PROPERTIES"]["PRODUCTS_CATEGORY"]["DISPLAY_VALUE"][$key];
            $arProductsCategory[$value]["LINK"] = str_replace('+', '%2B', $APPLICATION->GetCurPageParam('products_category='.$value, array('products_category')));
        }
    }
    
    $arResult["PRODUCTS_CATEGORY"]["SELECTED"] = array();
    if(!empty($_GET["products_category"])){
        foreach($arProductsCategory as &$arCategory){
            if($arCategory["VALUE_XML"] == $_GET["products_category"]){
                $arResult["PRODUCTS_CATEGORY"]["SELECTED"] = $arCategory;
                $arCategory["IS_SELECTED"] = "Y";
                break;
            }
        }
    }
    $arResult["PRODUCTS_CATEGORY"]["VALUES"] = $arProductsCategory;
    
    
    
    
    
    //echo "<pre>"; print_r($arResult["ONLINE_SHOP"]); echo "</pre>";
    
    foreach($arResult["ONLINE_SHOP"] as &$arOnlineShop){
        $linkToSite = ""; //ссылка на товар в интернет магазине
        if(!empty($arOnlineShop["DISPLAY_PROPERTIES"]["LINK_TEMPLATE"]["VALUE"])){ //если есть шаблон для ссылки, значит пробуем её сформировать
            $linkToSite = $arOnlineShop["DISPLAY_PROPERTIES"]["LINK_TEMPLATE"]["VALUE"]; //на случай если шаблон и есть ссылка!
            
            //достаём все нужные для формирования ссылки поля товара
            preg_match_all( //выдёргиваем маркеры
                '/(\#[a-zA-Z0-9_]+\#)/uim', //всё что начинается и заканчивается на символ решетки #
                $arOnlineShop["DISPLAY_PROPERTIES"]["LINK_TEMPLATE"]["VALUE"], 
                $arMarkers
            );
            $arMarkers = $arMarkers[0]; //почему-то так, читайте документацию preg_match_all
            //dump($arMarkers);
            if(!empty($arMarkers)){ //если в шаблоне есть маркеры, то получаем значения для этих маркеров
                $arSelect = Array("ID", "IBLOCK_ID");
                foreach($arMarkers as $marker){
                    $field = str_replace("#", "", $marker); //убираем решеточки
                    $arSelect[] = $field;
                }
                $arFilter = Array("IBLOCK_ID"=>IBLOCK_CATALOG_ID, "=ID" => $arParams["PRODUCT_ID"]);
                $resProduct = CIBlockElement::GetList(Array(), $arFilter, false, Array(), $arSelect);
                if($arProduct = $resProduct->GetNext()){ 
                    foreach($arProduct as $key => $field){ //перебираем поля товара
                        //это всё делаем для удобства, чтобы проще было менять маркеры на реальные значения.
                        //скорее всего алгоритм не оптимальный, можете сделать лучше
                        if(preg_match('/(PROPERTY_[a-zA-Z0-9_]+_VALUE)/uim', $key)){ //если ключ это свойство, убираем от туда _VALUE
                            $arProduct[str_replace("_VALUE", "", $key)] = $field;
                        }
                    }
                    
                    //заменяем маркера в шаблоне полученными данными
                    foreach($arProduct as $key => $field){
                        if(!empty($field)){ //если есть значение
                            $linkToSite = str_replace("#".$key."#", $field, $linkToSite);
                        }else{ //если значения нет, то вообще убиваем ссылку
                            $linkToSite = "";
                            break;
                        }
                    }
                }
                //dump($arProduct);
            }
        }
        $arOnlineShop["LINK_TO_SITE"] = $linkToSite;
    }
  • Как сформировать нужный массив на Битриксе?

    @redesupar Автор вопроса
    Ярослав Александров, да есть обработка, я достаю данные с 2 инфоблоков и 1 highload блока, ну в общем это работает, только я незнаю как сделать массив из всего этого и чтобы работало нормально