Jon Posted May 29, 2015 Share Posted May 29, 2015 Hello Guys, Been using WordPress for a few years now and just come across ProcessWire which looks Ideal for most the work I do. But not just about this project so would just like a bit of feedback if possible. Iam looking at using it for a tour website which will allow customers to book tours and process the payment via WorldPay. The site structure would be something along single Tour pages with either children TourDates or Maybe using the ExtendedTables plugin to store the dates. The bit I am unsure about is the booking side of its. When a customer makes a booking I would like to store the booking information in processwire and removed the number of spaces booked. What would be the best way of storing this a Child of the TourDates? Cheers Jon Link to comment Share on other sites More sharing options...
Can Posted May 29, 2015 Share Posted May 29, 2015 I think it would be the easiest from what I understand you are going to do. And imho it's the most convenient and scalable way. By the way, PageTable are in fact individual pages to. But you could go with them as they show more information on the parent page, and you could make them save the table "rows" as child pages, too 2 Link to comment Share on other sites More sharing options...
sarah_hue Posted May 29, 2015 Share Posted May 29, 2015 The bit I am unsure about is the booking side of its. When a customer makes a booking I would like to store the booking information in processwire and removed the number of spaces booked. What would be the best way of storing this a Child of the TourDates? Jon, indeed the easiest way would be a field (i.e. 'free_seats') on each tour page (= child page of a tour date). Then you would use something like: public function calculateFreeSeats(Page $tour, $order) { if ($tour->free_seats) { $tour->setOutputFormatting(false); $tour->free_seats = ($tour->free_seats - $order->seats); $tour->save(); } } 1 Link to comment Share on other sites More sharing options...
Jon Posted May 29, 2015 Author Share Posted May 29, 2015 By the way, PageTable are in fact individual pages to. But you could go with them as they show more information on the parent page, and you could make them save the table "rows" as child pages, too That's sound like a good way of doing. I think it would be easier for a admin point of view if the tour dates could be added/edited below the parent tour information. As it theory the only fields I would have for the tour date would be start date, spaces, free spaces and discount price Jon, indeed the easiest way would be a field (i.e. 'free_seats') on each tour page (= child page of a tour date). Then you would use something like: Hello Sarah, Thanks for your reply, Each tour could have multiple dates so would that be the parent page of TourDates. So would I keep the free seats within the TourDates page and count the number of booking for that cruise via Bookings (SeatsBooked) to update the FreeSeats or I am missing something more obvious? For example : --Tour (Fields : NumberOfNights, Price, ) ---TourDates (Fields : StartDate, Seats, DiscountPrice, FreeSeats ) ----Bookings (Fields : SeatsBooked, Name, etc) Cheers Jon 1 Link to comment Share on other sites More sharing options...
sarah_hue Posted May 29, 2015 Share Posted May 29, 2015 Thanks for your reply, Each tour could have multiple dates so would that be the parent page of TourDates. So would I keep the free seats within the TourDates page and count the number of booking for that cruise via Bookings (SeatsBooked) to update the FreeSeats or I am missing something more obvious? Well, instead of counting the number of free seats every time a tour page is viewed, I would recalculate the number of free seats (and update the field) once a new booking is made. But maybe that's exactly what you were planning to do and I just misunderstood it. 1 Link to comment Share on other sites More sharing options...
SiNNuT Posted May 29, 2015 Share Posted May 29, 2015 To answer: definitely possible. https://www.tripsite.com/ is quite a big tour site powered by PW, with bookings availability etc, and developed by Ryan. I'm not sure if there is some kind of case study anywhere or maybe Ryan has some pointers if he reads this. 1 Link to comment Share on other sites More sharing options...
thetuningspoon Posted May 30, 2015 Share Posted May 30, 2015 I also built a trip site with PW. I would probably suggest keeping the booking records in their own separate part of the page tree with a hidden parent page. Then have a Page field on the booking record which selects the Tour Date it is for. This would be the more traditional database method, though there are probably +/- to both ways of doing it. I used an integer field on the tour date to hold the number of slots available as well as the current number of bookings for that date, and automatically closed a date if it was full. 1 Link to comment Share on other sites More sharing options...
Jon Posted May 31, 2015 Author Share Posted May 31, 2015 Yes that would make a lot more sense to have a field within the "TourDate" which gets updated to included the number of seats available rather than counting. Well, instead of counting the number of free seats every time a tour page is viewed, I would recalculate the number of free seats (and update the field) once a new booking is made. But maybe that's exactly what you were planning to do and I just misunderstood it. Thats great the site I am proposing will have now where near that many cruises. So it great to see the potential!! Thanks for sharing. To answer: definitely possible. https://www.tripsite.com/ is quite a big tour site powered by PW, with bookings availability etc, and developed by Ryan. I'm not sure if there is some kind of case study anywhere or maybe Ryan has some pointers if he reads this. That sounds like a better way of doing then that would enable the all the booking to be viewable rather than having to going into each trip date within the tree to view booking information. Is it possible to filter bookings/orders within the admin as I could end up with quite a few. Say filter them by a specific date or tour name I also built a trip site with PW. I would probably suggest keeping the booking records in their own separate part of the page tree with a hidden parent page. Then have a Page field on the booking record which selects the Tour Date it is for. This would be the more traditional database method, though there are probably +/- to both ways of doing it. I used an integer field on the tour date to hold the number of slots available as well as the current number of bookings for that date, and automatically closed a date if it was full. Link to comment Share on other sites More sharing options...
Pete Posted June 1, 2015 Share Posted June 1, 2015 To answer your last question, you can create whole new admin interfaces using the API with some work, however if you're in a hurry you can use ListerPro (single license is really cheap) to create your own admin pages with filtering capabilities. Depends how much code you want to write really 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now