2013-05-29 9 views
6

Sto installando un e-shop in Drupal 7 usando la suite di moduli Commerce. Attraverso il negozio, un servizio di logistica è offerto su base giornaliera.Fullcalendar come parte della cassa di commercio Drupal

Una parte del processo di checkout consiste nel mostrare all'utente un calendario con disponibilità per il servizio. I giorni in cui il servizio è disponibile dovrebbero essere visualizzati e l'utente dovrebbe essere in grado di scegliere un giorno come parte del processo di checkout e passare alla schermata successiva.

Vorrei utilizzare lo script Fullcalendar al fine di visualizzare la disponibilità giornaliera per l'utente:

http://arshaw.com/fullcalendar/

esiste un plugin rilevante in Drupal:

https://drupal.org/project/fullcalendar

I sono in grado di visualizzare una normale pagina fullcalendar sul mio sito. La parte in cui sono davvero bloccato è come creare un riquadro fullcalendar come parte del processo di checkout e memorizzare la selezione dell'utente nell'ordine.

Ho provato il modulo di riquadri aggiuntivi commerce per aggiungere il calendario:

https://drupal.org/project/commerce_extra_panes

Comunque non ho avuto successo. Non riesco a capire un modo per visualizzare il blocco fullcalendar come un riquadro.

Ho letto la documentazione di Drupal commerce, il modulo fullcalendar e il modulo commerciale extra panes, ma non riesco ancora a capire come visualizzare fullcalendar come riquadro. Ho anche provato a creare un modulo personalizzato, ma non riesco a capire come eseguire l'output a livello di codice a livello di codice.

Qualcuno ha già fatto questo? C'è un modo per aggiungere questa funzionalità al processo di checkout tramite questi moduli, o dovrei scrivere tutto da zero da solo?

risposta

4

Mi sono seduto e ho dato un'occhiata a questo di nuovo, e ho trovato un modo per implementarlo.

Inizialmente, ho provato a utilizzare il plug-in Drupal fullcalendar, ma si è rivelato inutilmente complesso per questa particolare funzionalità, in più non era molto chiaro come aggiungere l'output del plug-in fullcalendar al pannello. Anche i riquadri commerciali non erano utili in questo caso.

Così qui è quello che ho fatto:

1) Ho creato un modulo in cui ho creato un riquadro personalizzato. Ecco la parte del modulo che ha istituito il riquadro commercio cassa:

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

Ecco cosa è incluso nel pannello stesso:

I Campo nascosto negozi "selected_date" il risultato del calendario, che viene poi aggiunto all'ordine.

Ho quindi aggiunto fullcalendar alla cartella delle librerie Drupal e l'ho aggiunto alla pagina in cui è posizionato il pannello fullcalendar utilizzando drupal_add_js.

Ho quindi creato una pagina di callback AJAX, che viene utilizzata per restituire le date disponibili che corrispondono ai parametri forniti nell'ordine dal cliente.

Ho quindi aggiunto un gestore di clic per ogni evento, ignorando il callback di Fullcalendar eventClick. Pertanto, quando l'utente fa clic su un evento, imposta la data dell'evento nel campo nascosto e invia il riquadro di verifica del commercio corrente, passando al successivo.

Così, alla fine ho scoperto cosa devo fare, ma ho richiesto un sacco di manipolazioni, e molte delle parti che ho fatto non sono state documentate così bene, o non ho avuto buoni esempi da seguire: (

in ogni caso, il problema in questione è ora risolto, spero che questo aiuta a chiunque che sta cercando di affrontare gli stessi (o simili) problemi con la parte cassa di Drupal commercio.