Сообщения

Сообщения за 2017

Новый шаблон sale.order.ajax: кастомизация

Изображение
На реализацию этого функционала ушло порядка 30 часов рабочего времени (плюс время на самообразование). За это время было отправлено 18 коммитов, написано 371 строк кода и осуществлено несколько попыток виртуального суицида :) Основная задача Создать группу свойств "Параметры доставки", которая будет зависеть от выбора типа доставки. Для курьера это "Адрес доставки", для "Транспортной компании" это выбор ТК из выпадающего списка, для доставки "Другая транспортная компания" - тоже текстовое поле (как и адрес доставки). Все эти поля являются обязательными, и отображаться должны не в блоке "Пользователь", а в блоке с доставками. В новом шаблоне sale.order.ajax перенести поля в другой блок не так просто, как кажется на первый взгляд, а информации на эту тему буквально крупицы.

Новый шаблон sale.order.ajax: кастомизация

Изображение
На реализацию этого функционала ушло порядка 30 часов рабочего времени (плюс время на самообразование). За это время было отправлено 18 коммитов, написано 371 строк кода и осуществлено несколько попыток виртуального суицида :) Основная задача Создать группу свойств "Параметры доставки", которая будет зависеть от выбора типа доставки. Для курьера это "Адрес доставки", для "Транспортной компании" это выбор ТК из выпадающего списка, для доставки "Другая транспортная компания" - тоже текстовое поле (как и адрес доставки). Все эти поля являются обязательными, и отображаться должны не в блоке "Пользователь", а в блоке с доставками. В новом шаблоне sale.order.ajax перенести поля в другой блок не так просто, как кажется на первый взгляд, а информации на эту тему буквально крупицы.

Определить в битриксе сумму заказов клиента, включающую текущую корзину

В битриксе есть механизм накопительных скидок. Там можно настроить, за какой период считать сумму оплаченных заказов клиента (например, за последние 2 месяца). В данном случае понадобилось учитывать не только уже сделанные и оплаченные заказы, но и текущую корзину пользователя (чем больше положил в корзину, тем больше становится скидка).

Посчитать сумму оплаченных заказов пользователя в битриксе

Для этого не надо использовать никаких запросов типа GetList. Достаточно заглянуть в АПИ:  http://bxapi.ru/src/?module_id=sale&name=CumulativeCalculator%3A%3Acalculate Вы можете вызвать этот метод там, где вам нужно: <? global $USER ; $calculator = new \Bitrix\Sale\Discount\CumulativeCalculator( $USER ->GetID(), SITE_ID ); $sum = $calculator ->calculate(); echo '<pre>Сумма заказов пользователя: ' ; print_r ( $sum ); echo '</pre>' ; ?> UPD: более расширенное рассмотрение частного случая в следующей заметке:  https://bitrixoved.blogspot.ru/2017/11/blog-post_23.html  

Если при полной выгрузке из 1С в битрикс товары и разделы приходят неактивными

Есть такая беда. Москвичи и питерцы с ней, скорее всего, не сталкиваются :) На разгадывание этой загадки у нас ушло 8,5 часов чистого рабочего времени. Небольшой ликбез о том, что происходит при полной выгрузке. Есть компонент, который отвечает за выгрузку. Он лежит по адресу: /bitrix/components/bitrix/catalog.import.1c/component.php В 607 строке (у вас может быть другая строка) есть условие: elseif ( $_GET [ "mode" ]== "deactivate" ) И дальше начинается магия. Во время выгрузки 1с посылает GET-параметр, в котором указано время начала выгрузки. После полной выгрузки разделов и элементов инфоблока происходит проверка. Если время обновления товара/раздела в битриксе меньше, чем время начала выгрузки - значит, это старый элемент, и тогда происходит... $section ->Update( $arSection [ "ID" ], array ( "ACTIVE" => "N" ));
Изображение
Что делать, если свойств у товаров в магазине битрикс становится всё больше и больше? При редактировании элементов свойства отображаются огромным списком, большинство из пунктов которого даже неактуально для данного товара. В этом видео я показываю, как разделить свойства товаров в битриксе по разделам. Таким образом, в форме редактирования элементов у вас будут показываться только свойства, актуальные для товаров этого раздела. Советы по эффективной настройке интернет-магазина на битрикс

Советы по Битриксу: мой канал на youTube

Изображение
Часто заказчикам, работающим с интернет-магазином на Битриксе, требуется не столько помощь программиста, сколько вовремя данный совет. Уже не первый раз я записываю подобные видеосоветы для контент-менеджеров на Битриксе, поэтому решила делиться ими на youtube. Там будут частозадаваемые вопросы, с которыми сталкиваются реальные клиенты в реальных магазинах ) Подписывайтесь на канал: Видеосоветы по настройке Битрикс Первое видео о настройке умного фильтра в Битриксе :

Многосайтовость Битрикс на хостинге Beget

Не всегда получается сделать ее по этой инструкции: https://dev.1c-bitrix.ru/community/blogs/howto/336.php Проблемы начинаются с первого пункта: скрипт просто не видит папку битрикс соседнего сайта, чтобы сделать на нее ссылку. Приходится подключаться по SSH. Заходим в папку "второго" сайта, на котором нет битрикса (пустой). ln -s $HOME/ имя_первого_сайта/public_html /bitrix/ . ln -s $HOME/ имя_первого_сайта/public_html /upload/ . Далее в файловом менеджере хостинга открываем обе эти папки (на первом сайте) для доступа всего аккаунта. Копируем из первого сайта во второй .access и index.php. ( В первом файле  чтобы был доступ на чтение корневого раздела, при необходимости можно вручную отредактировать его, удалив всё кроме  $PERM["/"]["*"]="R"; ) - цитата из документации битрикса. Еще был косяк с версией php - она должна быть одинаковой на обоих сайтах. А также если один из сайтов - это поддомен, у него сортировка должна быть меньше, че

Вывод пользовательского свойства раздела в компонентах catalog.section и news.list

У элементов инфоблоков легко можно добавлять дополнительные свойства и при необходимости выводить их. Иногда подобная задача возникает для разделов. Но там этот функционал несколько ограничен: во-первых, типы полей не так разнообразны, а во-вторых, подобраться к ним не так уж и легко (это уже не ограничится только включением доступности свойства в настройках компонента). Например, нам необходимо добавлять краткое описание для "Описания раздела" (которое будет выводиться отдельно, в сайдбаре). //задаем параметры фильтра - ID инфоблока, а также выбираем id выбранного раздела (без ID инфоблока работать не будет!) $arF=Array( "IBLOCK_ID"=>"8", "ID"=>$arResult["ID"] //примечание: в компоненте news.list это будет $arResult['SECTION']['PATH'][0]['ID'] ); $db_list = CIBlockSection::GetList(Array("SORT"=>"­­ASC"), $arF, false, array("UF_*")); //делаем выборку пользо

Передача параметров цели Яндекс.метрике

Не совсем про битрикс, но пусть тоже будет здесь <?$uri=$_SERVER['REQUEST_URI'];?> <script> function goal_ym_call() {   var uri = '<?php echo $uri;?>';   var yaParams = {url: uri};   yaCounter38030175.reachGoal('call_me_target', yaParams);   return true; }; </script> onClick="goal_ym_call()"