Throughout this book, we have explored how to develop a-best-in-class web site for a restaurant, using Drupal. Unfortunately, there is not enough room in this book to present all of the possible functionality that you could add to a restaurant's web site. We will begin this chapter by giving you ideas for additional enhancements that you can explore on your own.
Next, we will discuss methods of applying the techniques that you learned in this book to other businesses, as most of you probably neither own a restaurant nor have clients who are restaurant owners.
Finally, we will discuss issues to be considered if you decide to outsource your site development, as well as suggestions for choosing equipment and locations for hosting your web site.
Possible enhancements to the Good Eatin' site
In this section, we will explore additional ideas for enhancing the web site, which we did not have time to cover in detail earlier in this book. For each enhancement, we will either describe how to modify the functionalities that we have already developed, or we will discuss possible modules that you can explore on your own to enhance the site.
Many restaurants offer birthday parties for children especially if they have a child-friendly theme. Our web site could easily be extended to offer information about birthday parties and allow customers to reserve a time slot for their party. We could even offer birthday party hosts, and party planning functionality, which would allow them to create a guest list, have guests respond to the invitations, and track responses.
The informational pages are simply static pages that would be organized under a birthday menu. You should include information about:
• What days and times parties can be booked for
• Activities that can be done at the party
• What is included in the party package and, if there are multiple party packages, what the differences between them are
• How long parties last
• Ages that parties are appropriate for
• Printable directions for guests to use if you don't have a map on the site already
Allowing guests to register for a party could be handled using the Public Bookings module.
There is no dedicated module that would allow you to send invitations for a party. However, you could use the Webform module to create a survey that would be used to send invitations to guests and allow them to respond. We discussed using Webform in Chapter 4.
Gift certificates are used by many restaurants and other types of businesses to solicit new business and to provide an additional revenue source.
Adding gift certificates is simply a matter of adding a new product to your e-commerce store, with specific amounts. You can then either send the customer a printed gift certificate or a gift card.
From Restaurants to Other Businesses
A fancier solution would be to automatically create a discount coupon that the customer could either use online for takeout purchases, or could print and bring the printed coupon into the store for in-store purchases. To create this type of solution, you would need to integrate Ubercart to ensure that certificates are paid for, and then generate coupon codes within Ubercart. You would also need to ensure that coupon redemption is handled on the web site to prevent customers from redeeming the coupon twice, once in the store and once online.
Most businesses are constantly looking to hire new employees. Your Drupal site can be easily extended to provide information to potential employees. Much of the information can be provided in a few static information pages.
You should include the following information:
• A description of positions that are currently available, including the duties of the position and where the employee will work, if you have multiple locations
• Who to contact to submit an application
• When the applicant needs to submit an application by, and when you expect to fill the position
You can automate the process of submitting applications using either a custom-generated content type built using CCK form, or with Webform. The Webform solution may be easier as the response will not need to be saved. However, if you would like to track applications, you may want to use a CCK node that could be extended to track the entire interview and hiring process.
If you do choose to store applicant information, make sure that it is adequately protected, to prevent the disclosure of confidential information. You may want to consider creating a separate site that is available only to employees for personnel information.
Loyalty rewards are a great way of encouraging customers to become repeat customers, and to have them return to your store over and over again. Loyalty rewards programs typically offer free or reduced-price merchandise after a specific number or value of purchases have been made by a customer.
Although there are companies that will administer rewards programs for you, you can also administer the program yourself via your web site.
From Restaurants to Other Businesses
To run a rewards program, you need to:
• Create a unique tracking number for each customer or family.
• When the customer makes a purchase, their rewards balance will need to be updated to show the number of value of purchases they have made, and whether or not they are eligible for a reward.
• When a reward milestone is reached, the server should be notified, so that the customer's final bill is updated accordingly.
While these are the minimum steps for a reward program, but you can enhance your rewards by creating a newsletter for rewards customers, which reminds them of the program and encourages them to return to the store to redeem their rewards, or to take advantage of special offers available only to rewards members.
To handle a basic rewards program, you could use CCK to build a rewards program content type. Each user can then be assigned a single rewards program node. This node can be used to track both purchases and rewards. You can also allow a customer to view their own rewards information, so that they can determine when they will be eligible for another reward, and can see any rewards which they have earned but not redeemed.
You can also create a newsletter using the techniques we discussed in Chapter 6. The focus of this newsletter should be on maximizing the loyalty rewards program, although you may also want to include tips, tricks, or even jokes to keep the newsletter interesting for users.
Although a restaurant is a great example for our web site and for this book, we realize that many of you don't own a restaurant. In this chapter, we will discuss how to modify the functionality that we have developed over the course of this book to meet the needs of a variety of other businesses.
Many people create blogs to talk about topics that are important to them. These blogs are typically updated by a single person, although they can also be created by a team of people. A web site could contain several related blogs that are maintained by a group of people.
Drupal can certainly handle the most advanced needs of any blogging site. You can use the techniques discussed in Chapter 5 to create the foundation of your blog. Chapter 5 discussed both single-user and multi-user blogs, so you will be able to create either of these easily.
If you want to earn revenue with your blog site, there are a couple of methods you can use depending on your target audience. These are described below:
Adding advertising to your site is one of the most popular methods of gaining revenue for an informational site. Drupal offers several modules that are designed to help you include advertisements on your site.
1. The Adsense module (http://drupal.org/project/adsense) assists you in displaying Google Adsense ads on your site. You will first need to create an account at Google. After installing and configuring the module, you can create Adsense blocks that will display either text or graphical advertisements that relate to the content of your site. You can track revenue on Google's web site. Payments are sent to you on a monthly basis, depending upon the amount of traffic your site receives, and the number of people that click on each advertisement.
2. If you prefer to manage your own advertisements, you can use modules like the Advertisement module (http://drupal.org/project/ad), which allows you to add advertisements to your site, track when each advertisement is created, and display advertisements based on the node that is displayed. There is also support for advanced functionality such as displaying ads based on the visitor's location.
Additional modules related to advertising can be found at: http://drupal.org/ project/Modules/category/55.
Donations are another popular method of gaining revenue for a site. With donations, visitors can send you as much or as little as they want for the information provided to them by your site. If you are not looking to raise large amounts of revenue, this can be a nice option to at least cover the costs of running your site.
You can accept donations via PayPal using Ubercart. However, a simpler method is using a donation module such as Buy Me a Beer (http://drupal.org/project/ buymeabeer). This module provides an easy-to-use interface for visitors to send you a donation via PayPal. You must specify an email address that accepts PayPal payments in the configuration settings for the module.
From Restaurants to Other Businesses
Another method of getting revenue is by selling memberships to your web site for a fee. If you decide to sell memberships, you should make sure that members are clearly aware of what they will receive for their membership, and that the members-only content is worth the fee that you are charging.
The Ubercart Roles module is a great way of selling memberships. This module allows you to sell access to various roles. You can then assign access to content based on the roles, so that only paid members receive access to the restricted content. If you prefer, you can have memberships expire after a specified time. This allows you to receive recurring income rather than providing lifetime access in return for a one-time payment.
If you are running an online store, then much of the functionality described in this book will apply directly to your site. You will certainly want to provide information about your store, as well as information about the products that you sell. All of the information in Chapters 1-3 will help you to build your site. You may even want to give customers the opportunity to purchase items online for in-store pick-up, using the techniques described in Chapter 9.
A photographer can use many of the techniques described in Chapters 2 and 3 to display a gallery of images online. Downloadable pictures can be sold using Ubercart. To sell a picture, you will want to use the File Downloads module to restrict high quality images to only those users who have purchased them. You can also allow customers to purchase printed images that will be physically delivered to them.
A bed and breakfast business can use the Public Bookings module to display when each individual room is available and when it is occupied, so that guests can select a room that they want to reserve. After they have selected a room, you can allow them to book the room using Ubercart.
You can easily provide a profile of each room, including pictures, descriptions, and even virtual tours, by using the functionality covered in Chapters 2 and 3.
When you are ready to begin development of your web site, you will either need to purchase web site hosting, or you will need to purchase a server and have it installed at a web site hosting company. In this section, we will help you determine which route to take, and what to look for in a web host.
Although the functionality described in this book can be accomplished by most people with good computer skills, you may find that you do not have the time or desire to build the entire web site by yourself. We will also discuss how to select a firm to develop a web site for you.
When deciding on a company to host your web site, or to provide you with bandwidth, there are several factors that you need to consider so that you are satisfied both in the short term and over a longer time period. Because your site will last for several years, you will need to ensure that you have a plan for upgrading as traffic on your site grows, new releases of Drupal are made available, and your server ages. Although it may seem too early to think about your upgrade plans, you will be glad that you thought about them sooner rather than later.
Because Drupal is a highly dynamic content management system, it makes frequent calls to your database and requires more processing than a simple static web site. You can reduce some of the processing requirements by using some of the caching techniques we discussed in the previous chapter. However, you will still need a more powerful server with more memory than you would need if you were creating a simple static web site.
Due to this need for increased processing power, you will want a more modern server with extra memory. In most cases, a shared hosting plan will not be a good solution because many shared hosting plans are over-sold leaving few actual resources on the server. Hosting plans that cost less than $10 per month should normally be ruled out unless you have a very small site, or are not concerned if the site experiences periodic downtimes.
From Restaurants to Other Businesses
If you plan to purchase a server, you should look for a server with a multiple core and, if possible, multiple processors. You should have a minimum of 1GB memory, but if you can afford it, more memory is always better. Most web sites do not require large amounts of hard drive space, and Drupal-based sites are no exception. You should be able to use 73GB hard drives unless you plan to store and serve a large number of pictures or video. You should plan on having at least two hard drives configured as a RAID array, which will automatically duplicate data from the primary drive onto the secondary drive. If your primary drive fails, you can automatically switch to the secondary drive. You may also want to consider purchasing a redundant power supply to ensure up-time even if your primary power supply fails.
You should also ensure that any server that you buy has some room for expansion, in case you find that you need to add a processor or additional memory to the site.
Fortunately, these specifications do not have to be cost-prohibitive. At the time of writing, a rack-based server with 4GB of memory, 2 processors, and dual—80 GB hard drives would cost approximately $1,200. Tower computers are typically less expensive to purchase, but can be more expensive to be hosted in a data center.
If you are running a highly-popular site, you may need to look into having a database server that is separate from your web server. You can also explore having multiple web servers that are load-balanced for performance reasons.
If you choose to purchase a virtual server, or a dedicated server from a hosting provider, make sure that you ask them what upgrade plans they have for the server (if any), how maintenance is handled, how quickly faulty components are replaced, and what the process would be if you needed to upgrade to a more powerful server in the future.
There is a wide variety of hosting plans that you can choose from. Most hosting plans include the hardware as well as hosting, for a combined price. You can also purchase hosting independently from the hardware, by purchasing the hardware and then selecting a data center to place the hardware in. Your business may also have sufficient Internet connectivity to host a server on your site.
Hosting a server at your business site is certainly the most convenient option, but you will also need the knowledge to maintain the server and the connection. An in-house connection may also be more prone to failure when compared to a data center connection that typically has multiple incoming and outgoing connections. However, having the server at your site will allow you to easily upgrade or replace the server as needed, to ensure that you are using appropriate hardware for your site.
Locating your server in a dedicated data center typically provides you with the best overall performance and reliability, since a data center will be climate-controlled to optimize server performance, will have fast and reliable connections to the Internet, and will provide sufficient clean power, with generators in case power is temporarily unavailable. However, it can be less convenient to access the server if you need to carry out physical maintenance, and you will have to give up some control over the environment.
A hosting provider that provides both hardware and hosting gives you the least amount of control over your server, because you typically cannot visit the data center or view the physical hardware. However, this type of provider will handle most or all administration tasks for you, so you do not have to worry about the day-to-day maintenance of your server.
I have used all three types of hosting, and each type has its advantages, depending on the size of your site and how busy your site will be. Smaller sites will generally choose all-in-one hosting, because performance is not as critical, initial costs are lower, and you do not need as much knowledge to get started. Larger business sites will typically purchase their own server and host it either at their own site or at a data center, depending on the connection speed at their location and how well they can secure and maintain the server.
Several companies with all-in-one hosting plans have either servers or plans that are tailored specifically to Drupal sites. The Drupal-specific features can be in the form of improved hardware to meet the needs of busy Drupal sites, installation and maintenance of Drupal, or support teams that include people with experience creating and maintaining Drupal sites.
The Drupal site has a list of such hosts at: http://drupal.org/hosting. Many of these hosts provide support to the Drupal association to directly help with the ongoing development and maintenance of Drupal. This list of providers is more up-to-date than any list I could provide here.
Drupal-specific hosting plans
From Restaurants to Other Businesses
As you research web site hosts to work with, you should check the forums on Drupal.org to see if other users have tried them before, and if they have had any problems. If there are no reviews of a hosting provider, you may want to do additional research on the Internet to see what other opinions are available. Of course, negative comments should be taken with a grain of salt because most people only take the time to complain if they have a problem, and do not remember to post about great service. When in doubt, try contacting the hosting provider to see how they respond to your questions. You can also ask them for customers who may be able to give you their opinions on the service.
When you select an all-in-one hosting provider, you are putting a critical factor for the success of your web site into someone else's hands. After all, if your web site goes down, no one can find you, and recovery depends on the speed with which your hosting provider corrects any issues.
With that in mind, it is important to review how long a company has been in business, as a more experienced company will have dealt with a wider range of problems already, which hopefully means that they know how to avoid them in the future. A newer company may not be aware of potential issues until they arise, which could lead to additional downtime for you.
Of course, every new business needs a fair chance, so if you find a newer company that you feel will meet your needs, feel free to use them. But do make sure that you do some extra research on what plans they have to handle all of the emergencies you can think of.
When you set up a web site, you need to make sure that you get access to it when you need to install new releases, add new modules, and perform other maintenance tasks. If your web site is hosted in your building or in a nearby data center, you could certainly walk up to the server, log in, and perform the required maintenance. However, most of the time, you will want to transfer files to the server using FTP, and log in to the server remotely using SSH (secure shell). Make sure that your host provides access to your server using these methods.
Graphical control panels provide an alternative to SSH at some web hosts. A high-quality control panel can provide a fast method of accomplishing most administrative tasks on your site. If your host does offer a control panel, make sure that you review the functionality that it provides, when you are evaluating hosts, to ensure that it will meet your needs.
As hosting companies try to gain new customers, they will include additional features that may or may not be of value to you. Some of the items that many host include:
1. Free domain names: This can be nice, but you may also want to purchase a domain name from a reseller, which may give you additional control over the domain settings. Having separate control over your domain can also make it easier to change hosts if this comes necessary.
2. Email accounts: In most cases, you will receive email hosting with your site hosting package. Unless you have separate email capabilities already, it would a good idea to use your host's email, or you can create a Gmail account for your site. A Gmail account allows you to access your mail from a variety of locations, and it has superb spam protection. There are both free and paid options available, depending on the size of your business. You can get more information at: http://www.google.com/apps/intl/en/ business/messaging.html.
3. Online site builders and web site creators: Because we are using Drupal we won't need any other site builder tools.
4. SSL Certificates: If you are planning to set up an e-commerce store, you will need an SSL certificate. You could purchase one separately, but the included certificates will save you some time and money.
5. Regular backups: Some plans offer regular automated backups. You should check to see what is backed up, how often it is backed up, and what needs to be done to restore from the backup should this become necessary.
6. Support: This is a critical aspect of a hosting plan. You want to ensure that support technicians are knowledgeable and are easy to reach. Nothing is more frustrating than waiting on hold at your host for a long time, and then having the technician not being able to answer your question, or appearing to read from a script giving canned answers that don't apply to your particular problem. You should also look for hosts that provide both email- and phone-based support. You should test the support prior to signing up, to make sure that the host is responsive to questions.
Although creating a site with Drupal can be much easier than creating a site using traditional methods and programs, many people still turn to a professional developer to build their site for them. This can save time, and free you to concentrate on ensuring that your site meets your businesses needs while someone else handles the technical work.
From Restaurants to Other Businesses
When you select a developer, there are several issues that you should keep in mind. This section will cover each of these issues in detail.
As you select a developer to build a site for you, you will want to ensure that the developer or development firm has experience in the following areas:
• Previous experience in building Drupal-based sites
• Experience in building Drupal modules, if you need to have custom functionality developed
• Experience in working with MySQL
• Experience with the hardware and operating system that you plan to deploy your site on
• Experience in tuning Drupal to meet the performance needs of your site
• Experience in running projects similar to the scope and complexity of your project
A developer should also be easy to work with, and you should be able to communicate easily with him or her using the medium of your choice. For example, if you prefer to discuss the project on the phone, it makes no sense to select a developer who will only communicate via email.
A graphic designer can be placed in charge of developing the look and feel of your site. The graphic designer may work with the developer, or he or she may be independent, providing only the finished images to the developer, who will integrate the images into the web site theme.
Selecting a graphic designer can be an intensely personal process, because site design is a very subjective work. A good designer will take your suggestions and transform them into a work of art better than you imagined. However, success is not guaranteed as each designer tends to have a particular style that he or she is good at. Before hiring a graphic designer, you should carefully review the designer's portfolio to ensure that you like the designs that he or she has previously created. You should also contact any references that he or she provides, to ensure that his or her prior customers were satisfied.
You also need to ensure that the developer has worked on Drupal-based web sites before, to confirm that they understand how to build a design that can be used easily with a variety of content, and to ensure that they can provide the correct information to successfully theme each block and custom view that you are creating.
Finally, you need to determine if the designer will be responsible for building the theme for the site, or if they will only create one or more images that will be used by the developer to create the theme. If your developer is building the theme, you need to ensure that they are comfortable with building Drupal themes.
A great place to begin looking for a developer to build your site is the Drupal web site. The Drupal site has a forum where developers can post their availability or respond to job postings.
You can access the forum at: http://drupal.org/paid-services.
As a minimum, before you post a request for a proposal, you should make sure that you have fully defined what you want done, and have an idea of how much you are willing to pay for the work.
By putting a limit on how much you want to pay, you can decide if the developer estimates are in line with your budget. If the quotes come in higher than you can afford, you will need to trim functionality to meet your budget. If all of the estimates are within your budget, you have the luxury of selecting a developer based solely on the quality of the proposal.
The more complete your request for a proposal is, the better the response from the consultant will be. So make sure that you have a complete outline of what you need to do. Here are some topics that you may want to include in your request:
• The proposed structure of the site.
• Functionality that you need to implement on your site.
• A complete description of any custom functionality that you want to have developed.
• A description of what you want the site to look like. If you have an existing site you want to mimic, providing that information will help. If you don't have an existing site, try picking out between three and five themes on the Drupal.org site that you like, and tell the developer what you do or don't like about each one.
• A description of what hardware the web site will run on, if you have that information.
• An estimate of the number of visitors who will use the site per month, and how many concurrent users there will be on the site at peak times.
• A list of any deadlines that the developer needs to meet.
• Any testing the developer will need to do on his or her own.
From Restaurants to Other Businesses
• Information about the resources that will be available to the developer to complete the project, including testing resources, business resources, and project management resources.
• If functionality can be added in phases, a description of each milestone should be included.
• Payment terms, including whether or not you prefer a fixed cost quote, or a cost based on the actual time spent on the project.
Although many project proposals will not include all of these elements, you should try to provide as many as possible in order to help the developer create a complete and accurate proposal for you.
After your proposal is ready, you can submit it on the Drupal.org site. You can also review some of the development groups that are listed on the Drupal site and contact them directly to request a quote.
As developers review your project, they will most likely need to ask you additional questions to clarify specific points in your project. Make sure that you answer any questions as quickly and as thoroughly as possible.
When you evaluate a developer, you should talk with him or her in person, or on the telephone, to ensure that he or she has a thorough understanding of your project, and to ensure that you can work well with him or her. You will also want to check samples of his or her work, and discuss his or her work with any references that he or she can provide.
In this chapter, we have explored different ways of modifying the techniques used in this book to apply them to your site. For those readers who want to set up a web site, but don't want to do all the work themselves, we also discussed tips for outsourcing the development of thee web site to another company.
If you choose to build your own site, I wish you many hours of enjoyment as you build and enhance your site. The wonderful thing about Drupal is that you can make your site as simple or as complex as you want. You certainly do not need to build a site as complex as the Good Eatin' site. You can also start with a simple site and graduall evolve into a complex site over time, letting your confidence grow with each step.
If you choose to outsource development, the knowledge that you have gained by reading this book will help you to effectively communicate the goals of your web site to the company doing the development work. This will in turn reduce the cost of building your web site, reduce or eliminate rework, and help the developer in creating a site that best meets your needs. You will also understand the possibilities that Drupal offers, giving you new ideas for how your web site can promote your business. After the initial development is complete, you may even want to build new pages or edit existing pages using the techniques described in this book.
Of course, Drupal is always evolving and improving, which gives you the chance to take advantage of the latest web site technologies to give your customers the best possible experience. To keep up-to-date with Drupal, make sure that you visit drupal.org frequently.
Was this article helpful?