2013-05-29 8 views
6

Tworzę sklep internetowy w Drupal 7 przy użyciu pakietu modułów Commerce. Za pośrednictwem sklepu usługa logistyczna jest oferowana codziennie.Fullcalendar w ramach transakcji Drupal checkout

Jedna część procesu realizacji transakcji polega na wyświetleniu użytkownikowi kalendarza z dostępnością usługi. Dni, w których usługa jest dostępna, powinny być wyświetlane, a użytkownik powinien mieć możliwość wybrania dnia w ramach procesu kasowania i przejść do następnego ekranu kasowego.

Chciałbym użyć skryptu Fullcalendar w celu wyświetlenia dzienny dostępność dla użytkownika:

http://arshaw.com/fullcalendar/

Jest istotne wtyczki w Drupal:

https://drupal.org/project/fullcalendar

I mogę wyświetlić normalną stronę funkcji fullcalendar w mojej witrynie. Częścią, w której naprawdę tkwię, jest to, jak utworzyć okienko pełnoekranowe w ramach procesu realizacji transakcji i zapisać wybór użytkownika w zamówieniu.

Próbowałem commerce moduł dodatkowych Szyby dodać kalendarz:

https://drupal.org/project/commerce_extra_panes

Jednak nie udało. Nie mogę znaleźć sposobu na wyświetlenie bloku pełnych kalendarzy jako panelu.

Przeczytałem dokumentację Drupal commerce, modułu fullcalendar i modułu dodatkowego sklepu commerce, ale nadal nie mogę zrozumieć, jak wyświetlić fullcalendar jako panel. Próbowałem również utworzyć moduł niestandardowy, ale nie mogę dowiedzieć się, jak programowo wyświetlać fullcalendar.

Czy ktoś to wcześniej zrobił? Czy istnieje sposób na dodanie tej funkcjonalności do procesu kasowania za pośrednictwem tych modułów, czy też powinienem napisać wszystko od samego początku?

Odpowiedz

4

Usiadłem i znowu się na to patrzyłem i znalazłem sposób, żeby to zaimplementować.

Najpierw spróbowałem użyć pełnej wersji Drupal, ale okazało się to niepotrzebnie skomplikowane dla tej konkretnej funkcjonalności, a ponadto nie było jasne, jak dodać wyjście wtyczki fullcalendar do okienka. Dodatkowe panele handlowe również nie były przydatne w tym przypadku.

Więc oto co zrobiłem:

1) I stworzył moduł gdzie skonfigurować panel niestandardowy. Tutaj jest częścią modułu, które wyróżniają się okienko handel Checkout:

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

Oto, co znajduje się w okienku sama:

ukryte pole „selected_date” zapamiętuje wynik kalendarza, który jest następnie dodawany do zamówienia.

Następnie dodałem funkcję fullcalendar do folderu bibliotek Drupal i dodałem ją do strony, na której umieszczany jest panel pełnych kalendarzy za pomocą drupal_add_js.

Następnie utworzyłem stronę oddzwaniania AJAX, która służy do zwrócenia dostępnych dat pasujących do parametrów podanych w zamówieniu przez klienta.

Następnie dodałem obsługę kliknięcia dla każdego zdarzenia, zastępując wywołanie zwrotne Fullcalendar eventClick. Tak więc, gdy użytkownik kliknie zdarzenie, ustawia datę zdarzenia w ukrytym polu i przesyła bieżące okienko transakcji handlowych, przechodząc do następnego.

Tak więc, w końcu dowiedziałem się, co robić, ale wymagało to sporo błądzenia, a wiele części, które zrobiłem, nie było tak dobrze udokumentowanych, lub nie miałem dobrych przykładów do naśladowania: (

W każdym razie, problem w tym pytaniu został rozwiązany, mam nadzieję, że pomoże to każdemu, kto próbuje rozwiązać ten sam (lub podobny) problem z częścią kasową Drupala.

Powiązane problemy