The average small business needs a website with their hours, phone number, some pictures, and maybe a blog that they'll never actually update, but they don't really know the difference between paying someone to set up wordpress and paying someone to build a bespoke web application.
The only reason the majority of small businesses think they need custom functionality is because they don't know enough to know what they're really trying to do. Try to listen to what the client wants to accomplish, not how they want to accomplish it, and see if you can come up with an off the shelf solution to their problems (or refer them to someone else who can).
Think about all those times someone on stackoverflow asks how to do something in a really roundabout way that seems wrong. The first question you ask is "what are you trying to accomplish?" Most of the time there is a simpler way to do it.
Edit:
[1] When I say wordpress, I mean wordpress/drupal/cushycms not just wordpress. Basically anything where you're not charging the client to build a custom blog/CMS engine, or charging $2k for a custom design.