Showing posts with label drupal. Show all posts
Showing posts with label drupal. Show all posts

Monday, May 28, 2012

How to become a better Drupal developer in 5 steps

The purpose of this post is to provide a little bit of guidance to those Drupal developers who maybe are just beginning, or are at least still in the overwhelmed learning stages. The first thing I want to say, is that learning Drupal (at least for me) was not something that I considered to be easy. I was not at all accustomed to the idea of using hooks so it initially took me some time to learn how to develop for Drupal the right way. Let’s get started.

1. Resources are everything

Before undertaking any major journey, it is important that you have the right tools. You wouldn't try to fix a car without a set of wrenches, you wouldn't try to run a large company without advisors, and you definitely wouldn't take a canoe downstream without a paddle. The point is, you need to know what you are getting yourself into and prepare a little in advance if you want to make sure you don't spin yourselves in circles or drive yourself crazy trying to learn how to build Drupal Modules.

Here are some things that you should do before really diving in to Drupal development:
  1. Make sure you have a development environment set up (LAMP/WAMP works nice, but there are other alternatives).
  2. Create an account on Drupal.org
  3. Determine if you want to start with Drupal 6 or Drupal 7 (this might depend on whether you are focusing on developing for existing sites, or building new sites).
  4. Start looking through this - http://drupal.org/developing/modules
  5. Bookmark http://api.drupal.org, you will probably need it

It is important that you also know where to go with questions. There are two places that I would recommend. The first is the #drupal or #drupal-support IRC channel (I am occasionally there as smthomas). This is probably the quickest way to get answers to your questions. However, I would recommend that you follow a few simple guidelines:

  • Don't ask to ask a question, just ask
  • Don't expect someone to be willing to discuss your questions for hours and then do it for you. Put in the research ahead of time and be willing to continue to do the work and research. We want to help, but not do things for you.
  • Make sure to say thanks... A little thank you goes a long way
  • After you become a Drupal ninja, make sure to pay it forward and help out others.

There may be more guidelines posted online somewhere but those are ones that I have heard/seen often. If you know anymore or have a link, feel free to drop it in the comments.

The other alternative for support would be the forums on Drupal.org. If you do post to the forums, make sure to follow up and let us know what solved your problem so others can benefit.

2. Finding the right balance

I find that good balance is important. I think it is a good idea to make sure you are comfortable building Drupal websites using core and contributed modules/themes from the Administration interface. This will ensure you can reuse existing modules as much as possible and don't have to rewrite the book every time you encounter a new problem. The process should almost always be to first search for an existing solution, and second to build your own. This will most likely save you the most time and make you as efficient as possible. This process also helps the quality of contributed modules get better over time.

Another important aspect to being a good developer is understanding a little about the theme layer and how theming works. This is especially important if you are building modules that themers will be using and designing websites for. This does not mean you need to be a theme designer yourself (I am far from a website designer), but it does mean you should understand the concepts. This will help you become a better overall Drupal developer.

3. Contrib is your friend

As mentioned before, use existing modules whenever possible. However, make sure to take that a step farther by actually looking through the contributed modules that you are using. This is one of the best and quickest ways to learn how to develop. Don't be afraid to modify the code of these contributed modules and see what happens on your development sites. If you can look through and understand some of what is going on with contributed modules, it will put you in a much better place to begin writing your own.

4. Drupal Core... Look but don't hack
One of the most important things you need to know when developing for Drupal is that you should not modify the core Drupal code. Drupal is designed to be very flexible and almost anything you need to do can be done through the use of module hooks or theme overrides. There are some very very very rare times when modifying the Drupal code is needed, but even then, there are usually alternatives (If you are just getting started with Drupal, you probably have not found one of those situations).

Just because you should not modify the core Drupal code, does not mean you should not look through some of it. Knowing how Drupal is structured and how certain pieces of functionality work is very important as you begin becoming a good Drupal developer. This may not be the place you start, but it is definitely something you want to consider doing as you gain more experience.

5. Get Involved

When you begin to refine your Drupal skills, you should consider contributing back. The easiest way is to help in the Drupal forums or IRC channels. You can also help with Drupal documentation or helping with developing/testing patches for contributed modules. By helping others you are not only giving back to people who are in the early stages of their learning, but you are also reinforcing your learning. I have learned a lot of things about Drupal just by helping others try to solve a problem.

Summing it up

Learning Drupal module development is a long, fun, never-ending journey that is definitely worth traveling. If you got this far, it's time to stop reading and start learning some Drupal.

Comments, suggestions, or questions? Leave a comment! If you are stuck on something and want some help, you can also use the contact form and I will see what I can do to help you out.



For business inquiries email info@eastvantage.com

