Назад

Как в битрикс на странице оформления заказа "sale.order.ajax", раскрыть все блоки

Главная
Блог
Как в битрикс на странице оформления заказа "sale.order.ajax", раскрыть все блоки

Стандартный компонент sale.order.ajax в Bitrix CMS использует пошаговое оформление заказа, где пользователь последовательно заполняет информацию. Однако иногда требуется отобразить все поля сразу — например, для удобства редактирования или адаптации под мобильные устройства.

В этой статье разберём, как:
✔ Раскрыть все блоки (доставка, оплата, пользовательские данные)
✔ Убрать лишние кнопки ("Далее", "Назад", "Изменить")
✔ Оптимизировать UX (адаптация, валидация, анимации)

1. Основные изменения в order_ajax.js

1.1. Разрешаем редактирование всех блоков

В файле order_ajax.js найдите код, отвечающий за скрытие блоков, и закомментируйте его:

/* 
if (this.activeSectionId !== this.regionBlockNode.id) 
  this.editFadeRegionContent(this.regionBlockNode.querySelector('.bx-soa-section-content')); 
if (this.activeSectionId != this.propsBlockNode.id) 
  this.editFadePropsContent(this.propsBlockNode.querySelector('.bx-soa-section-content')); 
*/

Что это даёт?

  • Поля "Регион" и "Пользователь" будут доступны для редактирования сразу.

1.2. Убираем кнопки "Далее" и "Назад"

Найдите блок с кнопками навигации и закомментируйте его:

/* 
node.appendChild( 
  BX.create('DIV', { 
    props: {className: 'row bx-soa-more'}, 
    children: [ 
      BX.create('DIV', { 
        props: {className: 'bx-soa-more-btn col-xs-12'}, 
        children: buttons 
      }) 
    ] 
  }) 
); 
*/

Зачем это нужно?

  • Упрощает интерфейс, если шаги не требуются.

1.3. Принудительно раскрываем все секции

Замените условие проверки активности секции:

// Было:  
var active = section.id == this.activeSectionId;  

// Стало:  
var active = true;  

Результат:

  • Все блоки (доставка, оплата, свойства) будут развёрнуты сразу.

1.4. Отключаем клики по заголовкам

Удалите обработчики событий для заголовков:

/* 
BX.unbindAll(titleNode); 
if (this.result.SHOW_AUTH) { 
  BX.bind(titleNode, 'click', BX.delegate(function(){ 
    this.animateScrollTo(this.authBlockNode); 
    this.addAnimationEffect(this.authBlockNode, 'bx-step-good'); 
  }, this)); 
} else { 
  BX.bind(titleNode, 'click', BX.proxy(this.showByClick, this)); 
  editButton = titleNode.querySelector('.bx-soa-editstep'); 
  editButton && BX.bind(editButton, 'click', BX.proxy(this.showByClick, this)); 
} 
*/

Почему это важно?

  • Пользователь не сможет случайно свернуть блоки.

1.5. Удаляем кнопки "Изменить"

Добавьте в конец функции editOrder:

var editSteps = this.orderBlockNode.querySelectorAll('.bx-soa-editstep'), i;  
for (i in editSteps) {  
  if (editSteps.hasOwnProperty(i)) {  
    BX.remove(editSteps[i]);  
  }  
}  

Эффект:

  • Чистый интерфейс без лишних элементов.

2. Дополнительные улучшения

2.1. Адаптивный дизайн

Добавьте в CSS:

@media (max-width: 768px) {  
  .bx-soa-section {  
    margin-bottom: 15px;  
    padding: 10px;  
  }  
}  

Зачем?

  • Лучшее отображение на мобильных устройствах.

2.2. Плавное раскрытие блоков

Добавьте анимацию:

BX.animate({  
  node: sectionNode,  
  duration: 500,  
  start: { height: 0 },  
  finish: { height: sectionNode.scrollHeight }  
});  

Польза:

  • Более плавный UX.

2.3. Валидация формы

Проверяем поля перед отправкой:

BX.addCustomEvent('onAjaxSuccess', function() {  
  if (!validateForm()) {  
    BX.onCustomEvent('onAjaxFailure');  
  }  
});  

Важно:

  • Предотвращает отправку неверных данных.

3. Альтернативные методы

3.1. Через CSS

Можно просто принудительно показать блоки:

.bx-soa-section-content {  
  display: block !important;  
  height: auto !important;  
  opacity: 1 !important;  
}  

3.2. Через события Bitrix

BX.addCustomEvent('onBeforeOrderAjaxInitialize', function(ajax) {  
  ajax.params.INITIALIZE = 'Y';  
});  

Заключение

Теперь у вас есть:

  • Полностью раскрытые блоки оформления заказа
  • Упрощённый интерфейс без лишних кнопок
  • Адаптивный и плавный UX

Рекомендация: Перед внедрением протестируйте изменения на тестовой версии сайта.

Документация Bitrix:

Готово! Ваша форма заказа теперь удобнее для пользователей.

Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Читайте по теме
Все статьи
Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Все статьи