Jump to content

Tour Website Feasible?


Jon
 Share

Recommended Posts

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

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

  • Like 2
Link to comment
Share on other sites

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

post-3026-0-45159400-1432886583_thumb.pn

  • Like 1
Link to comment
Share on other sites

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

  • Like 1
Link to comment
Share on other sites

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.

  • Like 1
Link to comment
Share on other sites

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.

  • Like 1
Link to comment
Share on other sites

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

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 :)

  • Like 1
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...