q&a
The Deal With Nodes
Every so often I'll get a question from a user who is new to Drupal about nodes. "What is a node?" they want to know. Nodes are explained on Drupal.org as, "...any posting, such as a page, poll, story, forum text, or blog entry." That description is close but not every post on a Drupal site is a node. Comments (as the Drupal.org item mentions) are not nodes. Neither are user profiles.
The Difference Between Nodes And Other Content
Nodes contain at a minimum a title and most likely a body (or description) field. You actually have the option to not use the description field at all. All standard node types on a Drupal site contain a title and a body. You can add additional fields (like email address, date or url) to your node types using the Content Construction Kit (CCK) module. You can create new node types altogether by using the core feature located at admin/content/types/add. This allows you to create a new type of node which can be customized by utilizing CCK.
Other content, like comments, profiles or the registration form, won't necessarily contain a title and body field. Another difference is that other content may not be indexed by the standard Drupal search functionality. User profiles are not indexed by Drupal search. Neither are items captured by the core aggregator module. Comments are indexed by Drupal search as a standard feature starting with Drupal 6.
Two more important node features are comments and attachments. Comments can be enabled (or disabled if you like) for every node type. Likewise you can attach files (like documents or images) to nodes as well. Finally, the standard Drupal statistics system will only keep track of node views.
What This Means To The Drupal Site Builder
So you've got these nodes and there are these other types of content floating out there. How does it affect how you build and manage your site? There are a world of options available when it comes to nodes. So you really need to consider the limitations of the types of content that aren't nodes. Let's look at the case of user profiles.
User profiles are not searchable and cannot be customized by CCK. If you don't plan to rely on user profiles as an important feature of your site then you probably won't care about this issue. Those that do care about the issue usually look for a work around like a nice contributed module. The content profile module can help you make profiles available as nodes.
Imported content is another issue. The standard aggregator module lists imported items but does not offer a permanent link, search indexing or the ability to add comments to the items that you have imported. If you really want to build your site around aggregated content then you will probably want to investigate contributed modules like Activity Stream or Feed API.
There can be a down side to turing certain types of content into nodes. As you add more and more content as nodes your site performance could be negatively impacted. So the balance between everything as nodes and the potential performance and maintenace issues should be considered.
How To Know When You've Created A Node
You know that content is a node when it is created by going to the node/add link on your Drupal site. I mentioned that for two reasons. First, it's a simple way to know if a node is created. Second, it's because pages don't necessarily have to be nodes.
There are pages that are created by going to the link node/add/page on your site. Those pages are nodes. They will be indexed by search, can have file attachments, comments, etc. You can also create a page which contains a list of nodes by using the Views module. It is very important to understand that distinction.
Why You Might Not Care
If you're building a very basic site that simply relies on the standard content types (like blog, page, story, poll, forum post) then whether or not content is considered a node should not be important to you. If that's the case then have no worries.
As I stated above it could become an issue if you plan to do more complex things like making use of imported (aka aggregated) content and complex user profiles.
Comments Welcome
Since this is a blog post, which means (hooray!) it's a node, you can and should leave comments if the concept continues to confuse or otherwise perplex you.
Building Your Video Community
I receive a fair amount of inquiries from people who are in the process of building out video based communities on top of the Drupal platform. The most important questions center around the functionality related to uploading, transcoding and storing video. What modules or techniques can be used to fully integrate community submitted video to a Drupal site?
The Basics
It's important to note that there are three basic functions that need to take place in order to have a fully integrated video community built on Drupal. Users will need to upload videos. Those videos usually get transcoded to Adobe Flash on the server so that they can be presented in a web based player. The video then needs to be stored and delivered on demand from a server.
There's no one single way that Drupal supports the three functions required to power a video based community. So it's on the site developer to do some research and testing to figure out the method that will work best for them.
Budget Makes A Difference
I think that the method you will use to accomplish the development of a video based community will depend greatly on the budget you have set for building the site. The most expensive option would allow you to simply hire a Drupal-savvy developer to code a custom module that will assist with uploading, transcoding and transporting the video to a content delivery network or CDN. Less expensive options would include utilizing existing Drupal modules or integrating with a video service that has the ability to plug in to Drupal via an API. No matter what you budget I believe that your first step will involve researching the options available today. I accent the word today because the world of Drupal is ever changing. So if the module or API you need doesn't exist today it could very well exist tomorrow.
Tackle Storage and Delivery First
As far as I'm concerned it makes the most sense to figure out your video storage and delivery provider first. One reason this is so important is that your storage and delivery will greatly affect the performance of your site. And if your site is slow or frequently unavailable chances are users won't spend too much time there. Another important issue is cost. Storage and delivery of video can be very expensive. So shopping around for a reasonable deal is very important.
If you decide to handle storage and delivery yourself you will either manage your own servers, contract with a CDN, or do a combination of both. The other option is to plug in to a service that is already geared towards the storage and delivery of video. Such a service might also handle transcoding to Flash as well.
Dealing With CDNs
A CDN will assist you with storing and delivering your content to users on the web. A true CDN will spread your content among multiple servers around the world in order to facilitate the most efficient delivery of your media. Some CDNs focus on delivering downloads, while others focus on web streaming. Some do both. In creating a video community you will want to focus on a company that specializes in streaming content over the web.
You're going to need a lot of time and patience when researching CDNs. There are many (list on Wikipedia) that exist today and the field is growing. Growth is good as it helps to expand the feature set and force down the price. But there's also a risk as smaller, newer services could fail and cause you serious problems later if that happens. Prices and service features vary widely as well. I've been involved in discussions with reps for CDNs and in some cases nailing down a price is near impossible. Prices will be based on the amount of content stored and delivered. Prices do vary widely so it would be worth your time to log quotes that you receive and compare them to see who is offering the best deals.
Some people will use Amazon S3 for storage and delivery of the media from their Drupal sites. It is imporant to note that while the Amazon service is an attractive one in terms of pricing and ease of use, it is not a true CDN. The good news is that Amazon is working on a new content delivery service that could be a game changer in the CDN space.
Powering Video Via API
An Application Programming Interface or API will allow your Drupal site to connect with a third party service that can perform transcoding storage and delivery of your media. These APIs simplify to process of building a video community but they may also come at a cost. You probably won't have control over the quality of video that is transcoded. The final videos may also have video advertisments included unless you agree to pay for the service. This is an option to consider if you have a small budget and want to get started quickly.
The new YouTube API allows for video to be submitted from third-party sites. A module has been committed for Drupal 5 and there are a number of discussions on the topic over at Drupal.org. So while there appears to be no locked in solution for Drupal and YouTube at the moment, integration can be accomplished if you work with a developer who knows Drupal pretty well.
A company called KickApps offers a single sign on (SSO) module for Drupal 4, 5 and 6. According to KickApps the SSO module allows you to create a seamless experience, which theoretically will allow users to upload videos to the KickApps service then display them on your site. The KickApps service is free if you allow advertisements but you can also pay them to "buy out" the advertising inventory.
Brightcove is one of the larger players in the online video services space. They offer integration services that can assist you with connecting Drupal to their video platform. Brightcove helps major corporations manage, store and deliver internet video so expect the price tag for integrating with their system to be on the high end. But if you have the money to spend my experience with Brightcove has been that they have got first class tools to help you manage a video community.
A Drupal Solution
If you're on a budget or are planning a smaller community that doesn't need the power of a third party service then you can build a video based community with Drupal. Check out the following modules.
FlashVideo - Travis Tidwell has built a module called FlashVideo that handles upload, transcoding and storage of video. The module is supported on Drupal 5 and 6. More recent versions allow video to be shipped off to Amazon S3 for storage and delivery. Travis has posted a very detailed tutorial on the setup and usage of this module.The module appears to do many things that video community builders will want so it is definitely worth a look.
Media Mover - This module assists with some of the background work related to storing and processing video. The most notable feature is that it will transport a video from your server to the Amazon S3 storage service and insert the proper link into your site.
Twistage - This module provides for integration with the Twistage video hosting service.
Video - This is an older module that handles upload and presentation of video files. The module also includes very basic play count statistics. This module will embed a video in your site but does not transcode the video to flash prior to doing so. A demo of this modules functionality can be seen here.
There's More
This post isn't intended to cover every tool, technique or module that can help you build a video community with Drupal. My hope is that those looking for a place to start or some direction will find this helpful. Your links to other tools and services or general suggestions about building video communities with Drupal are welcome in the comments.
- learnbythedrop's blog
- 8 comments
- 1817 reads
Delicious
Digg
StumbleUpon
Google
Combining Drupal With An Existing Site
Question: Can i design a website in dreamweaver and have only certain pages that will go to a drupal area which will use some of the social networking components OR do i have to have the entire site built as a drupal site?
Answer: You can build a static website and then link to Drupal as another section of the site. Let's say you build 'www.mysite.com' in Dreamweaver and you want to add a community function. You could always load the drupal files into a sub-folder called community and have your community located at 'www.mysite.com/community'.
The key to pulling this off and doing it well is to have the two sites styled in an identical, or at least very similar manner. You'll probably want to understand how Drupal themes work so you can skin the Drupal portion of your website to look like the existing site. So I recommend that you review the Drupal theming guide and also have a look at the Zen theme which is a very clean starting theme that you can alter via CSS.
- learnbythedrop's blog
- 1 comment
- 1549 reads
Delicious
Digg
StumbleUpon
Google

