Module development tutorial in Drupal - drupal

I'd like to learn how to create modules in drupal- modules which can interact with the user, database, assign permissions, views.
Is there any good video tutorial or a simple sample module which covers these things?
Thanks.

My suggestion would be to pick up a copy of Pro Drupal Development and start working your way through. I think that book is the best one stop option for providing an easy to follow, yet in depth start for learning Drupal development.
If you really wanted to get by without purchasing a book, I would suggest checking out the Lullabot site for whatever free content they have available.
After an initial background, the Drupal api pages should be helpful for you, . Hit the search box in the upper left hand corner for type ahead search to find detailed info on drupal functions. This would be a great resource for getting some more background on the functions googletorp listed. I agree with googletorp that those are a good list of functions to get started with.

It requires some effort to learn how to develop in Drupal. You might be able to find some good videos, but you will only really master this when you get your hands dirty and start coding.
How hard this will be for you, is also highly dependent on your background. A seasoned PHP developer wont find it that difficult to develop with Drupal.
There are some key points that you need to understand though.
The hook system. This is Drupal's way to do OOP. The idea is that modules or Drupal core can define and run hooks when an event happen that other modules want to react to. An example could be the creation of a user or the display of a node. To implement a hook, you simply create a function with the correct name. You need replace the "hook" in the name of the hook with your module name.
Drupal has a lot of API functions and it takes time to find them and learn how to use them. Take your time, as using the right API functions can make a big difference. Drupal has a nice API site
From your description you should take a look at these functions:
hook_user
hook_perms
hook_menu
db_query

In addition to what googletorp and mike munroe already said, check out the module developers guide on drupal.org. On the api site, check out the well documented example modules.

I have learnt drupal from beginner to advanced with CodeKarate. its one of the best website for drupal.
http://www.codekarate.com

There is a very good, easy to follow tutorial on developing JQuery/Javascript modules on Drupal. Check it out as well.

Related

Pimcore Vs PyroCMS

Going forward a company I'm working with atm would like to stop with various frameworks/cms systems and go forward with just one for all future clients.
To that end, I've prepped a list of options and it's been whittled down to Pimcore and PyroCMS.
I'm a CI developer so clearly Pyro wins for me, but the guys who will be developing custom modules are more comfy in Zend. I found this: What are the (dis)advantages of pimcore? and found it quite enlightening.
So I'm curious to know thoughts on the two systems based on the following criteria:
Reskinning potential (front end themes etc).
Custom module ease. Building modules is really easy in Pyro and intuitive (if you know CI).. is Pimcore as easy for a Zend guru? Also, just buying/downloading existing modules, which is more prolific?
Multi site usage (can one install allow an admin user from site A to only see site A content?)
The docs and marketing blurb is great for both sites, but any hands on experience here would be useful.
I'm thinking that we could also just use the Zend library within Pyro (as you can do with CI on its own). Anyone reckon that'll be a headache to use?
PyroCMS developer dropping by.
PyroCMS can handle all of the 3 requirements you have requested. Now, CI and Zend users often have arguments over which framework is better, who is the best, bla bla bla, but it can easily be said that CI is the easiest to learn.
If you have some Zend developers, while they might prefer to use a Zend-based CMS that really should not be a selling point on the application itself. These days people put so much focus on which framework they prefer they seem to ignore everything else.
So, evaluate the two products on their own merits.
PyroCMS can handle multi-site and the frontend (and backend!) can easily be reskinned using just HTML and some basic tags - much like Smarty-ish.
And yes, you can use Zend components in your CodeIgniter/PyroCMS application, so that shouldn't be something to worry about.
We have used Zend in a few of our custom PyroCMS modules. Definitely go with PyroCMS so you get the flexibility of both frameworks if you desire. PyroCMS 2.1 just came out and it just keeps getting better.

CRM-like system using drupal?