Wednesday, May 16, 2012

Drupal: Advantages and Disadvantages of Choosing Drupal as Your CMS Solution

photo credit: www.volacci.com
The name Drupal was adjusted from the Dutch word ‘druppel’, or water droplet, and was named accidentally by Dutch creator Dries Buytaert when he misspelled the Dutch word for village ‘dorp’ while checking a domain name. Upon further consideration Buytaert thought his misspelling of Drupal simply sounded better, and kept it—giving us the name Drupal. Since its initial inception as a message board Drupal has come a long way as the accidentalness stopped there.

Drupal has since developed into one of the most complex open-source content management systems (CMS) on the market and is represented by an array of top notch sites, including: The Economist, Examiner.com, The White House, Popular Science, Harvard, MIT, Ubuntu, Sony Music and more. Drupal now displays contents in 182 languages by over538,813 people in 228 countries.

For those of us new to CMS tools, Drupal is essentially WordPress—on a three-day speed binge. Drupal uses a very sophisticated programming interface that has a tough learning curve and is considered more of a developing platform than simple CMS tool.  The system has in-depth reporting generating tools for advanced admins. While no programming skills are technically required for basic use, the system is generally used by more advanced developers and administrators. Basic users usually go with the more basic CMS platform WordPress, although they can create basic sites simply using Drupal.

Beginners to advanced users gather virtually in Drupal communities, increasing their commitment to the system and their knowledge base.

While Drupal is a great CMS, for some it can be too much. Consider the advantages and disadvantages to using Drupal as your CMS:

Advantages:

All the Basic Features you need:
Drupal Core is their standard release of features, which includes: user account registration and maintenance, RSS-Feeds, menu management, system administration and page layout customization. These basic features can be used to create simple sites, single or multi user blogs, brochureware, forums, community websites and more.

Great Building Tools and Templates
Drupal offers you the basic building blocks of websites in a module-styled format where content and rules can be created quickly. Through the use of templates and themes there is no need to start from scratch—no matter if you are building a simple or complex site. Pre-defined configurations of site features help users build fairly complex sites rapidly, allowing them to use their time to build in extra features.

Flexible Yet Robust Content Creation
Drupal’s bread and butter is in its content creation. Drupal allows its users the flexibility to create and manage different content types including: video, polls, user management, text, blog, podcasts, real-time stats, and revision controls.

Advanced Administrator Controls
Administrators have the options of setting up new user accounts and user permissions. These permissions can be designated per role or group and offer fine-tooth comb-style, allowing users to help create your content for you. Drupal’s new release of version 7 allows for easier administration and greater controls. 

Create Your Own Dynamic Designs
While Drupal offers themes and templates that are easily recognizable to the public many users like to use its design tools to create their own dynamic designs. The system’s presentation layers allows for easily usable and interactive experiences.

Organize Content Easily
One of the difficult parts of many CMS tools is the ability organize your content for later use and recall. Drupal allows you to categorize your content through path urls, create custom lists, associate content and create defaults. This structure helps you to organize, structure, search, find and reuse content.

More Plugins than you can Shake a Stick at
Drupal has over 7,000 plugins and extensions available to boost your building capacities. As the program is open source you can both use plugins and create your own, adding to the abilities of the Drupal platform.  

Allow your Users to Collaborate with you
Drupal is commonly mistaken for a blogging platform due to its incredible ability to publish socially. Drupal-based sites engage users to contribute while giving the administrator the ability to create, view, publish, administer and otherwise control the social content published to the site.

Tools that make it Easy to Connect with your Audience
The most important part of a site is connecting it to users, other sites, social networks, and search engines-- and Drupal makes this simple. Through increased network integration, feeds, search engine optimization tools, aggregation and other connecting tools, Drupal helps connect you to your viewers.

Disadvantages:

Usability

Drupal is not the most user-friendly platform and it has a high learning curve. Platforms like WordPress and Joomla are significantly easier to use, although they don’t offer the power and options that Drupal does. The good news though is that the new release of Drupal 7 is addressing some of the usability concerns and should be an easier adaptation for newer administrators.


Backwards Compatibility
Drupal is a relatively new system and is not backwards compatible with other software so if you have other content, systems and programs in place that you have become accustomed to then Drupal might not be the system for you.

Performance
In terms of loading and scalability Drupal is one stroke behind that of WordPress. The slow loading is simply because of the breadth of tools and capabilities. If you have a slower computer, or are simply a microwave generation kid and need things to work quickly then consider a zippier platform. Advanced users have however found ways around its problematic performance indicators, but with the big learning curve this takes a significant amount of time.



Eastvantage | IT Outsourcing | Offshoring Services
For business inquiries email info@eastvantage.com