7

Drupal 7 で Commerce スイートのモジュールを使用して e ショップをセットアップしています。ショップを通じて、物流サービスが毎日提供されます。

チェックアウト プロセスの 1 つの部分は、サービスの空き状況を示すカレンダーをユーザーに表示することです。サービスが利用可能な日が表示され、ユーザーはチェックアウト プロセスの一部として日付を選択し、次のチェックアウト画面に移動できる必要があります。

毎日の空き状況をユーザーに表示するために、Fullcalendar スクリプトを使用したいと思います。

http://arshaw.com/fullcalendar/

drupal には関連するプラグインがあります。

https://drupal.org/project/fullcalendar

サイトに通常のフルカレンダー ページを表示できます。私が本当に立ち往生している部分は、チェックアウトプロセスの一部としてフルカレンダーペインを作成し、ユーザーの選択を注文に保存する方法です。

カレンダーを追加するためにコマース エクストラ ペイン モジュールを試しました。

https://drupal.org/project/commerce_extra_panes

しかし、私は成功していません。フルカレンダー ブロックをペインとして表示する方法がわかりません。

Drupal コマース、フルカレンダー モジュール、およびコマース エクストラ ペイン モジュールのドキュメントを読みましたが、フルカレンダーをペインとして表示する方法がまだわかりません。カスタムモジュールの作成も試みましたが、フルカレンダーをプログラムで出力する方法がわかりません。

誰もこれを以前にやったことがありますか?これらのモジュールを介してこの機能をチェックアウト プロセスに追加する方法はありますか?

4

1 に答える 1

4

私は座ってこれをもう一度見て、これを実装する方法を見つけました。

最初にフルカレンダー Drupal プラグインを使用してみましたが、この特定の機能については不必要に複雑であることがわかりました。また、フルカレンダー プラグインの出力をペインに追加する方法があまり明確ではありませんでした。この場合、コマースの追加ペインもあまり役に立ちませんでした。

だからここに私がしたことがあります:

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;
}

ペイン自体に含まれるものは次のとおりです。

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;
}

非表示フィールド「selected_date」には、カレンダーの結果が格納され、注文に追加されます。

次に、fullcalendar を Drupal ライブラリ フォルダーに追加し、drupal_add_js を使用して fullcalendar ペインが配置されているページに追加しまし

次に、AJAX コールバック ページを作成しました。これは、顧客が注文で指定したパラメーターに一致する利用可能な日付を返すために使用されます。

次に、Fullcalendar のeventClickコールバックをオーバーライドして、各イベントのクリック ハンドラーを追加しました。したがって、ユーザーがイベントをクリックすると、非表示フィールドにイベントの日付が設定され、現在のコマース チェックアウト ペインが送信され、次のペインに移動します。

したがって、私は最終的に何をすべきかを見つけましたが、それには多くのいじりが必要でした.

いずれにせよ、この質問の問題は解決されました。これが、Drupal コマースのチェックアウト部分で同じ (または同様の) 問題に取り組もうとしている人に役立つことを願っています。

于 2013-06-06T17:49:04.207 に答える