I have a website running in drupal. Is there a module or some way to build a functionality which essentially builds a crm-like system on top of drupal?
I want to basically support this,
1. Create some kind of ticketing system that keys on each user
2. A blog like interface where various customer service personnel can make comments - again keyed by userid
3. A decent interface where you can list comments etc by date
4. Possibly another page to search for entries with certain keywords.
5. Support additional customization on top.
If the above is not possible is there a easy way to embed a third party crm application in drupal to provide the above?
Thanks,
Vivek
You might like to check out Open Atrium. It is a customized Drupal distribution by Phase2 Tech. Though its an out-of-the-box solution for ticketing system, you can modify it to your needs just like any Drupal installation.
Another open source solution could be CiviCRM. It won't serve as OOB solution but provides plenty of UI configurable options to fit your needs. Its a bit complex to start but once configured well, its quite powerful system. It integrates with Joomla and Drupal.

Will Drupal (or another CMS) work for me?

I have been planning a little side project of mine for a while now. Since the beginning I had planed on writing a CRUD application from scratch myself. Now after having a little more experience with web programming I think I would save myself a ton of time by using a CMS but being unfamiliar with these systems I do not know if I can do what I need to.
Users will create a profile.
Users will upload images.
Some users will be selling their products, others will be buying them. I will take a percentage. Think ebay without bidding.
Many javascript and php features such as image rotators and an app so users can crop their photos.
Will be integrating Facebook API.
Main reason I am considering a CMS is not to save time, but to make a safer website. I am not experienced with eCommerce and do not want to put my users at risk. Everything else mentioned I can and have done.
Use CMS like Drupal or just start from scratch?
Most of the CMS have the basic functionality you've mentioned in 1,2 and 5.
You'll have to write your own extensions for 3 and 4, or search for existing one that fits you.
Writing an extension for CMS will take less time than writing entire CMS from scratch.
If you want safe and stable code, then it's better to use existing CMS.
I agree with w3b4 that an open source CMS will save you time and give you major security and support advantages.
My experience of open source CMSs only extends to WordPress. I am sure you could make it do all the things you want with a bit of work, but my gut feel is that it might not be the best platform to start out with if you main requirement is buying and selling.
However before you strike it off your list, check out the wp-ecommerce plugin and its various add-ons. This product has developed a lot in recent years and might offer what you need out of the box.

How much of using Drupal involves programming?

