How I Build Drupal Sites: A Fresh-Year Audit
"How do you build a website?" I have been asked this question by friends and family over the years, but I never know how to answer the question — mainly because there are too many variables, too many paths to the same goal. The funny thing is that I can quickly spot bad development on a site, and can come up with constructive criticism on the code or the design within seconds of seeing it.
What I value in website development
- Clean, elegant code and design
- Clear, focused communication
What I'm thinking when I build a Drupal site
With these values in mind, how do I go about building a new Drupal site? Here, in no particular order, are the things in my mind when building a Drupal site:
- Use blocks for static pieces of micro content on the site (address, social media icon UL list, copyright statement, etc).
- When I need to put content in a block that is somewhat static and needs to be editable by the client, I use Node block. I then create a custom content type and set permissions for the client to edit but not add new nodes. This way the client can edit the content, get the benefits of revisions and it is a full node that I can control. This is great for promotions outside the main rotator.
- For blocks on the home page or in sidebars that have the latest blog posts, news or events, I create a view that outputs as a block.
- have you tried Block Class? I don't ever want to see "block-block-9" or anything like that in CSS; Block Class enables me to add a class attribute to any block in Drupal.
- I use the built-in block visibility functionality. I find it much better than using Contexts. The Context module is great, but it adds a layer of complexity that most clients don't understand.
- I prefer using a node reference rather than use Taxonomy. I know that is controversial — we've written about it before. I do use Taxonomy all the time, but every time I use it I ask myself if the more robust functionality of a node ref would be easier in the long run. I've been burned by Taxonomy a number of times in situations where a node ref would have just been a simpler thing to manage.
- For social sharing on posts, you really can't beat ShareThis. It is easy, light and they take care of keeping up with Facebook and other service API changes.
- I prefer custom content types with only the fields I need rather than use a module like Blogs. It is great for multi-user blogs, but when I have a simple site with one or a few authors, a custom type is much faster to implement.
- I use Webform all the time, but I do call on Formstack.com as well. Third party services that specialize in their niche can offer awesome functionality cheaper than I can build for the price.
What I haven't mentioned yet
One tried and true old favorite is Views Slideshow. I've used it many times but I don't think I'll use it again. We are developing everything now in responsive layouts, and Views Slideshow just doesn't do responsive as well as newer sliders. My current favorite is RoyalSlider. It isn't a Drupal module, but it is very robust. It is responsive and also touch friendly: you can set it to allow swipe gestures on tablets and phones.
You may notice I did not mention Panels. I know there are avid followers in the community who love the module. I guess it falls down to elegance and simplicity for me. Panels makes life a little easier for me in the short-term, but it is more challenging for clients. The other reason that I can't justify well is that it feels "heavy" for something that should be nimble and lightweight.
What about you? Agree/disagree?
What about you all? Can you tell me where you agree/disagree with my process? I would love to hear from other developers to help me enhance my process for this coming year.
Image credit: Howardpa58
MONTHLY MARKETING INSIGHTS.
Get thought-provoking and actionable insights to improve how your firm makes a connection with your customers.
LEAVE A COMMENT
"For social sharing on posts, you really can't beat ShareThis. It is easy, light and they take care of keeping up with Facebook and other service API changes."
Sharethis is easy but it isn't light. Run a google speedtest on one of your site running it and you will see there is a huge bottleneck when it hits sharethis. I can go from a 70% ot 90% plus just by removing sharethis.
I recently switched to using http://drupal.org/project/service_links
Simple, lightweight and drupal centric.
@Nigel, I have seen that happen as well, but I thought they resolved that earlier last year. Everything for me is in the sub100ms range now for loading ShareThis assets. Also, I use the "new" ShareThis widget. I wonder if that made a difference. Are you still seeing the slowdown in recent months?
With Service Links, I have had some issues where Facebook updated their code and it broke my share button. Have you had this happen as well?
For responsive slider I currently like http://drupal.org/project/flexslider + http://drupal.org/project/ais (there's a tutorial link on one of the project pages on how to use them together).
Also see http://modulesunraveled.com/responsive-images/part-3-creating-a-respons…
Very interesting read.
"I prefer custom content types with only the fields I need rather than use a module like Blogs."
I definitely have to agree with this, Views is an absolute god-send for me. I know almost no PHP so trying to do anything like that without it would be pretty much impossible.
@just-passin-thru: This is why I love the Drupal community! Flexslider for Drupal ... I have searched and searched and didn't come across this yet for D7. Awesome! I will give it a whirl ... it doesn't look as robust as RoyalSlider, but free is always nice!
Yeah, my testing is on the latest release. I just did some major testing of my in-house distro that uses sharethis and it failed with every test I through at it. While sharethis js is loaded from a cdn and can load pretty good at times, it can also hang more often than not. Moving to service links has worked thus far. Believe me I would prefer to use sharethis for it different icons, post counts, more providers etc, but speed is more important for me.
@Chris Galbraith: Views is the killer feature of Drupal for sure! I am fluent in PHP, but I find that doing as much as possible in the CMS allows my marketing/content teams to update the site without a developer getting involved in changing the PHP or custom SQL inside a TPL file.
@Nigel: I totally agree with you. Speed is top priority. You have made me reconsider Service Links. I will have to give it another look. We like to use Varnish and that means anything on our side is super speedy. Service Links would put more of that equation behind Varnish awesomeness.
Thank you very much for your feedback!
Drupal Community FTW-- no question. It's often an overlooked asset whenever you see CMS reviews/evals/comparisons and it's a huge plus imo.
Very usefull post. The formstack bit was new for me.
Interesting also the tip about semi-static blocks.
Thank you JD
Lots of nice info also in the comments.
For 3rd party forms I use JotForm that has a free package (see http://www.myjotform.com/pricing). It's takes a bit of fiddling around to find all the options, but you can customize CSS, import/export source code, uses ajax to calculate the total of a simple order form and, above all, is perceived as easy by our clients.
Thanks.
+1 for Flex Slider for responsive slideshows.
[...] “”How do you build a website?” I have been asked this question by friends and family over the years, but I never know how to answer the question — mainly because there are too many variables, too many paths to the same goal. The funny thing is that I can quickly spot bad development on a site, and can come up with constructive criticism on the code or the design within seconds of seeing it…”check it out [...]
Thanks for the info, will definitely check out Block Class.
For responsive slideshows, I used the Drupal 7 module of Field Slideshow. Easy and worked like a charm.
[...] “”How do you build a website?” I have been asked this question by friends and family over the years, but I never know how to answer the question — mainly because there are too many variables, too many paths to the same goal. The funny thing is that I can quickly spot bad development on a site, and can come up with constructive criticism on the code or the design within seconds of seeing it…” check it out [...]
Loved this article! It's almost identical to the way I build all of my Drupal sites as well.
I am a designer by nature, being forced into the development world out of necessity, so keeping it lightweight, simple, and speedy is a priority.
Great write-up, JD!