• Как в Битрикс получить id торгового предложения по внешнему коду этого торгового предложения?

    @V0VA
    $xml_id = 'aaaaa#vvvvv'; //xml id торгового предложения
    $iblock_id = 10; // id инфоблока ТП
    $result = false;
    $arElm = CIBlockElement::GetList(array(), array('XML_ID' => $xml_id, 'IBLOCK_ID' => $iblock_id), false, false, array('ID'))->Fetch();
    if ($arElm)
        $result = (int) $arElm['ID']; // искомый id
    Ответ написан
    Комментировать
  • Почему некорректно отображается bxslider?

    @V0VA
    Как вариант, можно инициализировать запуск слайдера по клику на кнопке, которая отображает скрытый блок
    $(document).ready(function() {
    	
    	//$('.slider').bxSlider();  // отключаем стандартный способ
    	
    	/* это добавляем = */
    	const initSliderFunc = () =>{
    		$('.slider').bxSlider();
    	}		
    	$("#my-button").on('click', function() {
    		setTimeout(initSliderFunc, 0);	  
    	});
    	/* =это добавляем  */
    });
    Ответ написан
    Комментировать
  • Как с помощью шорткода вывести товар woocommerce?

    @V0VA
    На сегодняшний день, такой возможности нет.

    Можно решить вопрос правкой шаблона content-single-product.php
    (предварительно скопировав его в /папка шаблона / woocommerce/ )
    добавив условие на проверку url если нужная страница, то не нужные блоки не отображаются
    <?php 
    	$url = $_SERVER['REQUEST_URI'];
    	$url = explode('?', $url);
    	$url = $url[0];
    	if($url !== "/"){...} // условие показа/скрытия
    ?>
    Ответ написан
    Комментировать
  • Как изменить алгoритм применения купона при расчете бесплатной доставки woocommerce?

    @V0VA Автор вопроса
    Не нашел в свое время решения задачи при использовании этого плагина. Реализовал без него. Выкладываю решение, если кому вдруг понадобится. Порядок действий, создаем на штатной странице настроек доставки woocommerce бесплатные доставки в количестве, равном количеству городов у которых разный порог. В штатных настройках есть возможность настроить правила применения купонов . Добавляем в functions.php активной темы:
    <?
    function hard_remove_shipping_method( $rates, $package ) {
    		$billingSity = WC()->customer->get_billing_city();
    		//задаем через массивы. в будущем проще добавить город к условию	
    		$arr = ['Москва','Санкт-Петербург'];
    		$arrOne = ['Москва'];
    		$arrTwo = ['Санкт-Петербург'];
    		
    		$reRates = $rates;
    		
    		//если не Москва и не Санкт-Петербург,  сработает общее условие для беспл доставки
    		if (!in_array($billingSity, $arr)){
    		//отключаем методы, не подходящие для региона
    			unset( $reRates[ 'local_pickup:10' ] );	//  'local_pickup:10'  и прочие...  у вас вместо этих значений будут ваши можно посмотреть в инструментах разработчика в браузере
    			unset( $reRates[ 'flat_rate:28' ] );
    			unset( $reRates[ 'flat_rate:27' ] );	
    			unset( $reRates[ 'free_shipping:11' ] );
    			unset( $reRates[ 'free_shipping:26' ] );
    			$new_rates = array();
    			
    			// в цикле проверяем,  есть ли бесплатная доставка
    			foreach ( $reRates as $rate_id => $rate ) {
    				if ( 'free_shipping' === $rate->method_id ) { 
    					$new_rates[ $rate_id ] = $rate;
    					break; // бесплатную доставку нашли, выходим из цикла
    				}
    			}
    			//Есть бесплатная, оставляем только ее
    			if (!empty( $new_rates )) {
    				$reRates = $new_rates; 
    			}
    			return 	$reRates;
    		}
    		
    		// если Москва
    		if (in_array($billingSity, $arrOne) ) {
    			unset( $reRates[ 'flat_rate:28' ] );
    			unset( $reRates[ 'flat_rate:41' ] );
    			unset( $reRates[ 'flat_rate:42' ] );	
    			unset( $reRates[ 'flat_rate:43' ] );
    			unset( $reRates[ 'flat_rate:44' ] );
    			unset( $reRates[ 'free_shipping:30' ] );
    			unset( $reRates[ 'free_shipping:26' ] );
    	    	
    			$new_rates = array();
    			foreach ( $reRates as $rate_id => $rate ) {
    				if ( 'free_shipping' === $rate->method_id ) {
    					$new_rates[ $rate_id ] = $rate;
    					break;
    				}
    			}			
    			if (!empty( $new_rates )) {
    				unset( $reRates[ 'flat_rate:27' ] );			
    			}
    			return 	$reRates;
    		}
    		
    		// если Санкт-Петербург
    		if (in_array($billingSity, $arrTwo)) {
    			unset( $reRates[ 'flat_rate:27' ] );
    			unset( $reRates[ 'flat_rate:41' ] );
    			unset( $reRates[ 'flat_rate:42' ] );	
    			unset( $reRates[ 'flat_rate:43' ] );
    			unset( $reRates[ 'flat_rate:44' ] );
    			unset( $reRates[ 'free_shipping:30' ] );
    			unset( $reRates[ 'free_shipping:11' ] );
    			
    			$new_rates = array();
    			foreach ( $reRates as $rate_id => $rate ) {
    				if ( 'free_shipping' === $rate->method_id ) {
    					$new_rates[ $rate_id ] = $rate;
    					break;
    				}
    			}			
    			if (!empty( $new_rates )) {
    				unset( $reRates[ 'flat_rate:28' ] );			
    			}
    			return 	$reRates;
    		}	
    		
    		return $reRates;
    	}
    Ответ написан
    Комментировать
  • Как изменить дату изменения товара в Битрикс?

    @V0VA
    В дополнение к решению Ярослав Александров
    можно не указывать TIMESTAMP_X

    $timestamp = new \Bitrix\Main\Type\Date(date("d.m.Y"));;
    
    $element = new CIBlockElement;
    
    $arLoadProductArray = Array(
      "MODIFIED_BY"    => 5155, 
      );
      
    $element->Update($cyrId, $arLoadProductArray);
    Ответ написан
    1 комментарий
  • Как отобразить видео из тегов figure и oembed на сайте с помощью js?

    @V0VA
    Добрый день! Правильнее будет изменить настройки html редактора.
    Но если нужно сразу на странице вывести, то можно попробовать так
    document.querySelectorAll('figure.media').forEach(element => {
      element.outerHTML = '<div>' + element.innerHTML + '</div><hr>';
    });
    
    document.querySelectorAll('oembed').forEach(element => {
      let url = element.getAttribute('url');
      url = url.replace("watch?v=", "embed/");
    
      const newIframe = document.createElement("iframe");
      newIframe.setAttribute("width", "auto");
      newIframe.setAttribute("height", "auto");
      newIframe.setAttribute("allowFullScreen", "");
      newIframe.setAttribute("frameBorder", 0);
      if (url) {
        newIframe.setAttribute("src", url);
      }
    
      element.outerHTML = newIframe.outerHTML;  
     } );
    Ответ написан
    1 комментарий
  • Как в коробочном Битрикс 24 создать ssl для сайта из консоли VM Bitrix?

    @V0VA
    Тут не нужна консоль.
    Нужно внести правки в dns домена.

    junior_www, при корректном подключении верных DNS-записях у домена SSL-сертификат будет выписан и подключен к сайту автоматически в течение нескольких часов.

    И у коробки и у облака. Записи для домена необходимо настроить по инструкции https://helpdesk.bitrix24.ru/open/6624333/
    Также проверьте записи CNAME-записи у поддомена www.
    Проверено, работает
    Ответ написан
    1 комментарий
  • Как в javascript добавить спиннер на время выполнения скрипта?

    @V0VA
    Добавляете перед таблицей <div class="overlayTable"></div>
    Вначале выполнения скрипта пишете
    // JavaScript program to illustrate
    			// Table sort for both columns and both directions.
    			function sortTable(n) {
    				var table;
    				table = document.getElementById("table");
    				var overlayTable = document.querySelector(".overlayTable");
    //добавляем эту строку
    				overlayTable.classList.add("working");
    //...........

    В конце, перед закрывающей фигурной скобкой
    //.......
    	//удаляем класс	
    	overlayTable.classList.remove("working");
    
    			}

    Ну а сам добавленный див оформляете как нравится для
    .overlayTable {
    //
    }
    .overlayTable.working {
    //
    }
    Ответ написан
    1 комментарий
  • Почему в Битриксе меняется при сохранении тип товара?

    @V0VA
    Вероятнее всего ошибка связана с настройками информационных блоков. Проверьте соответствие привязки инфоблока каталога и инфоблока торгового предложения (
    контент-> Инфоблоки-> типы инфоблоков -> ваш блок каталога
    контент-> Инфоблоки-> типы инфоблоков -> ваш блок торговых предложений
    )
    Вкладка торговый каталог
    должна стоять галка ИБ имеет торговые предложения
    и ниже в списке внимательно проверьте привязанный инфоблок)
    Если даже выбран верный, попробуйте убрать сохранить и снова привязать
    Ответ написан
    Комментировать
  • Как в админке Битрикс сделать фильтр по наличию детальной картинки?

    @V0VA
    Можете попробовать создать свой фильтр в админке. Копать в сторону CAdminFilter
    Ответ написан
    Комментировать