Ответы пользователя по тегу 1С-Битрикс
  • Почему не работает получение списка товаров в Bitrix d7?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    <?
    require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");//подключить, если надо
    use Bitrix\Sale;
    $dbRes = \Bitrix\Sale\Basket::getList(array(
            'filter' => array(
            'FUSER_ID' => Sale\Fuser::getId(), 
            'ORDER_ID' => null,
            'LID' => SITE_ID,
            'CAN_BUY' => 'Y',
        ),
    'select' => array('PRODUCT_ID', 'NAME'),
    ));
    while ($item = $dbRes->fetch())
    {
    $res = CIBlockElement::GetByID($item);
    if($arRes = $res->Fetch()) 
    if ($arRes[IBLOCK_SECTION_ID] == '114') //покажем только из раздела с id 114
    print_r ($item[NAME].'</br>');//выведем названия
    }
    ?>

    Basket::getList - не содержит разделы!
    Ответ написан
  • Как проверить нахождение юзера на определённом url с помощью php?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    Всё проще:
    <?if (CSite::InDir('/catalog/')){?>Твой код<?}?>
    Ответ написан
    Комментировать
  • Купить 10 шаблонов или сделать самому?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    Такой дешманский шаблон проще заказать у студента за 3000-5000 рублей или сверстать самому.
    Потом отвалить за натяжку на Битрикс 5-7тр, хотя не вижу смысла его использовать для такого проекта.
    На редакции выше Старт можно все 10 сайтов разместить.
    Остальные 9 шаблонов просто кастомизировать не много.
    Ответ написан
    3 комментария
  • Как использовать JavaScript с Bitrix?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    JavaScript работает на клиенте в браузере с элементами html. Вы хотите воздействовать на массив php.
    Оберните элементами html результат php и обвесьте js.
    Ответ написан
    Комментировать
  • Какой массив для вывода суммы заказа Битрикс?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    <?
    use Bitrix\Sale;
    $order = Sale\Order::load($orderId);//номер заказа вставь в скобки
    $sum = $order->getPrice();
    print_r($sum);
    ?>
    Ответ написан
  • Как убрать "доступное количество" на сайте ,в Битрикс?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    <style>
    .item-stock{display:none!important;}
    </style>
    Ответ написан
    Комментировать
  • Как задать стили для конкретного каталога?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    Топорно так:
    <?
    if (CSite::InDir('/catalog/aksessuary/')){
            ?><style>.html{width:90%;}</style><?
    }
    ?>

    Вверху файла index.php в catalog папке.
    Ответ написан
    1 комментарий
  • Как в Битрикс можно реализовать расчет стоимости доставки в зависимости от расстояния от интернет-магазина?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    Вариант более точный, по маршруту
    Яндекс.Карты API
    5f649208bd125374415469.jpeg
    Второй вариант - по радиусу:
    // Радиус земли
    define('EARTH_RADIUS', 6372795);
     
    /*
    * Расстояние между двумя точками
    * $φA, $λA - широта, долгота 1-й точки,
    * $φB, $λB - широта, долгота 2-й точки
    * Написано по мотивам http://gis-lab.info/qa/great-circles.html
    * Михаил Кобзарев <mikhail@kobzarev.com>
    *
    */
    function calculateTheDistance ($φA, $λA, $φB, $λB) {
     
    // перевести координаты в радианы
    $lat1 = $φA * M_PI / 180;
    $lat2 = $φB * M_PI / 180;
    $long1 = $λA * M_PI / 180;
    $long2 = $λB * M_PI / 180;
     
    // косинусы и синусы широт и разницы долгот
    $cl1 = cos($lat1);
    $cl2 = cos($lat2);
    $sl1 = sin($lat1);
    $sl2 = sin($lat2);
    $delta = $long2 - $long1;
    $cdelta = cos($delta);
    $sdelta = sin($delta);
     
    // вычисления длины большого круга
    $y = sqrt(pow($cl2 * $sdelta, 2) + pow($cl1 * $sl2 - $sl1 * $cl2 * $cdelta, 2));
    $x = $sl1 * $sl2 + $cl1 * $cl2 * $cdelta;
     
    //
    $ad = atan2($y, $x);
    $dist = $ad * EARTH_RADIUS;
     
    return $dist;
    }
    $lat1 = 77.1539;
    $long1 = -139.398;
    $lat2 = -77.1804;
    $long2 = -139.55;
     
    echo calculateTheDistance($lat1, $long1, $lat2, $long2) . " метров";
    // Вернет "17166029 метров"
    Ответ написан
    Комментировать
  • Правильные настройки кассы Атол на Битрикс для упрощенной системы налогообложения?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    Анна, поставьте везде none
    и в настройках каталога должно быть пусто:
    5f5b55d80b283556215953.jpeg
    Ответ написан
    Комментировать
  • Как передать динамический SuccessUrl на Яндекс Кассу?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    так и пишите
    https://site.ru/#ORDER_ID#/
    или на профиль
    https://site.ru/personal/orders/#ORDER_ID#/
    как то так)
    из доков:
    Текст может содержать метки: #PAYMENT_ID# - ID оплаты, #ORDER_ID# - ID заказа, #PAYMENT_NUMBER# - номер оплаты, #ORDER_NUMBER# - номер заказа, #USER_EMAIL# - Email покупателя
    Ответ написан
  • Можно ли импортировать множественное свойство через excel в 1C-Bitrix?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
  • Как сделать альтернативный ЧПУ умного фильтра?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    Убираем filter и apply
    Строку в компоненте bitrix:catalog заменить на :
    "smart_filter" => "#SECTION_CODE_PATH#/#SMART_FILTER_PATH#/",

    В фильтре catalog.smart.filter меняем настройки на такие :
    <?
                    $res = CIBlockSection::GetByID($arCurSection['ID']);
                    if($ar_res = $res->GetNext())
                    $url = "/catalog/".$ar_res[CODE]."/#SMART_FILTER_PATH#/";
    		$APPLICATION->IncludeComponent("bitrix:catalog.smart.filter", "bootstrap_v4", array(
                    "CACHE_GROUPS" => "N",	// Учитывать права доступа
    		"CACHE_TIME" => "3600",	// Время кеширования (сек.)
    		"CACHE_TYPE" => "A",	// Тип кеширования
    		"COMPOSITE_FRAME_MODE" => "N",
    		"COMPOSITE_FRAME_TYPE" => "AUTO",
    		"CONVERT_CURRENCY" => "N",	// Показывать цены в одной валюте
    		"DISPLAY_ELEMENT_COUNT" => "N",	// Показывать количество
    		"FILTER_NAME" => "arrFilter",	// Имя выходящего массива для фильтрации
    		"FILTER_VIEW_MODE" => "vertical",
    		"HIDE_NOT_AVAILABLE" => "Y",	// Не отображать товары, которых нет на складах
    		"IBLOCK_ID" => $arParams["IBLOCK_ID"],	// Инфоблок
    		"IBLOCK_TYPE" => "catalog",	// Тип инфоблока
    		"PAGER_PARAMS_NAME" => "arrPager",	
    		"SAVE_IN_SESSION" => "N",	// Сохранять установки фильтра в сессии пользователя
    		"SECTION_CODE" => "",	// Код раздела
    		"SECTION_DESCRIPTION" => "-",	// Описание
    		"SECTION_ID" => $arCurSection['ID'],	// ID раздела инфоблока
    		"SECTION_TITLE" => "-",	// Заголовок
    		"SEF_MODE" => "Y",	// Включить поддержку ЧПУ
    		"TEMPLATE_THEME" => "blue",	// Цветовая тема
    		"XML_EXPORT" => "N",	// Включить поддержку Яндекс Островов
    		"COMPONENT_TEMPLATE" => "",
    		"POPUP_POSITION" => "left",
    		"SECTION_CODE_PATH" => "",	// Путь из символьных кодов раздела
    		"SEF_RULE" => $url,	// Правило для обработки
    		"SMART_FILTER_PATH" => $_REQUEST["SMART_FILTER_PATH"],	// Блок ЧПУ умного фильтра
    		"SHOW_ALL_WO_SECTION" => "Y",
    		"PRICE_CODE" => "",	// Тип цены
    		"PREFILTER_NAME" => "smartPreFilter",	// Допфильтрация элементов
    						),
    	         false);
    		 ?>

    В urlrewrite.php нужно добавить одно правило, оно не затрется в будущем, а общий вид будет примерно таким:
    <?php
    $arUrlRewrite=array (
      1 => 
      array (
        'CONDITION' => '#^/catalog/([a-z0-9_\\-\\/]+)/#',
        'RULE' => 'SMART_FILTER_PATH=$1&',
        'ID' => '',
        'PATH' => '/catalog/index.php',
        'SORT' => 100,
      ),
      2 => 
      array (
        'CONDITION' => '#^/catalog/\\??(.*)#',
        'RULE' => 'SMART_FILTER_PATH=$1&$2',
        'ID' => 'bitrix:catalog.smart.filter',
        'PATH' => '/catalog/index.php',
        'SORT' => 100,
      ),
      3 => 
      array (
        'CONDITION' => '#^/catalog/#',
        'RULE' => '',
        'ID' => 'bitrix:catalog',
        'PATH' => '/catalog/index.php',
        'SORT' => 100,
      )
    );

    Убираем IS и OR
    Чтобы убрать -is- нужно подменять значения в SMART_FILTER_PATH, а затем сделать 301 редирект с оригинального адреса на кастомный.
    Как вы будете делать подмену - я не знаю (циклами, массивами, и прочими "пэхэпэшными штучками"), но подмена должна быть выше, чем код фильтра. Нужно проверять вхождения, корректность подмен, добавить обработку ошибок, юзать 301 редирект, чтобы не плодить дубли, которых и так много и без доработки фильтра.
    Вот пример:

    $_REQUEST[SMART_FILTER_PATH] = str_replace("red/brown", "colors-is-brown-or-red/", $_REQUEST[SMART_FILTER_PATH]);


    В итоге вместо строки
    https://test.ru/catalog/pants/filter/color_ref-is-green/apply/

    мы получим строку:
    https://test.ru/catalog/pants/green/
    5f4fd8c4caad8356011565.jpeg
    5f4fd8cf127cb908819760.jpeg
    Ответ написан
  • Скидка на последний размер?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    Аналогично как на вашей картинке, только выбрать свойство и сделать равным 1.
    Это самое свойство создайте у товара, записывайте в него общее кол-во ТП.
    Значение свойства можно изменять событиями, либо при обмене с 1с.
    Ответ написан
    1 комментарий
  • Почему не добавляется купон через CCatalogDiscountCoupon::Add?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    <?php
    require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
    CModule::IncludeModule("sale");
    CModule::IncludeModule("catalog");
    $COUPON = randString(5);
    
        $addDb = \Bitrix\Sale\Internals\DiscountCouponTable::add(array(
          'DISCOUNT_ID' => 3,
          'COUPON'      => $COUPON,
          'TYPE'        => \Bitrix\Sale\Internals\DiscountCouponTable::TYPE_ONE_ORDER,
          'MAX_USE'     => 1,
          'USER_ID'     => 0,
          'DESCRIPTION' => ''
       ));
    echo $COUPON;
    ?>
    Ответ написан
  • Как мне настроить ЧПУ в компоненте bitrix.news?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    URL страницы информационного блока: /article/index.php
    URL страницы раздела:	пусто
    URL страницы детального просмотра:	/article/#ELEMENT_CODE#/

    Убеждаемся, что символьный код указан у элементов, иначе заменить на ID

    В настройках компонента:
    Управление адресами страниц: /article/
    Страница детального просмотра:	#ELEMENT_CODE#/
    Включить поддержку ЧПУ: Да
    Остальное пусто


    После сохранения в urlrewrite.php будет примерно так:
    13 => 
      array (
        'CONDITION' => '#^/article/#',
        'RULE' => '',
        'ID' => 'bitrix:news',
        'PATH' => '/article/index.php',
        'SORT' => 100,
      ),

    По просьбе автора топика перенесу сюда свой ответ из коммента:
    htaccess примерно таким должен быть, если Апач.
    Options -Indexes 
    ErrorDocument 404 /404.php
    
    
      php_flag session.use_trans_sid off
      #php_flag default_charset UTF-8
      #php_value display_errors 1
    
    
    <IfModule mod_php7.c>
      php_flag session.use_trans_sid off
      #php_flag default_charset UTF-8
      #php_value display_errors 1
    </IfModule>
    
    <IfModule mod_rewrite.c>
      Options +FollowSymLinks
      RewriteEngine On
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-l
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
      RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
      RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
    </IfModule>
    
    <IfModule mod_dir.c>
      DirectoryIndex index.php index.html
    </IfModule>
    
    <IfModule mod_expires.c>
      ExpiresActive on
      ExpiresByType image/jpeg "access plus 3 day"
      ExpiresByType image/gif "access plus 3 day"
      ExpiresByType image/png "access plus 3 day"
      ExpiresByType text/css "access plus 3 day"
      ExpiresByType application/javascript "access plus 3 day"  
    </IfModule>
    Ответ написан
  • Как организовать в Битрикс экспорт элементов в личном кабинете пользователя?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    Предустановленная форма состоящая из getlista, в фильтре которой привязка к пользователю и разделы. Результат записываем как dom обьекты и сохраняем в xml.
    https://dev.1c-bitrix.ru/api_help/iblock/classes/c...
    И https://www.php.net/manual/ru/example.xmlwriter-si...


    Все модули

    Писанины часа на два для опытного битриксоида
    Ответ написан
    Комментировать
  • Из-за чего могут быть проблемы с сокетами на Битрикс?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    При проверке сайта на ошибки средствами Битрикс, сайт делает подключение сам к себе. Если сайт закрыт паролем или через админку в главном модуле, то проверка будет проходить с ошибками - сокеты.
    Ответ написан
    1 комментарий
  • Как удалить дубли со странным url в битрикс?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    Ошибка в верстке, правьте html, где то знака или символа не хватает
    Ответ написан
    Комментировать
  • Как связать фильтр товаров и настройки умного фильтра (с ЧПУ и мета тегами) в Bitrix?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    Возможно, что то что вы делаете это SEO умного фильтра, в разных проектах может быть реализован по разному.
    При этом новые свойства у вас могут не работать в качестве отбираемых фильтром.
    Начните с того, что покажите настройки свойств из настроек инфоблока и примеры значений оттуда же.
    Ответ написан
    Комментировать
  • Как настроить умный фильтр bitrix?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    В настройках инфоблока перейдите в свойства Стиль и задайте значение кода на английском языке.
    Ответ написан