• Как добавить элемент в инфоблок через агента?

    @pavel__sidorov Автор вопроса
    сократил код

    добавил в init.php - агент добавляет 1 элемент и отваливается.

    function testAgent()
    {
    
    		if(CModule::IncludeModule("iblock")){
    
    			$el = new CIBlockElement;
    			$IBLOCK_ID_CATALOG = 53; 
    	
    			$arLoadProductArray = Array( 
    				"IBLOCK_ID" => $IBLOCK_ID_CATALOG,
    				"NAME" => "тест1", 
    				"ACTIVE" => "Y",
    				"PREVIEW_TEXT" => "Позиция успешно добавлена",
    			); 
    			if($newElement = $el->Add($arLoadProductArray));
    
    		}
    }
    
    function AddIBElementByAgent()
    {
       AddEventHandler("main", "OnProlog", "testAgent");
       return "AddIBElementByAgent()";
    }
    Ответ написан
    Комментировать
  • Почему сбивается название после preg_match?

    @pavel__sidorov Автор вопроса
    я попробовал так. Удалил все эмоджи. все равно остался этот чертов знак вопроса.

    $css = array();
    
    $main = "Платье 
    Размер единый 42-48 
    Материал лапша  
    Цена 350 руб";
    
    echo '<pre>';
    var_dump($main);
    echo '</pre>';
    
    
    $fullname = preg_replace ("/[^a-zA-ZА-Яа-я0-9\s]/iu","",$main );
    
    echo '<pre>';
    var_dump($fullname);
    echo '</pre>';
    
    preg_match_all('/^.[а-яА-я]+/', $fullname, $css);
    $preg_name = $css;
    
    echo '<pre>';
    var_dump($css);
    echo '</pre>';
    Ответ написан
  • Как добавить окончание активности элемента api битрикс?

    @pavel__sidorov Автор вопроса
    Разобрался
    "DATE_ACTIVE_TO" => ConvertTimeStamp(time()+(86400 * 10), "FULL"),
    					"DATE_ACTIVE_FROM" => ConvertTimeStamp(time(), "FULL"),
    Ответ написан
    Комментировать
  • Почему капча не пропускает данные формы?

    @pavel__sidorov Автор вопроса
    забыл в форме добавить method="POST"
    все работает
    Ответ написан
    Комментировать
  • CIBlockElement::Add - как добавить свойство типа список?

    @pavel__sidorov Автор вопроса
    Евгений Николаев

    благодарю за функцию

    //[НАЧАЛО]Функция получения кода свойства типа список(Enum) по его названию а так же Ид инфоблока и коду(имени) свойства
    function myGetPropEnumId($name=false,$IBlockId=false,$code=false) {
      if ($name and $IBlockId and $code) {
        $name = $name . "";//Поле может прийти как int что может привести к неверному срабатыванию условия ниже, поэтому приводим к string
    //В следующей строчке в качестве фильтра нельзя передать ~VALUE, если его передать всё равно выберутся все записи из фильтра без учёта ~VALUE. Требуется сравнение именно с ~VALUE, а не просто VALUE, поскольку просто VALUE будет содержать заменённые на " кавычки и если они есть совпадения не будет
        $property_enums = CIBlockPropertyEnum::GetList(Array("DEF"=>"DESC", "SORT"=>"ASC"), Array("IBLOCK_ID"=>$IBlockId,"CODE"=>$code,"~VALUE"=>$name));
        while ($enum_fields = $property_enums->GetNext()) {
          if ($enum_fields["~VALUE"] == $name) {//Поскольку в качестве фильтра бесполезно передавать ~VALUE, проверяем совпадение в этом условии
            return $enum_fields["ID"];//Если искомое значенией найдено возвращаем результат в этой строке
          }
        }
    
    //Если искомое значение найдено не было выполняется код далее
    
    //Определяем ID свойства в инфоблоке
    // ID свойств так же можно было получить следующим методом: $result = \Bitrix\Iblock\PropertyTable::getList($params);
        $properties = CIBlockProperty::GetList(Array("sort"=>"asc", "name"=>"asc"), Array("ACTIVE"=>"Y","IBLOCK_ID"=>$IBlockId,"PROPERTY_TYPE"=>"L","CODE"=>$code));
        if ($prop_fields = $properties->GetNext()) {//Если удалось определить ID свойства в инфоблоке
          $PROPERTY_ID = $prop_fields["ID"];
    
    //Создаём элемент списка ENum и выполняем его добавление
          $ibpenum = new CIBlockPropertyEnum;
    // !!! ВАЖНО В СЛЕДУЮЩЕЙ СТРОЧКЕ УКАЗЫВАЕТСЯ ID СВОЙСТВА РАЗМЕР ИНФОБЛОКА ТОРГОВЫХ ПРЕДЛОЖЕНИЙ А НЕ СИМВОЛЬНЫЙ КОД
          if ($PropID = $ibpenum->Add(Array("IBLOCK_ID"=>$IBlockId,"PROPERTY_ID"=>$PROPERTY_ID,"VALUE"=>$name))) {
            return $PropID;//Возвращаем Id созданного свойства Enum
          }
        }
      }
    //Иначе возвращаем ошибку
      return false;
    }
    //[КОНЕЦ]Функция получения кода свойства типа список(Enum) по его названию а так же Ид инфоблока и коду(имени) свойства
    Ответ написан
    Комментировать
  • Как в ЧПУ на страницах разделов убрать /catalog/?

    <?if(CSite::InDir('/catalog/index.php')):?>
    // здесь будет вызов простого компонента из файла sections.php компонента catalog
    <?else:?>
    // здесь твой компонент catalog
    <?endif;?>


    Друг , выложи, что у тебя тут
    Ответ написан
    Комментировать
  • Как вывести количество зарезервированного товара битрикс?

    @pavel__sidorov Автор вопроса
    чет я неправильно воспользовался мануалом. есть же поиск)) отбой
    $tovar = CCatalogProduct::GetByID($arItem['ID']);
    			echo '<pre>'; 
    			var_dump($tovar);
    			echo '</pre>';
    Ответ написан
    Комментировать
  • Как пофиксить ошибку PWA?

    @pavel__sidorov Автор вопроса
    ошибка изменилась
    Uncaught (in promise) TypeError: Failed to execute 'fetch' on 'WorkerGlobalScope': Cannot construct a Request with a Request object that has already been used

    self.addEventListener('install', function(event) {
      var indexPage = new Request('index.php');
      event.waitUntil(
        fetch(indexPage).then(function(response) {
          return caches.open('pwabuilder-offline').then(function(cache) {
            console.log('[PWA Builder] Cached index page during Install'+ response.url);
            return cache.put(indexPage, response);
          });
      }));
    });
    self.addEventListener('fetch', function(event) {
      var updateCache = function(request){
        return caches.open('pwabuilder-offline').then(function (cache) {
          return fetch(request).then(function (response) {
            console.log('[PWA Builder] add page to offline'+response.url)
            return cache.put(request, response);
          });
        });
      };
      event.waitUntil(updateCache(event.request));
      event.respondWith(
        fetch(event.request).catch(function(error) {
          console.log( '[PWA Builder] Network request Failed. Serving content from cache: ' + error );
          return caches.open('pwabuilder-offline').then(function (cache) {
            return cache.match(event.request).then(function (matching) {
              var report =  !matching || matching.status == 404?Promise.reject('no-match'): matching;
              return report
            });
          });
        })
      );
    })
    Ответ написан
    Комментировать
  • Как привязать кнопку определения местоположения к своему html элементу (api яндекс карты)?

    @pavel__sidorov Автор вопроса
    <div class="map_btn" id="geo">Определить местоположение</div>

    var a = document.getElementById('geo');
    
    a.onclick = function() {
    		geolocation.get({
    		mapStateAutoApply: true
    		})
    		.then(
    		function(result) {
    		// Получение местоположения пользователя.
    		var userAddress = result.geoObjects.get(0).properties.get('text');
    		var userCoodinates = result.geoObjects.get(0).geometry.getCoordinates();
    		result.geoObjects.get(0).properties.set({
    		balloonContentBody: 'Адрес: ' + userAddress +
    		'<br/>Координаты:' + userCoodinates
    		});
    		myMap.geoObjects.add(result.geoObjects)
    		},
    		function(err) {
    		console.log('Ошибка: ' + err)
    		}
    		);
        }
    Ответ написан
    Комментировать
  • Почему css не скрывает?

    @pavel__sidorov Автор вопроса
    Вопрос решился. Никакой ширины указывать не надо было.
    Проблема была во вложенности div
    Ответ написан
    Комментировать
  • Как сделать вывод количества наборов, которое пользователь захочет купить?

    @pavel__sidorov Автор вопроса
    Если кто то столкнется с подобной задачей.
    Реализовал след образом. НЕ утверждаю, что он правильной, но рабочий.

    1. Отказываемся от catalog.set.constructor, заменяем все это на свойство привязка к элементам.
    2. Создаем отдельный инфоблок
    3. Используем ajax jquery для добавления товара в корзину
    4. Используем API для вывода связанных элементов
    5. Используем отдельную форму с кнопкой отправить в корзину
    6. Добавляем в форму все необходимые нам товары и их свойства, цены.
    7. Количество идет как общий знаменатель ко всем товарам в форме.
    8. Всё это сборище одним кликом добавляем в корзину.
    Ответ написан
  • Как изменить артикул товара при выборе торгового предложения (скриптом)?

    @pavel__sidorov Автор вопроса
    Тема закрыта. Функционал дефолтного шаблона. Можно и без AJAX_MODE='Y'
    Ответ написан
    Комментировать
  • Как через getlist вывести множественное свойство привязка к другим элементам инфоблока?

    @pavel__sidorov Автор вопроса
    Немного переписал, но все равно выводятся все записи. Свойства не группируются к одному элементу. Используются инфоблоки 2.0.

    <?
    $ID = $arResult['ID']; 
    $arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM", 'PROPERTY_ELEMENT.ID', 'PROPERTY_ELEMENT.NAME', 'PROPERTY_ELEMENT.CODE',);
    $arFilter = Array("IBLOCK_ID"=>16, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", 'PROPERTY_LOOKBOOK.ID' => $ID);
    $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
    while($ob = $res->GetNextElement())
    {
     $arFields = $ob->GetFields();
     echo '<pre>';print_r($arFields);echo '</pre>'; 
     $arRes = $ob->GetProperties(); // свойства элемента
     echo '<pre>';print_r($arRes);echo '</pre>'; 
    }
    ?>


    вывод точно также же при обращении к массиву
    Ответ написан
    Комментировать
  • Как правильно написать регулярное выражение для каталога в битрикс?

    @pavel__sidorov Автор вопроса
    Снизашел свет на мою голову, получилось. Но если кто критикует, то плиз оптимизируйте

    <?
    
    if (preg_match('~^/catalog/([A-Za-z0-9]+)/([A-Za-z0-9]+)~', $_SERVER['REQUEST_URI'])) {
    
    	echo "мы находимся на детальной странице каталога";
    } 
    elseif (preg_match('~^/catalog/([A-Za-z0-9]+)/~', $_SERVER['REQUEST_URI'])) {
    
    	echo "Друг, это страница каталога, или раздела каталога";
    }
    elseif (preg_match('~^/catalog/~', $_SERVER['REQUEST_URI'])) {
    
    	echo "Друг, это страница каталога, или раздела каталога";
    }
    else {
        echo "Любая другая страница не каталог, не раздел каталога, не страница детальнйо карточки товара";
    }
    
    ?>
    Ответ написан
  • Как в 1с-битрикс реализовать избранные товары?

    Добрый день. Не могли бы поделиться функционалом ? Был бы признателен. Статья , что вы указали по ссылке , более недоступна.
    Ответ написан
  • Почему через wizard установщик тип инфоблока берется из ядра bitrix?

    @pavel__sidorov Автор вопроса
    разобрался... в папке lang кроме ru, должна быть еще папка en
    Ответ написан
    Комментировать