I'm new to php and opencart. but was planning to set my online store. I was creating an option of selecting a delivery time slot in check out page in opencart. As shown in the picture below :
So, I started to write a vqmod t achive this but stuck on how to store the value in database : My xml looks like this :
<modification>
<id>Salutation Field Modification</id>
<version>1</version>
<vqmver>1.0.8</vqmver>
<author>maca</author>
<file name="catalog/view/theme/bigshop/template/checkout/shipping_method.tpl">
<operation>
<search position="before"><![CDATA[
<p><?php echo $text_shipping_method; ?></p>
]]></search>
<add><![CDATA[
<p><?php echo $text_shipping_timeslot; ?></p>
<table class="radio">
<tr>
<td colspan="3"><b><?php echo "Delivery time slot"; ?></b></td>
</tr>
<tr class="highlight">
<td>
<input type="radio" name="shipping_timeslot" value="><?php echo $ship_slot_one; ?></" id="morning?>" checked="checked"/><?php echo $ship_slot_one; ?></br>
<input type="radio" name="shipping_timeslot" value="><?php echo $ship_slot_two; ?></" id="afternoon?>"/><?php echo $ship_slot_two; ?></br>
<input type="radio" name="shipping_timeslot" value="><?php echo $ship_slot_three; ?></" id="evening?>"/><?php echo $ship_slot_three; ?></br>
<input type="radio" name="shipping_timeslot" value="><?php echo $ship_slot_four; ?></" id="night?>"/><?php echo $ship_slot_four; ?></br>
</td>
</tr>
<tr>
<td colspan="3"></td>
</tr>
</table>
]]></add>
</operation>
</file>
<file name="catalog/language/english/checkout/checkout.php">
<operation>
<search position="before"><![CDATA[
$_['text_shipping_method'] = 'Please select the preferred shipping method to use on this order.';
]]></search>
<add><![CDATA[
$_['text_shipping_timeslot'] = 'Please select the preferred shipping time slot.';
$_['ship_slot_one'] = 'Morning';
$_['ship_slot_two'] = 'Afternoon';
$_['ship_slot_three'] = 'Evening';
$_['ship_slot_four'] = 'Night';
]]></add>
</operation>
</file>
<file name="catalog/controller/checkout/shipping_method.php">
<operation>
<search position="before"><![CDATA[
$this->data['text_shipping_method'] = $this->language->get('text_shipping_method');
]]></search>
<add><![CDATA[
$this->data['text_shipping_timeslot'] = $this->language->get('text_shipping_timeslot');
$this->data['ship_slot_one'] = $this->language->get('ship_slot_one');
$this->data['ship_slot_two'] = $this->language->get('ship_slot_two');
$this->data['ship_slot_three'] = $this->language->get('ship_slot_three');
$this->data['ship_slot_four'] = $this->language->get('ship_slot_four');
]]></add>
</operation>
</file>
</modification>
Please guide me.
As Floris mentioned - there is
>
sign in the value part of the inputs which is incorrect I guess. Also it is better to put the label of the input into a real HTML label so that checkbox/radio is checked when clicking on that label (it is not very comfortable to have to click on small checkbox/radio directly).Now to Your saving problem: I'd suggest creating a new DB column in table
order
calledshipping_time_slot
and of typeenum('opt1', 'opt2', 'etc.')
. Here You will store Your selected shipping time slot.Now for the controller, You'd have to modify (by vQmod) the
catalog/controller/checkout/shipping_method.php
(additionally You should do the very same modifications for Guest checkout - different files apply) and receive theshipping_timeslot
value from the POST and save it into the session along with all other shipping information.Finally (but not really) You will have to modify the model
catalog/model/checkout/order.php
and methodaddOrder()
to save theshipping_timeslot
value into the database.That should be just for storing into database.
But You should keep in mind that You should also extend the backend (administration) to be able to load the
shipping_timeslot
value from database and to display them within the order details - this means modifications of at least these files:admin/controller/sale/order.php
admin/model/sale/order.php
(maybe not needed)admin/language/<YOUR_LANG>/sale/order.php
- add new translation for shipping_timeslotadmin/view/template/sale/order_info.tpl
andadmin/view/template/sale/order_form.tpl