2013-05-29 4 views
6

Drupal 7에서 Commerce Suite 모듈을 사용하여 전자 상점을 구축 중입니다. 상점을 통해 물류 서비스가 매일 제공됩니다.Drupal commerce checkout의 일환으로 Fullcalendar

체크 아웃 프로세스의 한 부분은 사용자에게 서비스를 사용할 수있는 캘린더를 표시하는 것입니다. 서비스가 제공되는 요일이 표시되어야하며 사용자는 결제 프로세스의 일부로 하루를 선택하고 다음 결제 화면으로 이동할 수 있어야합니다.

https://drupal.org/project/fullcalendar

I :

http://arshaw.com/fullcalendar/

드루팔에 관련 플러그인이있다 :

나는 사용자에게 매일 가용성을 표시하기 위해 Fullcalendar 스크립트를 사용하고 싶습니다 내 사이트에 일반 fullcalendar 페이지를 표시 할 수 있습니다. 내가 정말로 붙어있는 부분은 체크 아웃 과정의 일부로 fullcalendar 창을 만들고 순서대로 사용자 선택을 저장하는 방법입니다. 내가 캘린더를 추가하기 위해 상거래 별도의 창 모듈을 시도

: 내가 성공하지 않은 그러나

https://drupal.org/project/commerce_extra_panes

. fullcalendar 블록을 창으로 표시하는 방법을 알아낼 수 없습니다.

Drupal commerce, fullcalendar 모듈 및 상거래 추가 창 모듈에 대한 문서를 읽었으나 fullcalendar를 창으로 표시하는 방법을 아직 이해할 수 없습니다. 나는 또한 사용자 정의 모듈을 만들려고했지만 fullcalendar를 프로그래밍 방식으로 출력하는 방법을 알아낼 수 없습니다.

이전에이 작업을 수행 한 사람이 있습니까? 이 모듈을 통해 체크 아웃 프로세스에이 기능을 추가 할 수있는 방법이 있습니까? 아니면 처음부터 직접 작성해야합니까?

답변

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

여기 창 자체에 포함 된 내용은 다음과 같습니다 : 여기 상거래 체크 아웃 창 설정 한 모듈의 일부 달력의

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 콜백을 재정 의하여 각 이벤트에 대한 클릭 핸들러를 추가했습니다. 따라서 사용자가 이벤트를 클릭 할 때, 그것은 숨겨진 필드에 이벤트 날짜를 설정하고 다음에 이동, 현재 상거래 체크 아웃 창을 제출합니다.

따라서 마침내 무엇을 해야할지 알았지 만 주변을 둘러보아야했으며 많은 부분이 잘 문서화되지 않았거나 따라야 할 좋은 예가 없었습니다. (

어쨌든,이 문제의 문제가 이제 해결,이 드루팔 상거래의 체크 아웃 부분과) 동일 (또는 유사 문제를 해결하기 위해 노력하는 사람을 도움이되기를 바랍니다.

관련 문제