I find that my villagers will become "sad" if they do not have certain types of buildings within a certain distance from their house. I normally react to this by just putting a cheap building of the type they are looking for nearby - but I think this is really inefficient. Is their a boilerplate layout I can use which will meet the needs of all villagers?
Villagers have 3 needs that must be met in order for them to remain happy. I call them Food, Decoration, and Fun since their icons are a burger, a lamp, and a baseball and bat. Villagers have, usually, 15 energy once they level up and lose one energy for every space they walk from their house. This means that at least one of each type of shop must be within 15 spaces of every house in order for the villagers to have access to their needs. (They don't require energy to walk back to their house, and do not lose happiness for doing so without energy.)
Shops must be continuously stocked by the player in order to continue supplying villagers. Placing decorative items near shops increases their stock and therefore requires the player to "check in" less often. Special decorative items may also be placed on your street to create combinations with that one decoration and two specific shops (for example the fruit stand shop, lucky spin shop, and flower stand decoration) granting a significant stock increase to both shops.
The most efficient layout for villager happiness would be to arrange all shops and decorations (including gates to other maps) to maximize the stock of each shop, require less babysitting on the part of the player.
Note: This is actually a less efficient layout for leveling up though, as you only gain EXP by stocking shops. Therefore the most efficient layout for leveling would actually be to AVOID stock bonuses and manually stock them more often, resulting in more and faster EXP gain. The player must be able/willing to to this though as without happiness villagers will not purchase anything, or purchase much less.