La guía paso a paso o código que verás en este artículo es la resolución más fácil y efectiva que encontramos a tus dudas o problema.
Solución:
Puede pasar algunas opciones de selector de fecha de php al elemento date_popup a través de ‘#datepicker_options’ key:
t('Pick the desired date'),
'#type' => 'date_popup',
'#datepicker_options' => array(
'minDate' => 0,
),
);
Con este método puedes pasar casi cualquier opción menos aquellas que aceptan una función como valor, como beforeShowDay
el necesario para restringir fines de semana o días festivos según la respuesta a la que hace referencia Nikit: https://stackoverflow.com/questions/501943/can-the-jquery-ui-datepicker-be-made-to-disable-saturdays-and -domingos-y-festivos
Por lo tanto, se requiere javascript. Primero debe incluir un archivo js personalizado de su código de módulo:
y proporcionar algo de código en FOO.js
para ampliar la configuración establecida por el módulo date_popup con nuestras propias opciones.
Aquí hay un ejemplo que agrega la opción básica para deshabilitar los fines de semana para todos los widgets de selección de fechas en la página:
(function ($)
Drupal.behaviors.FOO =
attach: function (context)
for (var id in Drupal.settings.datePopup)
Drupal.settings.datePopup[id].settings.beforeShowDay = $.datepicker.noWeekends;
;
)(jQuery);
Extender a vacaciones se deja como ejercicio al lector 🙂
Nota: las tres apariciones de FOO
en mis ejemplos no necesita ser el mismo literal, es decir: puede proporcionar un BAZ
comportamiento en BAR.js
de FOO.module
.
Actualización: para extender lo anterior para la disponibilidad de días personalizados, solo agregue una función que regrese true/false para el día recibido por parámetros.
(function ($)
Drupal.behaviors.FOO =
attach: function (context)
for (var id in Drupal.settings.datePopup)
Drupal.settings.datePopup[id].settings.beforeShowDay = checkDate;
;
function checkDate(date)
if ((date.getDate() % 2) == 0)
return [false, 'Even days not available'];
else
return [true, 'Odd days are fine'];
)(jQuery);
Puede encontrar un ejemplo más completo en el módulo Restricciones de fecha.