• Не отображаются свойства товара(материал и размер оба свойства типа Enum) в заказах административной панели Bitirx. Как сделать чтобы отобразились?

    nikolaevevge
    @nikolaevevge Автор вопроса
    Оказалось следующее:

    У меня в файле который принимал по ajax id товара и количество для добавления в корзину была самописная функция:

    function productAddToBasket($PRODUCT_ID=0,$QUANTITY=0) {
      return Add2BasketByProductID($PRODUCT_ID,$QUANTITY,array());
    }


    В случаи если не используется стандартный компонент для добавления в корзину галочка "Значение добавляется в корзину" бесполезна, то есть если Вы пишите свой вариант добавления в корзину на API то добавление свойств необходимо производить самостоятельно, и возможно это сделать и в функции Add2BasketByProductID(не смотря на то что она устаревшая), для этого передавать свойства требуется в третьем параметре.

    Моя ошибка была в том, что я не помещал свойства в ещё один массив, то есть 3-ий параметр должен выглядеть так: array(array("NAME"=>"Имя свойства","CODE"=>"test_code","VALUE"=>"Значение")) ну или несколько вложенных массивов внутри внешнего через запятую.

    То есть в моём случаи я поправил строчку:

    return Add2BasketByProductID($PRODUCT_ID,$QUANTITY,array());

    на строчку:

    return Add2BasketByProductID($PRODUCT_ID,$QUANTITY,array(array("NAME"=>"Имя свойства","CODE"=>"test_code","VALUE"=>"Значение")));

    То есть исправление потребовалось только в файле добавляющем товары в корзину. Файл же который из корзины формирует заказ я не трогал. В результате замены вышеуказанной строчки в админке получил следующее:

    5e21a7d7c8b43501761093.jpeg

    Методом о которым пишет Роман Грицук тоже возможно, например следующим кодом:

    $fields = array("PRODUCT_ID"=>$PRODUCT_ID,"QUANTITY"=>2,"PROPS"=>
       array(array("NAME"=>"Имя свойства","CODE"=>"test_code","VALUE"=>"Значение"))
    );
    $r = \Bitrix\Catalog\Product\Basket::addProduct($fields);


    Зачем в массиве свойств передаётся CODE не совсем понятно, при этом экспериментальным путём установлено что этот код не обязан совпадать с кодом указанным в свойствах инфоблока.

    Возможно кому то потребуется метод для получения свойств инфоблока у которых отмечена галочка "Значение добавляется в корзину"(информацию по этому поводу нашёл тут https://dev.1c-bitrix.ru/support/forum/forum48/top... )

    $IBlockId = 2;//В данном случаи передаю Id инфоблока торговых предложений
    $ee = \Bitrix\Catalog\Product\PropertyCatalogFeature::getBasketPropertyCodes($IBlockId);
    var_dump($ee);//возвращает:array(2) { [0]=> string(2) "11" [1]=> string(2) "42" } 11 и 42 это Id свойств торговых предложений отмеченных галочкой "Значение добавляется в корзину"


    Итого я переписал исходную функцию следующим образом(только учитывайте что у меня в ней перебираются только свойства типа список(ENUM), поскольку мне другие были не нужны):

    function productAddToBasket($PRODUCT_ID=0,$QUANTITY=0) {
        $TPIBlockId = 2;//Инфоблок торговых предложений(в данной задаче требуется только он, возможно в другой потребуется выбирать свойства из обоих инфоблоков)
        $propIds = \Bitrix\Catalog\Product\PropertyCatalogFeature::getBasketPropertyCodes($TPIBlockId);//Получаем Id свойств отмеченные галочкой "Значение добавляется в корзину"
    
        $dbProps = CIBlockElement::GetProperty($TPIBlockId,$PRODUCT_ID,array(),Array("ID"=>$propIds));
        $propsForBasketAr = array();
        while($oneProp = $dbProps->Fetch()) {
    //В следующей строчке условие которое выбирает значения только для ENUM свойств, если есть другие требуется дописать
          if (isset($oneProp["VALUE_ENUM"]) and $oneProp["VALUE_ENUM"] and isset($oneProp["NAME"]) and $oneProp["NAME"] and isset($oneProp["CODE"]) and $oneProp["CODE"]) {
            $propsForBasketAr[] = array("NAME"=>$oneProp["NAME"],"CODE"=>$oneProp["CODE"],"VALUE"=>$oneProp["VALUE_ENUM"]);
          }
        }
        return Add2BasketByProductID($PRODUCT_ID,$QUANTITY,$propsForBasketAr);
    }


    Есть ещё одно решение, которое предложил PetrPo. Подробности находятся в комментариях под его ответом. Если сделать как он написал результат будет таким:

    5e21b0c570092546639769.jpeg
    Ответ написан
    Комментировать
  • Влияет ли 301 редирект на позиции сайта?

    Нафиг он не нужен, если Вас только не смущает что в яндексе и google может задваиваться индекс(в индексе отдельно считаются страницы без www и с ним, иногда поисковик в последствии оставляет только один вариант)

    Более детальная инфа по ссылке - blog.ivru.net/?id=133

    Сейчас на том же сайте тестирую повлияет ли как либо редирект с http на https (ранее сайт позволял набирать адрес как угодно, при этом в индексе обоих поисковиков был только https, причем я их о этом не просил, они сами переиндексировали всё на https как только появился сертификат, касается и яндекса и google)
    SSL сертификат платный на 2 года(Sectigo Limited).
    Ответ написан
    Комментировать
  • Как происходит загрузка cms(framework) Joomla 3.9 по шагам? Какие SQL запосы и в какой последовательности выполняются и после загрузки каких файлов?

    nikolaevevge
    @nikolaevevge Автор вопроса
    Так какие файлы в какой момент загружаются я нашёл и SQL тоже. Эту инфу я опубликовал здесь - blog.ivru.net/?id=170 если кому то потребуется.

    Про Joomla Debug Console благодарю, не знал что такая штука есть. По крайней мере до 3-ей версии Joomla она не была менее информативной(или я не разобрался тогда).

    Надо будет попозже скрины опубликовать где она включается.

    Подожду может ещё кто что по теме напишет, пока не отмечаю решения.

    Установка PHP Xdebuger на виртуальные выделенный сервер в CentOs 7 x64(предварительно был настроен репозиторий на PHP 7.2, подробнее тут blog.ivru.net/?id=156 )
    5e09db8f49780758474027.jpeg

    Строчка которую просит Joomla в файле php.ini для того чтобы в профилировании показывать адреса файлов(а не только стек вызова классов). Я разместил прямо вверху файла php.ini, это не значит что и Вам нужно размещать так же.
    5e09dce8130b1421665618.jpeg
    Попозже как будет время ещё закину скрины включения отладки в Joomla
    Ответ написан
    Комментировать
  • Отправляется шаблон письма без картинок?

    Как вариант картинки добавить аттачем к письму и src прописывать на них.
    Хотя не помню проблем когда указывал адреса картинок как <img src="domen.ru/abc.jpg"> где src полный url до сайта где лежат картинки
    Ответ написан
    Комментировать
  • Как включить zip в php7 ispmgr?

    Для случая без панели в командной строке CentOs для версии PHP 7.2 выполните yum install php-pecl-zip
    Ответ написан
    Комментировать
  • Как подключть яндекс кассу к самописному сайту?

    Вот пример php кода а так же моменты которые нужно знать при написании системы приёма платежей через яндекс-кассу blog.ivru.net/?id=80
    Ответ написан
    Комментировать
  • Можно ли вычислить страну по айпи адресу без обращений к сторонним сервисам?

    Посмотрите эту библиотеку blog.ivru.net/?ip=82
    Ответ написан
    Комментировать
  • Определение города на сайте Wordpress и смена контента?

    Если нужно определять город по IP адресу посмотрите эту библиотеку - blog.ivru.net/?id=82
    Соответственно пишите условия в PHP если город такой то то такой то контент иначе другой.
    Библиотека подходит для Joomla, Bitrix, WordPress при этом логику по выводу контента Вы должны написать сами. Библиотека только скажет из какого города и региона пришёл посетитель Вашего сайта.
    Ответ написан
    Комментировать
  • Какой плагин использовать на вордпресс для определения геолокации?

    Библиотека для определения геоинформации для WordPress, Joomla и Bitrix(в битрикс уже есть и своя реализация) - blog.ivru.net/?id=82
    В библиотеке есть метод isSpb который определяет относится ли город определённый по IP к региону Санкт Петербург
    Делаете 2 аналогичных метода для Москвы и Чеченской республики, например isMsk и isCr

    далее в коде
    require_once "/путь_до_папки_с_библиотекой/nikolaevevgeGeoIp.php";
    if (nikolaevevgeGeoIp::isMsk) {
    // выводите нужный номер телефона
    } elseif (nikolaevevgeGeoIp::isCr) {
    // выводите нужный номер телефона
    } elseif {
    // выводите оба номера
    }
    Ответ написан
    Комментировать
  • Как обойти ошибку в ответе ipgeobase.ru?

    Посмотрите может эту библиотеку использовать: blog.ivru.net/?id=82
    Ответ написан
    Комментировать
  • GeoIp - как определить город посетителя?

    nikolaevevgeGeoIp: blog.ivru.net/?id=82
    Библиотека подходит для Joomla Wordpress Bitrix теоретически любой версии. CMS определяется автоматически.
    Ответ написан
    Комментировать
  • Интерактивная карта JQVMap. Как сделать подсветку нескольких регионов?

    Мой метод не претендует на то чтобы в библиотеке было объявлено официально что делать нужно именно так, тем не менее я так сделал:

    setTimeout(function (){
    $("#jqvmap1_iv").attr("fill","red");
    }, 1000);

    Создаём задержку в 1 секунду перед закраской Ивановской области на карте России(не легитимной). Далее изем элемент по Id = #jqvmap1_iv и устанавливаем атрибут fill в red(красный цвет заливки). Если без задержки то не выделяется из за асинхронной работы JavaScript, то есть к моменту когда производится попытка выделения карта ещё не успела сгенерироваться браузером. Думаю что у библиотеки есть стандартный метод выделения областей. Тоже бы узнал как именно предлагается это делать в официальной библиотеке.

    Так делал на карте только по России.

    То есть по коду в демке что прилагается к библиотеке выглядит так:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
      <head>
        <title>JQVMap - Russia Map</title>
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
    
        <link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
    
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
        <script type="text/javascript" src="../dist/jquery.vmap.js"></script>
        <script type="text/javascript" src="../dist/maps/jquery.vmap.russia.js" charset="utf-8"></script>
    
          <script>
          jQuery(document).ready(function () {
            jQuery('#vmap').vectorMap({
              map: 'russia_en',
              backgroundColor: 'blue',
              color: '#ffffff',
              hoverOpacity: 0.7,
              selectedColor: '#999999',
              enableZoom: true,
              showTooltip: true,
              scaleColors: ['#C8EEFF', '#006491'],
              normalizeFunction: 'polynomial'
            });
          });
    	  setTimeout(function (){$("#jqvmap1_iv").attr("fill","red");}, 1000);
        </script>
      </head>
      <body>
        <div id="vmap" style="width: 300px; height: 200px;"></div>
      </body>
    </html>
    Ответ написан
    Комментировать
  • Можно ли узнать IP посетителя с помощью JS?

    Внешний IP адрес в Интернет посетителя например на PHP можно получить из $_SERVER["REMOTE_ADDR"]
    Если речь про локальный адрес пользователя, то локальный адрес сети через которую пользователь выходит в интернет(это например VPN, pppoe или Ethernet соединение) можно определить на JavaScript пример скрипта тут: blog.ivru.net/?id=157
    Ответ написан
    Комментировать
  • Как узнать локальный IP адрес хоста, после трансляции адреса NAT?

    А я могу рассказать, поскольку некоторых пользователей которые здесь отписались конкурентами не считаю(нашли в чём конкурировать).
    Скрипт определения локального адреса доступен по ссылке https://blog.ivru.net/?id=157
    Работает на JavaScript + HTML5 + RTCPeerConnection применим для браузеров Firefox Chrome Opera версий, которые были актуальны на момент написания этого ответа(Firefox например 70-й).
    В Edge не определяется. Safari не пробовал, но в интернете пишут что Safari тоже не определяется.

    Так же могу добавить что локальный адрес подключения в VPN так же определяется.
    Ответ написан
    Комментировать
  • Зачем Google предлагает мне JPEG 2000, JPEG XR и WebP вместо JPEG и PNG и как оптимизировать изображение?

    Решил спросить что по вопросу думают в Bitrix (ссылка на топик в форуме https://dev.1c-bitrix.ru/community/forums/forum6/t... ответа пока не получил.

    Из перечисленных решений считаю оригинальным то что предложил Виталий с htaccess
    Ответ написан
    Комментировать
  • Для чего нужны Генераторы (yield) в php?

    Благодаря использованию генератора сохраняется состояние функции. Следующая итерация начинается с места окончания с теми же переменными с которыми завершилась предыдущая.
    По ссылке пример кода и сразу же результат выполнения(а так же информация что будет если использовать return в генераторе) blog.ivru.net/?id=145
    Ответ написан
  • Отправка почты в bitrix. Где искать этот файл?

    Бывает ищу в поиске "Отправка почты bitrix" и попадаю на эту страницу. Для тех кому нужно не для интернет-магазина, а просто настроить отправку через APi, создать почтовый шаблон и событие, вот информация: blog.ivru.net/admin/edit.php?id=69
    Ответ написан
    Комментировать
  • Перестала работать авторизация через соц.сети на 1C-Bitrix. Что делать?

    Я писал свой скрипт авторизации через ВКонтакте, Одноклассники, FaceBook если кому нужен: - доступен по ссылке: blog.ivru.net/?id=58
    Ответ написан
  • Как сделать, чтобы из json-массива создавался массив, а не объект?

    nikolaevevge
    @nikolaevevge Автор вопроса
    нашёл ответ:
    Создаём всё так же: $a = json_encode(array("a"=>"b","c"=>"d"));
    Назад в массив так json_decode($a,true);// то есть второй параметр устанавливаем в true
    Ответ написан
    Комментировать