Техподдержка сайтов
+7 (904) 589-06-04
+7 (904) 589-06-04
telegram @sng24
MAX
info@sng-it.ru
ПРОГРАММИСТ 1С-БИТРИКС
ПРОГРАММИСТ 1С-БИТРИКС
разработка · доработка · техподдержка
  • О себе
  • Услуги
    Обновление сайтов на 1С-БитриксPHP 8.2+, MySQL 8, ядро и модули›Поиск и удаление вирусовПроверка, очистка и защита сайта›Создание сайтовРазработка сайтов под задачи бизнеса›Интеграция сайта с 1СОбмен товарами, остатками и заказами›Композитный сайт›Внутренняя оптимизация сайтаТехническое SEO и оптимизация›Доработка сайтовНовые функции, интеграции, нестандартные решения›Импорт каталога из файла поставщикаИмпорт и обновление товарных данных›Перенос сайта на 1С БитриксМиграция сайта на 1С-Битрикс›Парсинг контентаСбор и импорт данных›Установка готового сайтаУстановка и настройка готового решения›Купить лицензию 1С Битрикс›Битрикс 24CRM и автоматизация бизнеса›Выгрузка товаров в Яндекс.Маркет›Настройка служб доставкиИнтеграция служб доставки›Интеграция с соцсетями›Заказ на Маркете›Перевод сайта на https›Сопровождение сайтов на 1С БитриксОбслуживание и развитие сайтов›Настройка платежных системПодключение и настройка оплаты›
    Все услуги →
  • Портфолио
  • Готовые сайты
    Недвижимость›Медицина›Ресторанный бизнес›Автомобили и автозапчасти›Бухгалтерские и юридические услуги›Государство›Детские товары›Красота и здоровье›Мебель, интерьер, декор›Образование›Одежда и обувь›Подарки и сувениры›Продукты питания›Спорт, туризм и отдых›Строительство, ремонт, инструменты›Товары для животных›ТСЖ, ЖСК›Украшения, аксессуары, подарки›Электроника и бытовая техника›Универсальные›
    Все готовые сайты →
  • 1С Битрикс
    Старт (7 100 ₽)›Стандарт (20 500 ₽)›Малый бизнес (47 000 ₽)›Бизнес (96 500 ₽)›Интернет-магазин + CRM (109 000 ₽)›Продление лицензии›Сравнить редакции›
  • CRM
  • Контакты
ПРОГРАММИСТ 1С-БИТРИКС
ПРОГРАММИСТ 1С-БИТРИКС
О себе
Услуги
Портфолио
Готовые сайты
1С Битрикс
CRM
Контакты
ПРОГРАММИСТ 1С-БИТРИКС
ПРОГРАММИСТ
1С-БИТРИКС
  • Главная
  • О себе
  • Услуги
    • Назад
    • Услуги
    • Обновление сайтов на 1С-Битрикс
    • Поиск и удаление вирусов
    • Создание сайтов
    • Интеграция сайта с 1С
    • Композитный сайт
    • Внутренняя оптимизация сайта
    • Доработка сайтов
    • Импорт каталога из файла поставщика
    • Перенос сайта на 1С Битрикс
    • Парсинг контента
    • Установка готового сайта
    • Купить лицензию 1С Битрикс
    • Битрикс 24
    • Выгрузка товаров в Яндекс.Маркет
    • Настройка служб доставки
    • Интеграция с соцсетями
    • Заказ на Маркете
    • Перевод сайта на https
    • Сопровождение сайтов на 1С Битрикс
    • Настройка платежных систем
  • Портфолио
  • Готовые сайты
    • Назад
    • Готовые сайты
    • Недвижимость
    • Медицина
    • Ресторанный бизнес
    • Автомобили и автозапчасти
    • Бухгалтерские и юридические услуги
    • Государство
    • Детские товары
    • Красота и здоровье
    • Мебель, интерьер, декор
    • Образование
    • Одежда и обувь
    • Подарки и сувениры
    • Продукты питания
    • Спорт, туризм и отдых
    • Строительство, ремонт, инструменты
    • Товары для животных
    • ТСЖ, ЖСК
    • Украшения, аксессуары, подарки
    • Электроника и бытовая техника
    • Универсальные
    • Разное
  • 1С Битрикс
    • Назад
    • 1С Битрикс
    • Старт (7 100 ₽)
    • Стандарт (20 500 ₽)
    • Малый бизнес (47 000 ₽)
    • Бизнес (96 500 ₽)
    • Интернет-магазин + CRM (109 000 ₽)
    • Продление лицензии
    • Сравнить редакции
  • CRM
  • Контакты
  • Личный кабинет
  • +7 (904) 589-06-04
Будьте на связи
info@sng-it.ru
  • Вконтакте
  • YouTube

Кастомизируем календарь в битриксе

  • Главная
  • ❶ Блог
  • ❷ Кастомизируем календарь в битриксе
calendar.png В оформлении заказа интернет-магазина заполняется свойство "Дата доставки", в нем пользователь выбирает день доставки товара. Клиенты ошибались в выборе дня, могли указать прошедшую дату, поэтому владелец интернет-магазина принял решение ограничить интервал выбора возможных дат доставки, а именно в течении 7 дней начиная с текущего дня.
Задача:

В оформлении заказа sale.order.ajax у свойства типа дата добавить ограничение по выбору дня, чтобы можно было выбрать только из ближайших 7 дней начиная с текущего.

    Разделим задачу на две подзадачи:
  • Создадим обработчик выбора даты. Если пользователь выбирает день вне интервала - сбрасывается значение.
  • Визуально выделим возможные для выбора даты, добавив им класс.
Решение:

