Задать вопрос
  • Как в Битрикс можно реализовать расчет стоимости доставки в зависимости от расстояния от интернет-магазина?

    @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 метров"
    Ответ написан
    Комментировать
  • Очень хорошо знаю PHP - куда двигаться дальше?

    @anton99zel
    29а класс средней школы №7
    куда двигаться дальше в бэкенде?

    Вся проблема в том, что
    не горю желанием работать в фирмах
    Ответ написан
    Комментировать
  • Правильные настройки кассы Атол на Битрикс для упрощенной системы налогообложения?

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

    @anton99zel
    29а класс средней школы №7
    У вас вопрос неверный.
    Вы спрашиваете про отправку через php, а по сути ищете наименее затратный способ.
    --
    Я себе сделал бесплатный от слова совсем, даже 600 смс и за те не плачу)
    правда, железо у меня уже было (домашнее).
    ---
    Нужно:
    1. Модем e3372
    2. Роутер Кинетик с usb
    3. Сим-карта Дэником, которая на тарифе за 0 рублей дает 600 смс просто так, либо мегафон или Yota дают условный безлимит на смс за 50 рублей. По сути блокируют отправку, если превышаешь лимит в час.
    4. Белые ip не нужны. Интернет на Сим карте тоже не нужен

    Модем прошиваем в hilink, на роутере включаем keendns, добавляем модем к этой службе, при включении будет выдан адрес в сети интернет и ssl, там же в роутере закрываем модем паролем.

    Далее к модему можно обращаться не только по локальной сети 192.168.8.1, но и из интернета (спасибо кинетик)

    Пишем php код, нужно написать несколько функций (отправка, получение, удаление, получение токена)
    Вот пример:
    //функция Отправки СМС
    function send($sms_phone, $sms_message){
      $xml = auth();
      $options = array(
        CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
        CURLOPT_USERPWD => 'admin:34543sdd4!@0',
        CURLOPT_URL => 'https://modem.ВАШЕ_ИМЯ.keenetic.link/api/sms/send-sms',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_USERAGENT => 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',
        CURLOPT_HTTPHEADER => array("X-Requested-With: XMLHttpRequest",'Cookie:'. $xml->SesInfo,'__RequestVerificationToken:'. $xml->TokInfo,'"Content-Type:application/x-www-form-urlencoded; charset=UTF-8"'),
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => "<request><Index>-1</Index><Phones><Phone>".$sms_phone."</Phone></Phones><Sca/><Content>".$sms_message."</Content><Length>5</Length><Reserved>1</Reserved><Date>".date("Y-m-d H:i:s")."</Date></request>"
      );
      $curl = curl_init();
      curl_setopt_array($curl, $options);
      curl_exec($curl);
      curl_close($curl);
    };


    И сама отправка:
    send($sms_phone, $sms_message);
    На сервере нужно делать проверку номера и спам-защиту:
    Проверка можно делать тут, включая ограничения по региону:
    rosreestr.subnets.ru/?get=num&num=79152000200
    --
    Тем самым ваш сайт может слать смс.

    Вы можете отправлять и получать СМС в телеграм/из телеграм.
    Ничего не платите, если не беспределите, не рассылаете рекламу и не превышаете лимиты

    Для клиентов, когда важно передать именное смс, а не циферное, использую www.smsimple.ru
    В среднем отправка 2,30 рубля
    Ответ написан
    Комментировать
  • Как передать динамический 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
    29а класс средней школы №7
    Как работает отправка СМС - сервер шлёт на смс-шлюз запрос. Значит, нужно, чтобы смс-шлюз принимал запросы только с ip адреса вашего сервера. Если смс-шлюз свой, то не вижу проблем, если не свой, то напишите провайдеру.
    массовый запрос на отправку смс на разные номера

    Устанавливать сессию, если большего одного запроса с одной сессии, то блокировать отправку с этой сессии.
    Если разные сессии, то ставить ограничения по ip на 5-60 минут. Не думаю, что с одного ip в течение часа кто то захочет воспользоваться вашим сервисом.
    К тому же я бы приделал ограничение по Гео - rosreestr.subnets.ru/?get=num&num=79154610100
    Второй момент - проводить смс регистрацию, после подтверждения email.
    Ну, и добавить третью версию капчи от гугл, для надежности.
    Ответ написан
  • Как сделать альтернативный ЧПУ умного фильтра?

    @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 комментарий
  • Можно ли использовать bluetooth-гарнитуру как петличный микрофон?

    @anton99zel
    29а класс средней школы №7
    Слышал, что гарнитуры не подходят в качестве радиопетли. Но не понимаю почему. Может быть какие-то подходят.

    Потому, что не все телефоны умеют писать видео со звуком, источником которым является Блютуз!!!
    Rode SmartLav+

    Шикарно!
    сможет ли он вырезать ненужные куски из видео и наложить титры.

    До свидания!
    Ответ написан
  • Как удалить дубли со странным url в битрикс?

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

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

    @anton99zel
    29а класс средней школы №7
    Хм...вариантов так то масса
    1. Купить виртуальный номер (пользоваться им как на смарфтоне (через фирменное приложение или acrobits), так и на компьютере (ПО или WebRTC).
    Сделал скриншот - звоню прям из браузера
    spoiler
    5f352fe801375090208157.png

    2. Если у вас есть мобильный номер, то его можно подвязать к виртуальной атс (работает только с мегафоном по sip-протоколу) и пользоваться также как в п.1.
    Либо без использования виртуальной АТС - ставите ПО на комп PhonerLite или Bria Solo (X-Lite) и прописываете мегафоновские настройки sip (услуга мультифон).
    3. PS: При использовании sip телефонии можно и управление голосом прикрутить (на айфон команды siri, на андроиде наверняка тоже что то есть + телеграм (который на сервер шлет команды для набора номера (обратный звонок)).

    Если исхитрится и погрузиться в тему, то вообще ничего платить не придется (только из пакета минуты будут тратиться). Рекламировать не буду, думаю на скриншоте понятно - какой вам сайт нужно посетить.

    ЗЫ2:
    Блютуз гарнитура + таймвьюер для андроид, не?
    Ответ написан
    Комментировать
  • Как лучше продвинуть сайт?

    @anton99zel
    29а класс средней школы №7
    Как лучше продвинуть сайт?

    забыть про сайт и выкладывать свои сумки на маркетплейсах, потому что в 2020 году работает только вбухивание денег в рекламу на яндексе
    Ответ написан
    Комментировать