Steve Kessler Denver DataMan Our Presentation What is Drupal Drupal Core Modules Site Building Resources Content, Content Everywhere and Giving People A Place to Drink A great Internet site is like a well made watering hole. There is lots of information on the Internet and much of it is not worth the time it took to write it. Internet users are saturated with JUNK and SPAM! A great website shows users why your content is worth “drinking from” and makes it excisable so they will. What do Internet users want at your watering hole? Drupal as a CMS Solid well developed system that can be expanded to be used in any industry segment Content is stored separately from the way its displayed so that it can be used in many different ways on the same site Easy control of access to specific content Sites can be built to be easily maintained by nontechnical users Sites can be optimized for being found by search engines Open Source The source code for everyday software and non- specialized applications should be open and built by a community of developers. Open source code promotes ingenuity and applications that will work in the most cases Open source allows for many users to vet code and check for best practices and optimization Open source is not just for idealists - there is lots of money to be made in customization and providing services based on open source software (like today’s session) Popular, Powerful, Robust, Secure Many sites are being built on Drupal Here are some great examples that are driving Drupal innovation! The Onion Sony myplay PopSci ubuntu Popular Drupal is gaining in popularity Big sites and little sites are using Drupal Drupal is being used in the real world not just hobbyist and nonprofits. Powerful and Robust Drupal is built to run using the latest technologies that it optimizes for speed Thousands of modules allow for modular additions to the platform including: Ecommerce Multimedia Comments Dynamic User Groups And many, many, many, more Highly scalable Secure Drupal developers work to make the platform very secure Developers are working on making Drupal easier to administer while still remaining secure Automatic updates Secure transfer of data between Drupal.com and your website When problems are found they are resolved rapidly There is no longer a “Drupal Look” Because Drupal has such flexible themes a Drupal website does not need to look like a Drupal website The Drupal Community The Drupal community not only builds Drupal but it also provides support for Drupal. The Drupal community is very in tune to helping users get started with Drupal. The Drupal community is innovative and wins many awards. Drupal Voting You can support Drupal by voting for Drupal in upcoming award programs Look at the front page of Drupal.org for more information on these types of opportunities Summer of Code Google pays college students around the world to help with open source project Drupal was given 19 spots! Summer of Code Projects will expand the core application and add many great modules. Drupal Core Drupal Versions Hook Themes Nodes Blocks Menus URL’s Taxonomy Users Core Drupal core houses the main features of the applicationthat are supported by the Drupal community. Core components include: Structures for accessing the database The Drupal start-up sequence (bootstrap) Support for nodes Support for taxonomies Support for themes Support for menus Basic core modules Blogs RSS 5 or 6 Drupal is transitioning between a 5.X version to a 6.X version 6.X has many exciting features that add great functionality and expanded resources for themers and Web 2.0 type development Modules for 6.X are under development and many critical modules that we will talk about later are not released for 6.X yet 6.X will be supported until 8.X 5.X will probably only be supported till 7.X next year There are some that think this schedule will change given the delay in critical contrib modules 5.X is still an application that has many supporters and benefits Hooks Everything ties back to Drupal using a hook. Hooks can be thought of as internal Drupal events (Pro Drupal Development). Hooks are how one connects into the structures provided by core . Themes The theme layer provides the graphical presentation for site elements and output the HTML to the browser. Themes take over the output of content displayed from the database. Some modules will have their own themeing but in general you can override their CSS with your own Generally when this happens you can override the module CSS . Themes are made up of a specific series of files that we will review later . Theme override functions Nodes Almost any kind of object accessed in Drupal A page is a node. An image can be a node. A user can be a node. In general, a node type is created to do something or post a specific kind of content. News story Event Product Tech support article You can also use node types to help control access. Filters Filter s control the type of content that can be added to each page By default there are three filters Filtered HTML Web page addresses and e-mail addresses turn into links automatically. Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> Lines and paragraphs break automatically. PHP code Full HTML Web page addresses and e-mail addresses turn into links automatically. Lines and paragraphs break automatically. Filters can be added and changed to match the needs of a site. For example if you use <b> to mean something in your style sheet you could make <b> available in the filtered HTML filter Blocks Blocks are areas that can be displayed in regions on a theme. Weights Through out Drupal weights are used to help place things on the screen for determining precedence Items with lower numbered weights float to the top while items with higher weights fall to the bottom Many weights are replaced with drag-and-drop AJAX based interfaces in 6 Menus Menus are critical to functionality of a site and are created using the menus interface and placed using the blocks interface You will find that you often want to disable the main menu (called the navigation menu) and create your own menu structures Menus are greatly enhanced in 6 with AJAX Modules Drupal is a modular system Modules can be core or contrib (contributed). Core modules have been included in core because they are considered critical to the function of Drupal and often start out as contrib modules which get lots of attention. 6 has many examples of contrib modules that are included as core. Contrib modules range in quality but most are of a high quality. Stay tuned for more information about nearly core modules URLs Drupal has two forms of URL’s Clean URL’s do not require showing query strings (for example, http://www.denverdataman.com/articles ). http://denverdataman.com/?q=glossary is what a URL looks like without clean URL’s Most sites will want to use clean URL’s Admin Page /admin provides access to all the key administration areas of the site The default view is By Task. The view can be changed to By Module . By task is organized by task group like Content Management, Site Building, and E-commerce Organized by Module provides a section for each module. Taxonomy Taxonomy is the system that Drupal uses to manage tag like information about nodes Taxonomy has vocabularies Vocabularies have terms For example Product Vocabulary Product 1 Product 2 Topic Vocabulary Support Installation Customization Taxonomy Continued You can think of Taxonomy as a tagging system Something may be a press release, but it may also have other attributes. Sometimes you will a vocabulary that relates to a specific functions of a module. The classified ads module lets you create classifications of classified ads based on the classified ads vocabulary. Tagging Options Controlled A set of tags are available and cannot be changed without the administrator Great for tags that are static like products, versions, key areas, or press releases. Free tagging Lets users add tags to the system as they add content Great for getting the most number of labels associated with content A single term or multiple terms can be tagged for a given node . Tagging Options Continued Flat A flat list of terms Hierarchical A taxonomy that can have hierarchical relationships Software Operating Systems Office Suites Photo Editing Web Design Software Operating Systems Office Suites Photo Editing Web Design Tagging Options Continued You can have vocabularies that share terms in a hierarchy Operating Systems Software Web Design Office Suites Photo Editing Administering Taxonomy Taxonomy is administered under categories admin/content/taxonomy Taxonomies can used to display data using URLs like http://www.denverdataman.com/taxonomy/term/18 or http://www.denverdataman.com/taxonomy/term/18+ 20 Users Drupal creates users to represent individuals with access to the site . By default, someone who has not logged in is Anonymous. This name can be changed on the site information page /admin/settings/site-information Add as many other users as needed. Registration can be done by administrators or from a public link. Users and Roles Groups of users are called Roles Roles are assigned on the users page (/admin/user/user). There are modules that allow changes to roles based on other criterion. Users can have more than one role The role with the greatest permission will be inherited for a specific task. Access Control Access Control allows you to set very granular control based on roles . Each module has its own permissions User Settings User Settings can be configured at /admin/user/settings This is the page where the administrator can control what happens when a new user is created, and what emails users receive upon being registered or registering . Node Types By default Drupal creates a page and story node types The main difference between story and page is that story is promoted to the front page. An administrator can create more node types that match the needs of specific content . Nodes types are an excellent way to pre-define a set of options and security permissions for content being produced Example: Technical support articles have access to specific vocabularies, don’t get promoted to the front page, and can only be added by a specific role Contrib Modules All of the contrib modules you use should come from the Drupal site unless you know the author or you are the author . Make sure you choose modules that will work with your installations . Drupal Design Themes Templates Folders Installing Drupal Installing Modules Updating Drupal Finding Themes Drupal.org - http://drupal.org/project/Themes The Theme Garden Drupal 5 - http://themegarden.org/drupal50/ Drupal 6 - http://themegarden.org/drupal6/ Top Notch Themes - http://www.topnotchthemes.com/ Theme Considerations Overall aesthetics Programming quality Does the theme match your XHTML standards for your site? Does the page have blocks where you need them? You can add blocks later, but it is typically better to find or build a theme with the blocks you may want to use. Template Files Theme files end in tpl.php There is a hierarchy of files page.tpl.php node.tpl.php block.tpl.php You can override specific pages, nodes, or blocks page-page_name.tpl.php node-node_name.tpl.php block-block.name.tpl.php Drupal Directories Modules Themes Sites All Modules Themes Default Files Installing Drupal Your installation of Drupal will depend on your server configuration . Cron.php One often skipped step is setting up the cron job for Drupal. Cron.php is a file that should be ran as a cron job and performs critical tasks for Drupal. DenverDataman.com runs cron job every 6 hours. Some sites run it more frequently. Installing Modules Find the module you want to install Right click on download and copy the link location Go to your upload folder on your server 1. 2. 3. 4. 5. 6. 7. 8. 9. I like to have an area where I download the TAR files before untaring them Type wget and the URL for the module Untar the file Copy the module folder into /sites/all/modules Enable the module Configure the permissions for the module Configure the module Drupal Resources Drupal.org Discussion boards Download modules and themes List servers Drupal Groups DBUG (Denver Boulder User Group) Lulabot (http://www.lullabot.com/) Drupal company who publishes a large amount of resources for the Drupal community Great podcasts Pro Drupal Development - a great book for 5 with a new version coming out for 6 John K. VanDyk and Matt Westgate, Apress, 2007