คุณสามารถส่งตัวเลือก Datepickerจาก php ไปยังองค์ประกอบ date_popup ผ่านคีย์ '#datepicker_options':
<?php
$form['date'] = array(
  '#title' => t('Pick the desired date'),
  '#type' => 'date_popup',
  '#datepicker_options' => array(
    'minDate' => 0,
  ),
);
ด้วยวิธีนี้คุณสามารถส่งผ่านเกือบทุกตัวเลือก แต่ผู้ที่ยอมรับฟังก์ชั่นเป็นค่าเช่นเดียวbeforeShowDayกับที่จำเป็นในการ จำกัด วันหยุดสุดสัปดาห์หรือวันหยุดตามคำตอบที่อ้างอิงโดย Nikit: /programming/501943/can- ที่ jQuery-UI-datepicker กำลังจะทำเพื่อ disable-วันเสาร์และวันอาทิตย์และ holid
ดังนั้นจำเป็นต้องมีจาวาสคริปต์ ก่อนอื่นคุณต้องรวมไฟล์ js ที่กำหนดเองจากรหัสโมดูลของคุณ:
<?php
drupal_add_js(drupal_get_path('module', 'FOO') . '/FOO.js');
และระบุรหัสบางส่วนFOO.jsเพื่อขยายการตั้งค่าตามโมดูล date_popup ด้วยตัวเลือกของเราเอง
นี่คือตัวอย่างที่เพิ่มตัวเลือกพื้นฐานเพื่อปิดใช้งานวันหยุดสุดสัปดาห์สำหรับวิดเจ็ต datepicker ทั้งหมดในหน้า:
(function ($) {
Drupal.behaviors.FOO = {
  attach: function (context) {
    for (var id in Drupal.settings.datePopup) {
      Drupal.settings.datePopup[id].settings.beforeShowDay = $.datepicker.noWeekends;
    }
  }
};
})(jQuery);
การขยายไปยังวันหยุดเป็นกิจกรรมที่ผู้อ่าน :)
หมายเหตุ: สามปรากฏของFOOในตัวอย่างของฉันไม่จำเป็นต้องเป็นตัวอักษรเดียวกันเช่น: คุณสามารถให้BAZพฤติกรรมจากBAR.jsFOO.module
อัปเดต: เพื่อขยายเวลาด้านบนสำหรับความพร้อมใช้งานของวันที่กำหนดเองเพียงเพิ่มฟังก์ชันที่คืนค่าจริง / เท็จสำหรับวันที่ได้รับจากพารามิเตอร์
(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);
คุณสามารถค้นหาตัวอย่างที่สมบูรณ์มากขึ้นในโมดูลการจำกัด วันที่