Fullcalendar作为Drupal商业结账的一部分

Fil*_*tis 6 drupal drupal-7 drupal-commerce

我正在使用Commerce模块套件在Drupal 7中建立一个电子商店.通过商店,每天提供物流服务.

结账过程的一部分是向用户显示具有服务可用性的日历.应显示服务可用的日期,并且用户应该能够在结帐过程中选择一天并转到下一个结帐屏幕.

我想使用Fullcalendar脚本来显示用户的每日可用性:

http://arshaw.com/fullcalendar/

drupal中有一个相关的插件:

https://drupal.org/project/fullcalendar

我能够在我的网站上显示正常的完整日历页面.我真正陷入困境的部分是如何在结帐过程中创建fullcalendar窗格,并将用户选择存储在订单中.

我已尝试使用Commerce extra panes模块添加日历:

https://drupal.org/project/commerce_extra_panes

但是我没有成功.我无法想出一种将fullcalendar块显示为窗格的方法.

我已经阅读了Drupal commerce,fullcalendar模块和商业额外窗格模块的文档,但我仍然无法弄清楚如何将fullcalendar显示为窗格.我也尝试过创建自定义模块,但我无法弄清楚如何以编程方式输出fullcalendar.

有没有人这样做过?有没有办法通过这些模块将这个功能添加到结账流程,还是我应该自己从头开始编写所有这些功能?

Fil*_*tis 4

我坐下来又看了一遍,找到了实现这个的方法。

起初,我尝试使用 fullcalendar Drupal 插件,但事实证明,对于此特定功能而言,它不必要地复杂,而且不太清楚如何将 fullcalendar 插件的输出添加到窗格中。在这种情况下,商务附加窗格也没有那么有用。

这就是我所做的:

1)我创建了一个模块,在其中设置了自定义窗格。这是设置商务结账窗格的模块部分:

function custom_checkout_commerce_checkout_pane_info() {
  $panes = array(
    'custom_checkout_date' => array(
        'title'  => t('Select a date'),
        'base'   => 'custom_checkout_date_pane',
        'page'   => 'route_date',   // default checkout page
        'weight' => -5,
        'file'   => 'includes/pane_route_date.inc'  // Form functions
    )
  );

  return $panes;
}
Run Code Online (Sandbox Code Playgroud)

以下是窗格本身包含的内容:

function custom_checkout_route_date_pane_checkout_form($form, &$form_state, $checkout_pane, $order) {
  $pane_form['route_calendar'] = array(
    '#type' => 'container',
    '#id'   => 'route_calendar'
  );

  $pane_form['selected_date'] = array(
    '#type' => 'hidden',
    '#id'   => 'selected_date'
  );

  return $pane_form;
}
Run Code Online (Sandbox Code Playgroud)

隐藏字段“selected_date”存储日历的结果,然后将其添加到订单中。

然后,我将 fullcalendar 添加到 Drupal 库文件夹,并使用drupal_add_js将其添加到放置 fullcalendar 窗格的页面。

然后,我创建了一个 AJAX 回调页面,用于返回与客户订单中给出的参数相匹配的可用日期。

然后,我通过重写 Fullcalendar eventClick回调为每个事件添加了一个单击处理程序。因此,当用户单击某个事件时,它会在隐藏字段中设置事件日期并提交当前的商业结账窗格,然后继续下一个。

因此,我终于找到了该怎么做,但这需要大量的摆弄,而且我所做的很多部分都没有很好地记录下来,或者没有任何好的例子可以遵循:(

不管怎样,这个问题现在已经解决了,我希望这可以帮助任何试图解决 Drupal commerce 结帐部分相同(或类似)问题的人。