I would like to ask those who are experienced with building a website with Drupal. I got a job like this, but I'm more interested in programming. I got also another job offer and cannot decide!!
How often do I get to programming/changing code in Drupal, when building a site in it? Isn't it just about clicking around and downloading modules?
the other job is different but i didn't want to write long descriptions here. This job with drupal got all the positives, but im afraid that its less programming, more clicking and im trying to learn more programming. the other job is classic php programming with company internal framework.
thanks guys
I work in a company where I mostly do Drupal development. Now it's hard to say anything concrete about your job offer, since we don't really know the company etc. There's not really a reason why doing development with Drupal should be any less coding than doing development with some other PHP framework.
You get a lot for free with Drupal, the whole CMS part, all the modules on drupal.org, and yes there will be some AI configuration, but it's usually not that much. All the configuration part of a Drupal and modules is pretty easy if you know what you're doing. For me I spend around 5% of my time for a project doing configuration, making views (a drupal module you can use to create displays) etc, the rest of my time, I use hacking away in my code editor.
As a drupal developer, you mainly do two things.
Write code to add functionality
Write code to alter existing functionality.
Drupal is run is procedural, so there's not much classic OO, instead you write code that gets executed when something happens. Fx a user logs in, then you get a chance to modify the user, do some things like counting how many times the user has logged in.
An important part of Drupal is also presentation. In Drupal we call this theming. Theming is also very code heavy. Drupal is very flexible, so you can overwrite functions used to generate the markup in your theme. These are classic PHP functions. Then there is the whole css, html js part as well.
If you have the chance to do Drupal development, I think you should take it. There is a massive demand for good Drupal developers, that know how Drupal work, and how to use the APIs. It will be something you can use to find your next good job. Knowing some random in house PHP framework, will probably not help you as much in terms of finding your next job.
It's going to depend on how much you want to customize Drupal. You'll typically get to spend some time altering code to change the layout or whatever other UI-related requirements your employer/client would like.
As far as altering the core of Drupal, you wouldn't want to do that anyway or you could run into trouble when a new version becomes available and you want to upgrade. Any custom coding would instead be done in the form of writing Drupal modules or plug-ins.
Comparing your two brief job descriptions, the "classic php programming" option sounds more like what you want to do. There simply wouldn't be a comparison between doing development in Drupal vs. doing development on some company's internal framework, but either way you would get some experience.
Don't let this answer guide your decision on the offers. Pick the one that feels right and works best with your lifestyle. You can always do your own research and development outside of work if you wish to gain experience or knowledge.
It heavily depends on the project. I work as a professional Drupal developer for 2 years.
Normally making a Drupal site consits the following steps:
the site builder gets the spec
the site builder makes a research what modules to use
the themer makes a wireframe
client accepts the wireframe
the designer makes the actual design
the themer starts implementing the design
the site builder starts installing and configuring the modules
if there are problems which can't be solved with the available modules, then the developer gets a specification
the site builder finishes site functionality and applies the theme
testing
deploying
As you can see, your job will be depend on which role do you work. If you apply for a site builder, then you don't have to code much. If you get hired as a developer, you will most likely end up writing bigger or smaller modules for different projects (this is what I do most of the time). At smaller companies, the site builder and the developer (sometimes even the themer) are often the same person.
However if you want to make sure that you will write code all day (and you don't know what roles will you fulfill at the Drupal company), I rather recommend the second job.

Which one would be better to a members website, Joomla or Drupal

Or maybe other OS cms?
I want to form a members website, with registration, member profile and member personal photo galleries
What would you suggest? I'm pretty advanced with PHP just don't have the time to develop from scratch
I don't know much about Drupal but if you're using Joomla you may need to install something like Community Builder and/or Simple ACL. Joomla's default user management isn't great.
Drupal does what you are asking from a basic install with quite a degree of fine grained control over members, profiles, permissions etc. I have set several up with little or no extra modules, plugins or programming.
I actually run one site with several hundred members with not problems. I am not saying you cannot do this with Joomla, just have not had the experience. I think Drupal may well be more "community" oriented in this respect.
I vote for Drupal. Even Obama has voted for Drupal.
Joomla and Community Builder / JomSocial should be a nice pair.
In my experience, Drupal is far more flexible than Joomla. If you're comfortable with PHP, I'd recommend picking it.
Definitely Drupal, especially if you already know advanced PHP.
Nobody has great user features out of the box, but Drupal has more and better quality user-related modules.
Look at drupalmodules.com for 'user' modules in the 6.x versions, and you'll see tons of related modules for each one you check out.
There are modules for advanced profiles, for a percentage (of the profile) completed, user badges to make them feel special, imagecache for excellent image support, image upload with cropping, ckk and views can setup many different kinds of photo galleries from scratch so they are completely customized for your site, ubercart if you want to sell premium memberships, etc.
I think both Drupal and Joomla would be able to handle creating a basic version of what you describe. The turning point is going to be, what more you want to do.
One of Drupal's strengths is first truely uncovered when you develop. You can very easily customize the look and feel of your Drupal site. You'll have more fine grained control of both what it does and what how it outputs it's markup etc. It's a powerful tool, only downside is that it can be a bit hard to understand for normal people. But knowing PHP that shouldn't be a hindrance to you.
I already created 2 Drupal Sites and 1 Joomla Site with this Feature.
Since I've worked with Joomla some years too, I think I can give you some Hints on it:
Drupal is WAY more flexible and professional than Joomla. But you have to put some effort into it. But if you know how to use it, it will do what you want. And since Drupal itself is so flexible the core does handle almost every feature you need. So it is possible to mix a lot of features together and do things nobody has thinked of before.
If you use Joomla, you have to pick a module for this task (like CommunityBuilder http://www.joomlapolis.com/) and while this module is very powerful, it may work together with other modules, but likely it will not.

Resources