В шаблоне компонента sale.order.ajax находим файл order_ajax.js, в нем метод alterDateProperty. В данном методе реализован показ календаря для свойства заказа типа дата.
По клику на иконку рядом с input появляется календарь, за показ отвечает метод :

BX.calendar({
	node: parentNode.querySelector('.input-group-append'),
	field: parentNode.querySelector('input[type=text]').name,
	form: '',
	bTime: settings.TIME === 'Y',
	bHideTime: false
});
У BX.calendar есть параметр callback_after, вызывается после выбора даты, его и будем использовать для ограничения выбора даты.

В результате BX.calendar выглядит так:

BX.calendar({
	node: parentNode.querySelector('.input-group-append'),
	field: parentNode.querySelector('input[type=text]').name,
	form: '',
	bTime: settings.TIME === 'Y',
	bHideTime: false,
	callback_after: function(arDay) 
	{
		var currentDate = new Date();
		var d_current =  currentDate.getTime() / 1000; // текущая дата в секундах
		var d_select =  arRights.getTime() / 1000; // выбранная дата в секундах

		if ((Number(d_select - d_current)/(24*3600)+1)<0 ||  Number(Number(d_select - d_current)/(24*3600))>6)  // определим интервал 7 дней за пределами которого будет появляться ошибка
		{
			alert('Доставка в течение 7 дней начиная с сегодняшнего дня');
			BX.adjust(parentNode.querySelector('input[type=text]'), {
				props: {
					value: ''
				}
			});
		}
		else 
		{		
         // если дата в заданном интервале, то устанавливаем значение из календаря в input свойства заказа
			BX.adjust(parentNode.querySelector('input[type=text]'), {
				rops: {
					value: BX.date.format("d.m.Y", arRights)
				}
			});
		}                         
	}					
});



Чтобы стилизовать календарь, добавим после кода показа календаря:

var el = $('[id ^= "calendar_popup_"]');
var links = el.find(".bx-calendar-cell");
var currentDate = new Date();

for (var i =0; i < links.length; i++)
{
	var itemDate = links[i].attributes['data-date'].value;
	var d = currentDate.valueOf();
	var g = links[i].innerHTML;
	if ((itemDate - currentDate+24*60*60*1000) >= 0 && itemDate - currentDate < 6*24*60*60*1000) {
		$('[data-date="' + itemDate +'"]').addClass("weight700"); 
	}
}

14.12.2022

Семен Голиков.


Получите консультацию специалиста
Семен Голиков
Семен Голиков
telegram @sng24
Cертифицированный программист 1С Битрикс

У меня Вы можете заказать программные работы или проконсультироваться по сайту.

C 2010 года разрабатываю и поддерживаю сайты на 1С Битрикс. Являюсь Золотым партнером компании 1С Битрикс и имею компетенции: Интеграция с 1С, Композитный сайт, Битрикс24, а также все сертификаты специалиста.

Золотой партнер компании 1С БитриксКомпетенция партнера - Интеграция с 1СКомпетенция партнера - Композитный сайтКомпетенция партнера - Битрикс 24Участник программы качества внедрений


info@sng-it.ru
+7 (904) 589-06-04

Поделиться:
Назад к списку
  • Услуги
  • Обновление сайтов на 1С-Битрикс
  • Поиск и удаление вирусов
  • Интеграция сайта с 1С
  • Создание сайтов
  • Композитный сайт
  • Внутренняя оптимизация сайта
    • Доработка сайтов
    • Импорт каталога из файла поставщика
    • Парсинг контента
    • Перенос сайта на 1С Битрикс
    • Установка готового сайта
    • Купить лицензию 1С Битрикс
      • Битрикс 24
        • Выгрузка товаров в Яндекс.Маркет
        • Заказ на Маркете
        • Интеграция с соцсетями
        • Настройка служб доставки
        • Перевод сайта на https
        • Сопровождение сайтов на 1С Битрикс
        • Настройка платежных систем
        Аудит сайта
        Записаться на техподдержку
        Читайте также
        Переход 1С-Битрикс на PHP 8.2 и MySQL 8 в 2026 году Переход 1С-Битрикс на PHP 8.2 и MySQL 8 в 2026 году Как перенести видео с Youtube на Rutube или Vkontakte Как перенести видео с Youtube на Rutube или Vkontakte Проблема регистрации ботов на сайте Проблема регистрации ботов на сайте Подключаем Jivo Chat на сайт Подключаем Jivo Chat на сайт Модифицируем фасету для ускорения умного фильтра Модифицируем фасету для ускорения умного фильтра

        Программист 1С-Битрикс — Семён Голиков
        Программист 1С-Битрикс
        разработка · доработка · техподдержка
        Работаю с 1С-Битрикс с 2010 года
        Есть задача по 1С-Битрикс?
        Выберите удобное время в календаре техподдержки.
        Выбрать времяНаписать в Telegram
        Услуги
        Доработка сайтовСопровождение сайтовОбновление 1С-БитриксПоиск и удаление вирусовИнтеграция с 1СХостинг для битрикса
        Проекты и продукты
        ПортфолиоГотовые сайтыЛицензии 1С-БитриксБитрикс24Отзывы
        Материалы
        БлогСниппетыВидеоурокиОптимизация сайтаАкции
        Связаться со мной
        +7 (904) 589-06-04Позвонитьinfo@sng-it.ruНаписать на e-mail
        Telegram M MAX
        Обычно отвечаю в течение дня
        © 2010-2026 Семён Голиков · программист 1С-Битрикс
        Политика конфиденциальностиОбработка персональных данныхКарта сайта
        VK
        Спасибо за заявку!
        Мы свяжемся с Вами в ближайшее
        время и ответим на все вопросы.
        Заполните форму и отправьте
        заявку на консультацию!