I'm looking for help regarding the cms web development paradigm & standards-based development. I'm looking for opinions.

I've done my research, and am comfortable that Drupal is the cms for me.

Please bear with me as I share a little - and I mean little - background information:

I started studying web related technologies about 2 1/2 years ago. I got turned on to web standards: XHTML, CSS, ECMAscript, etc. I also started studying LAMP (Linux Apache MySQL PHP), so that I could do some minor back-end admin stuff.

I got started hand coding xhtml and css using web standards (thanks to "Designing With Web Standards", "Bullet Proof Web Design", "Head First HTML with XHTML & CSS", "The Zen of CSS Design: Visual Enlightenment for the Web", etc.). As I'm considering moving over to a cms paradigm for web development, I'm concerned about my ability to "produce" and "design" productively and efficiently.

I'm setting up a business model, where the client has some varying degree (depending on the client's desire) of control over their site's content, and where I (or them, if I can make it child's play) have the ability to add website functionality without major remodeling of the site.

What I want to know, is - "Can I have my cake and eat it too?": Can I use the power of Drupal as a cms - and all that it provides - while maintain the XHTML/CSS/JavaScript discipline? And a corollary: Can I do this as efficiently as if I were hand-coding in a text editor? {I started hand-coding, and can't get used to other WYSIWYG editors for production or stylizing. Eventually - when the editor isn't a crutch - I'll probably use one.}

I especially would like to hear form those of you out there who use web standards. Thanks in advance - really!

-Doug

Comments

styro’s picture

It is pretty easy on your own site too.

But when you give your clients control over the content though, it will be a bit harder to keep things clean and compliant.

They will probably demand a WYSIWYG editor. So I suggest you learn how to restrict your chosen editor to only functionality you're happy with. Note - that is something I haven't totally figured out myself.

The design of Drupals themes and modules are good for keeping the look and the functionality of a site from stepping on each other. For the most part you should be able to enable the same module on many different looking sites and it will mostly just fit in to that sites theme automatically. There will be the occasional new bit of theme CSS needed for some modules though.

--
Anton
New to Drupal? | Forum posting tips | Troubleshooting FAQ

deanypop’s picture

I think the difficult thing coming from the design side is that Drupal's learning curve and inherent overhead for the designer gives you strong instinctual urges to go back and hand code everything, or just add a simple data-sucking PHP toolkit/class for updates, and continue modifying what you've got... But, if you're willing to take the leap, and really go all-in with the CMS, you're halfway around most of the non-technical Drupal issues already.

That said, there are some things that, barring becoming a Drupal core developer, you may never figure out, little imperfections/stylizations you will have to live with in exchange for all you get back.

To date, I have seen only one* effective, non-Drupaly website running Drupal: http://ltc.smm.org/buzz/

A lot of what makes it jump out of the Drupal mode is the Flash usage... But, if you take a few steps back, it's still a very boxy/regioned/contained site design. So, the real first question is - how much is having a dynamic/different/cool design going to get in the way of using any* CMS offering? If you really need ultimate flexibility, I'd say Drupal is still not completely baked... But it's entirely possible that most of the Drupal implementers are NOT designers by trade, and this is what is holding back themes and sites that are lessy "bloggy".

Anyway, as a way of applying and adhering to web standards, Drupal stands up pretty well... We just haven't (yet) been able to convince our in-house designers that they should learn Drupal rather than building their own CMS/data management toys, because they see the limitations right away, but would have to delve a lot deeper finding the fixes to those issues.

The biggest thing for standards adherence would just be rigorous testing of all modules that apply changes to the html generated on the site. I might be missing something, but a core Drupal with the built in themes passes all the tests I've been able to find on the internet - though, things like metadata, keywords, etc for accessibility/SEO does require an additional module (nodewords?).

sepeck’s picture

-Steven Peck
---------
Test site, always start with a test site.
Drupal Best Practices Guide

Anonymous’s picture

Steven-

I understand the need for patience and practice.

Thanks for posting these sites build using Drupal.

A question:

Where did they start? Did they develop there own Theme, incorporating Modules?

I don't know where to start! Regarding design and production - that is.

There seems to ample documentation on server and admin issues, Modules, Themes, etc., but little in the way of design/production best practices. I've spent 3-4 (7-10 hour) days trying to figure out how to go to work in Drupal. I'm just not getting - YET! (the patience! thing).

The basic Drupal install provided me a pre-designed/pre-developed site. I could then choose other Templates and add functionality through Modules. But what if I don't like any of these Templates? Do I create my own Template? Is that the way I'm suppose to think about the process?

I wish I understood the process these developers went through. Can you tell I'm a systems & processes type!

I've been doing business consulting/coaching the past few years, specializing in "Chanage Management"; a lot of abstract -> conctete reasoning stuff: "In order to..., we must...", "If..., and if..., then..." and "what do we mean by...". The first thing I do when I'm learnign soomething new is try to figure out/understand the syntax, the process, and the cause-effect-cause stuff.

-Doug

boris mann’s picture

Decide on the functionality of your site, as well as some of the information architecture. Configure modules and add additional, contrib modules as needed to meet the functional goals you have (which are, of course, based on business requirements of some kind, right?).

You can use a default theme for this. If you are of a design bent, you could actually do mock ups and IA work before you even install, or in parallel.

Then do the design in Photoshop mockups. Get sign off on the design. Then create XHTML / CSS / Javascript / Flash from the Photoshop files, and merge with Drupal template layer. Tweak at this layer between form and function to get the desired result.

Anonymous’s picture

Where I'm needing clarification is at the "merge with Drupal template layer. Tweak at this layer between form and function to get the desired result." stage in the process, i.e., how do I merge the XHTML/CSS/... into Drupal?

-Doug

sepeck’s picture

As in converting from say a Photoshop mockup to a Drupal theme?

If this is it, try working through this tutorial on porting the Yahoo GRID CSS stuff to a Drupal theme. It shoul dgive you an idea on the mechanics.
http://www.blkmtn.org/how-to-play-with-Yahoo-GRID-CSS
http://www.blkmtn.org/two-or-three-column-option-with-Yahoo-GRID-CSS

You can use any of the CSS layout/theme methods out there such as 'Holy Grail', 'Blue Robot', the position is anything type stuff. BUt as Boris says, form follows function.

As to design things, yep. Harder to conceptualize. Design isn't specific to Drupal so much as Drupal provides the tools to help support your architecture or design.

-Steven Peck
---------
Test site, always start with a test site.
Drupal Best Practices Guide -|- Black Mountain

-Steven Peck
---------
Test site, always start with a test site.
Drupal Best Practices Guide

Anonymous’s picture

I don't use Photoshop to do layout work, and the CSS recipes, such as those as bluerobot.com, are fine; that's not what I'm getting at though (it's a tuff task to clearly comminicate).

