'#datepicker_options'キーを介して、phpからdate_popup要素にいくつかのDatepickerオプションを渡すことができます。
<?php
$form['date'] = array(
'#title' => t('Pick the desired date'),
'#type' => 'date_popup',
'#datepicker_options' => array(
'minDate' => 0,
),
);
このメソッドを使用すると、ほぼすべてのオプションを渡すことができますがbeforeShowDay
、Nikitが参照する回答に従って週末または休日を制限するために必要なものとして、関数を値として受け入れるオプション:https ://stackoverflow.com/questions/501943/can- the-jquery-ui-datepicker-be-made-to-disable-saturdays-and-sundays-and-holid
したがって、JavaScriptが必要です。最初に、モジュールコードからカスタムjsファイルを含める必要があります。
<?php
drupal_add_js(drupal_get_path('module', 'FOO') . '/FOO.js');
そしてFOO.js
、date_popupモジュールによって設定された設定を独自のオプションで拡張するためのコードを提供します。
以下は、ページ内のすべての日付ピッカーウィジェットの週末を無効にする基本オプションを追加する例です。
(function ($) {
Drupal.behaviors.FOO = {
attach: function (context) {
for (var id in Drupal.settings.datePopup) {
Drupal.settings.datePopup[id].settings.beforeShowDay = $.datepicker.noWeekends;
}
}
};
})(jQuery);
休日への拡張は、読者への練習問題として残されています:)
注:FOO
私の例でのの3つの出現は、同じリテラルである必要はありません。つまりBAZ
、BAR.js
fromで動作を提供できますFOO.module
。
更新:上記のカスタム日の可用性を拡張するには、パラメーターで受け取った日のtrue / falseを返す関数を追加するだけです。
(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);
より完全な例については、日付制限モジュールを参照してください。