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

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

Вывод пользовательского свойства раздела в компонентах 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_*")); //делаем выборку пользовательских свойств
while($ar_result = $db_list->Fetch())
    {
  $arR=$ar_result; //извлекаем
    }

//Выводим свойство раздела: $arR['UF_NAME'] - вместо UF_NAME - имя конкретного свойства
А если нам нужно вывести и описание раздела в компоненте catalog.section (который по дефолту выводит только список элементов этого раздела), используем такую простую строку:

Комментарии

Отправить комментарий

Популярные сообщения из этого блога

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

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