I'm not talking about an API. Any, yes, I agree with the form & function thing.

I'm not sure how to ask the question... but, here goes another stab: "Where are the Drupal "Best Pracrices" regarding desing and production?

I installed Drupal. I got a pre-designed/pre-produced site. I appreciate why Drupal did this: so that I could get situated with the API, including the extensions. I don't want to modify (for the sake of argument) one of the existing themes (which include form & function).

There's a book out there called "Don't Make Me Think". The author was influenced by another book, "The Design of Everyday Things". The Drupal API lacks some intuitive desing features - in my opinion. It shouldn't be more dificult than flying an airplane!

{I got my pilots liscense out of H.S. The first time I sat in the cockpit I thought, "How am I ever going to get thgis figured out?" Within 9-10 hours I took my solo flight. There were 6-8 instruments that were easy to understand, and I flew by those. As I progressed, I came to understand the other 20 or so.}

IMHO opinion, the design & production aspects of Drupal lack elegance. I don't see anything out there that's better, but there's got to be a more intuitive and elegant way of using this powerful API in the desing and production processes. And by design, I'm not talking about Photoshop/Illustrator/etc, i.e., I'm talking processes, not programs.

It's probably just that I don't understand something. I'll keep working at it.

Thanks for your help.

-Doug

sepeck’s picture

Have you seen http://api.drupal.org/ ?
and here? http://api.drupal.org/api/4.7
That may assist you somewhat.

-Steven Peck
---------
Test site, always start with a test site.
Drupal Best Practices Guide -|- Black Mountain

-Steven Peck
---------
Test site, always start with a test site.
Drupal Best Practices Guide

Anonymous’s picture

This helps. Thanks much!!!

-D

styro’s picture

I don't want to trivialise it, but I reckon you are overthinking the whole "process". There aren't really a whole lot of best practices that are specific to Drupal. Most of the best practices listed at http://drupal.org/node/17557 are good common sense ideas for most web apps so you should still take note of them.

You should probably just set up some local instances on your PC and start downloading different modules and exploring what they do. Exploration is very useful, and don't fixate too early on how to create your intended site(s) - what you discover exploring will shape how you think about building them.

Then once you start on your intended site(s) it is best to start from the information architecture / functionality point of view as Boris mentioned. Choose your taxonomy structure (if any) and choose the modules you want, then think of the menus etc. Once you've got a mostly working site, then start on the themes and visuals etc. Even so, there will be an iterative cycle where you add more polish each time around.

So called lack of intuitiveness is a very subjective call - I personally found Drupal very intuitive when I started using it and was drawn to it's flexibility. I think it sounds like the freeform nature of what you can do with Drupal is leaving you a bit lost. If there were only one or two ways of doing anything or uniform checklists of steps to take, I don't think Drupal would have attracted all the brilliant developers it has and you probably would never have heard of it.

The one overriding piece of advice (if anything is a best practice, this is) though is to not customise Drupal by editing the core files. Just about anything you will need to customise can be done in your theme or with an extra module or two. If you change the core Drupal files you will cause yourself much future grief applying updates or upgrades.

--
Anton
New to Drupal? | Forum posting tips | Troubleshooting FAQ

