Drupal commerce在modal中显示签出

Drupal commerce在modal中显示签出,drupal,modal-dialog,checkout,commerce,drupal-ctools,Drupal,Modal Dialog,Checkout,Commerce,Drupal Ctools,形势,;尝试在模式窗口中包含签出过程。 用户单击“添加到购物车”链接,一个模式窗口(或者在同一窗口中将ajax加载到div中)用于显示签出表单。现在,我还不清楚“Drupal方式”如何与commerce和ctools正常工作 Ctools及其API是当前的选择。我都愿意考虑CCTOLS的替代方案。到目前为止,我无法在ctools模式中包含结帐表单。ctools代码适用于用户注册、登录等表单 基本上,我们的签出配置在签出窗格中只包含两个复选框。 复选框-字段包含在“商业订单字段组窗格”模块的签出中

形势,;尝试在模式窗口中包含签出过程。 用户单击“添加到购物车”链接,一个模式窗口(或者在同一窗口中将ajax加载到div中)用于显示签出表单。现在,我还不清楚“Drupal方式”如何与commerce和ctools正常工作

Ctools及其API是当前的选择。我都愿意考虑CCTOLS的替代方案。到目前为止,我无法在ctools模式中包含结帐表单。ctools代码适用于用户注册、登录等表单

基本上,我们的签出配置在签出窗格中只包含两个复选框。 复选框-字段包含在“商业订单字段组窗格”模块的签出中。 因此,用户基本上只有一个步骤来完成结账过程

根据用户数据和提交的复选框值,我们使用第三方支付网关进行重定向或内部支付处理,我一直在使用该网关构建一个自定义支付模块,该模块在商业中运行良好

回到模态。

我根据教程和ctools ajax示例构建了一个回调函数。。我尝试了几种组合,以在模式中包含并呈现签出表单,但没有成功。我想知道问题是否出在commerce签出过程中,或者ctools函数无法收集/呈现指定的签出表单。或者可能只是因为commerce/checkout API没有正确地与ctools函数一起使用。我还不了解商业的深层次,所以内部结账程序仍然有点不清楚

我现在不包括这里的所有代码组合,只想指出考虑过的备选方案/方向:

<?php
    $checkoutform = ctools_modal_form_wrapper('commerce_checkout_form_checkout', $form_state);
    print ajax_render($checkoutform);
?>
<?php
    $panes_array = commerce_checkout_panes($conditions = array('enabled' => TRUE), FALSE);
?>
<?php
    drupal_get_form('commerce_checkout_form_' . $checkout_page['page_id'], $order, $checkout_page);
?>
-以编程方式将签出表单包含在ctools中:

<?php
    $checkoutform = ctools_modal_form_wrapper('commerce_checkout_form_checkout', $form_state);
    print ajax_render($checkoutform);
?>
<?php
    $panes_array = commerce_checkout_panes($conditions = array('enabled' => TRUE), FALSE);
?>
<?php
    drupal_get_form('commerce_checkout_form_' . $checkout_page['page_id'], $order, $checkout_page);
?>

表单id是使用form_alter从默认签出页面表单捕获的。ctools\u modal\u form\u包装器-函数不返回有效的签出表单数组。怀疑ctools不支持开箱即用的商业结帐表单。我认为在函数调用返回完整的签出数组之前,$form_状态需要填充一些额外的数据?或者我们需要使用其他方法获取签出表单数组

-以编程方式包括启用的签出窗格,其中包括呈现的签出表单:

<?php
    $checkoutform = ctools_modal_form_wrapper('commerce_checkout_form_checkout', $form_state);
    print ajax_render($checkoutform);
?>
<?php
    $panes_array = commerce_checkout_panes($conditions = array('enabled' => TRUE), FALSE);
?>
<?php
    drupal_get_form('commerce_checkout_form_' . $checkout_page['page_id'], $order, $checkout_page);
?>

-在回调函数中以编程方式创建订单和结帐页面,并获取表单:

<?php
    $checkoutform = ctools_modal_form_wrapper('commerce_checkout_form_checkout', $form_state);
    print ajax_render($checkoutform);
?>
<?php
    $panes_array = commerce_checkout_panes($conditions = array('enabled' => TRUE), FALSE);
?>
<?php
    drupal_get_form('commerce_checkout_form_' . $checkout_page['page_id'], $order, $checkout_page);
?>

此表单调用是从commerce_checkout.pages.inc复制的。有了它,就有可能得到一个表单数组,看起来它可能有继续所需的数据。。 我尝试使用ajax_render()、ctools_modal_render()、ctools_modal_form_render()…渲染数组,结果要么是200 Http ajax错误,要么是空白表单(没有可见的html或字段),要么只是模式中的ajax加载程序gif循环

-使用自定义表单构建复选框并处理将提交数据转发给Commerce:

…因此,如果ctools拒绝使用它,我们就不需要包括实际的“商业结算”和“表单结算”

以编程方式包括签出页面(包括窗格/表单?):

<?php
    $checkoutform = ctools_modal_form_wrapper('commerce_checkout_form_checkout', $form_state);
    print ajax_render($checkoutform);
?>
<?php
    $panes_array = commerce_checkout_panes($conditions = array('enabled' => TRUE), FALSE);
?>
<?php
    drupal_get_form('commerce_checkout_form_' . $checkout_page['page_id'], $order, $checkout_page);
?>
使用commerce_checkout_pages()-函数和渲染函数。 当然,我们可以尝试在模式中打开默认的签出url,但这将在模式中包括整个DOM,这是我们不希望看到的

谢谢大家!!
-Jussi

我能想到的一个简单解决方案是使用该模块

试着让我们知道