Anonymous’s picture

Anton (and Boris)-

At the beginning of a new venture, I tend to overthink, as you said. I think the reasoning is this: I don't want to waste my time, i.e., I don't want to go down a road that will lead to a dead-end, or to a place I don't want to be. I spent a couple week with WP before I realized that it wasn't a good fit for me (subjective). It might not have been a waste of time (n the big picture), but with a wife and 3 children to house, cloth and feed, I can't afford too many of these learning experiences.

I researched CMSs and feel pretty good about Drupal and the community.

My main concern is Productivity: maximize Throughput, while minimizing Overhead Expense; by OE I'm refering to time & money & energy. I also want to offer great value to my clients & help those that work with me to feel secure and satisfied. These are my motivations.

I was just wanted to hear from those in the community that were of a like mind.

You gave me much to work with. Thanks for your help.

All the best...

-Doug

sepeck’s picture

This may be more up your alley to
http://www-128.ibm.com/developerworks/ibm/osource/implement.html

Their latest articles are on themeing. Part 6 is on module development. May save you some time.

-Steven Peck
---------
Test site, always start with a test site.
Drupal Best Practices Guide -|- Black Mountain

-Steven Peck
---------
Test site, always start with a test site.
Drupal Best Practices Guide

Anonymous’s picture

Thanks-

Looks like a good article; just what I needed.

-Doug

ali5ter’s picture

Doug,

Another couple of articles just came out in the same series that explain how we approached the implementation of the XHTML and CSS with Drupal. Part 8 is rather rudimentary for those who are familiar with standards-based web design but it completes what is talked about in Part 7. Anyway, I hope these help.

-alb

Structuring content for theming using XHTML, http://www-128.ibm.com/developerworks/ibm/library/i-osource7/

Styling content for theming using CSS, http://www-128.ibm.com/developerworks/ibm/library/i-osource8/

styro’s picture

If you are in a position that you aren't able to waste a lot of time learning different systems to evaluate them, you will need to have a bit of faith in what other people tell you about those systems.

There might be two example systems you look at. eg system A gets you started quicker but ultimately turns out to be harder and more limited for advanced customisation. System B might be a longer learning curve, but has more advanced customisation capabilities that are easier once you understand them. System A can be painful if you've invested a lot of effort learning it only then to discover its limitations, while with System B you need some faith that what people have told you about it is true and that the payoff will come.

Both of these systems have their uses. Someone with simpler sites and always under time pressure would be better off with system A. Someone with more complex needs and possibly with the ability to leverage their learning across lots of sites would prefer system B. It would also depend on the nature of your clients or what kind of clients you want - low paying (dare I say 'cookie cutter') clients would probably be better served by system A, while clients willing to invest in more ambitious sites would be better off with system B.

Note: I'm not claiming Drupal is either system A or system B - that would depend on what the other system you are comparing it to is :)

I personally think Drupal has the best of both, but probably is closer to B in most cases. Once you 'get' the philosophy behind Drupal and a few of its conceptual ideas though, it actually gets quite easy to use in my opinion.

--
Anton
New to Drupal? | Forum posting tips | Troubleshooting FAQ

Anonymous’s picture

Thanks Anton-

I would like to have A & B, and I think that it's possible, without too much abstraction.

When I think of modern web development (standards-based dev that is), I think of XHTML & XML for structure; I think of CSS1 & CSS2 for presentation; and when I think of client-side behavior I think of JavaScript; when I add database functionality my options are a bit wider: JSP, ASP. PHP, etc. At every turn there were options, e.g., I could have decided to use tables instead of CSS for layout; I could have used a proprietary scripting language that fit better with a particular browser, etc., etc. The reason I didn't adopt bad habits/practices, is due to an iterative learning process: I listen a little (mostly through reading), I evaluate a little, I learn a little; feedback loop stuff. The more complex the domain, the longer the process.

I've made a tack (sailing term) or two along the way, e.g., I studied Java for a whole year hoping to do my web. dev. stuff in JSP because a software engineer uncle of mine told me that if I learned Java, that all other languages would be easier; he was right. The problem was, however, that I need to make a living, and the learning curve was a bit steep. So I moved to LAMP. After running with weights on (Java), I feel that I can make some real progress with LAMP and supporting frameworks such as Drupal.

Learning syntax, terms, etc. isn't my challenge with Drupal; that all comes with patience and practice (I think it was you who said that). My challenge seems to be, "What's the process?"; "Where do I start?" "Where's the roadmap?". With Java, there was a roadmap - a very complex one at that - but a roadmap none-the-less. Even if I didn't understand all the concepts, I could still see were I was in the process, my intuition, and the recommendations of others to guide my efforts.

We can't make the learning curve go away - I understand that. But couldn't we make the journey a bit more pleasant, by providing some sort of roadmap? All it takes is money and time!!! :-) When I point the finger, there are three fingers and a thumb pointing back at me. As I go through this learning curve, I'll try and document my experience, so that I can offer suggestions later-on, once I've come through - BY FAITH!

-Doug