<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0" xml:base="http://www.masteringdrupal.com">
<channel>
 <title>Mastering Drupal</title>
 <link>http://www.masteringdrupal.com</link>
 <description />
 <language>en</language>
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/MasteringDrupal" /><feedburner:info uri="masteringdrupal" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>MasteringDrupal</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
 <title>Acquia Drupal Training</title>
 <link>http://feedproxy.google.com/~r/MasteringDrupal/~3/a-PHArDB40A/acquia-drupal-training</link>
 <description>&lt;div class="box"&gt;&lt;div class="box-inner"&gt;

  
  &lt;div class="content"&gt;
    &lt;div class="html-advertisement" id="ad-223"&gt;&lt;p&gt;Learn Drupal with experts in classroom based training. Find out more at &lt;a href="http://training.acquia.com/"&gt;Acquia Training&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;  &lt;/div&gt;

&lt;/div&gt;&lt;/div&gt; &lt;!-- /box-inner, /box --&gt;
&lt;p&gt;Learn Drupal with experts in classroom based training. Find out more at &lt;a href="http://training.acquia.com/"&gt;Acquia Training&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.masteringdrupal.com/acquia-drupal-training" target="_blank"&gt;read more&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MasteringDrupal/~4/a-PHArDB40A" height="1" width="1"/&gt;</description>
 <comments>http://www.masteringdrupal.com/acquia-drupal-training#comments</comments>
 <category domain="http://www.masteringdrupal.com/category/ad-groups/right-sidebar-homepage">Right sidebar homepage</category>
 <pubDate>Wed, 07 Dec 2011 12:44:00 +0000</pubDate>
 <dc:creator>heather</dc:creator>
 <guid isPermaLink="false">223 at http://www.masteringdrupal.com</guid>
<feedburner:origLink>http://www.masteringdrupal.com/acquia-drupal-training</feedburner:origLink></item>
<item>
 <title>Drupal Video Tutorial Sites: Build A Module and Drupalize.me</title>
 <link>http://feedproxy.google.com/~r/MasteringDrupal/~3/R7AhE6RCLNQ/drupal-video-tutorial-sites-build-module-and-drupalizeme</link>
 <description>&lt;p&gt;Many folks interested in Mastering Drupal are looking for videos.&lt;/p&gt;
&lt;p&gt;I decided not to create a full screencast series as part of this site, but our team is still producing &lt;a href="http://www.masteringdrupal.com/videos"&gt;videos&lt;/a&gt; periodically and making them available for free. However, since this site was started there have been two new companies launched that offer Drupal vides.&lt;/p&gt;
&lt;h3&gt;BuildAModule.com - Drupal videos by Chris Shattuck&lt;/h3&gt;
&lt;p&gt;Chris Shattuck, a really great person and competent Drupal developer/themer/site builder, created &lt;a href="http://buildamodule.com/drupal-7-development-core-concepts-video-tutorials?a=96"&gt;BuildAModule.com&lt;/a&gt;. This site has tons of videos broken down into short, digestable chunks. If you need to learn one specific thing you can watch just that video. They are also thoroughly screencasts: you see Chris' screen. He's great at using on-screen tools to highlight his mouse and the item he is working on so you can follow along.&lt;/p&gt;
&lt;p&gt;The pricing is very reasonable between $23 and $29/month for online options or $29 to $399 for his DVDs. Note that his DVDs are actually full of video files for playing on your computer meaning that they are much longer than "DVD" might imply.&lt;/p&gt;
&lt;h3&gt;Drupalize.me from Lullabot&lt;/h3&gt;
&lt;p&gt;And of course a second option is &lt;a href="http://drupalize.me/"&gt;Drupalize.me&lt;/a&gt; from the Lullabots. They have combined their tutorial videos, &lt;a href="http://2011.doitwithdrupal.com/"&gt;DiWD&lt;/a&gt; videos, and some site-specific videos to create a large library with a diverse set of presenters.&lt;/p&gt;
&lt;p&gt;This creates for an interesting presentation of content because it mixes up medium length purpose focused material like "how to theme in Drupal" with a presentation style instruction where you might not be able to see the screen but the presenter themself might be more interesting.&lt;/p&gt;
&lt;p&gt;Pricing on Drupalize.me varies from $35/month to $45/month depending on your commitment.&lt;/p&gt;
&lt;p&gt;What do you think? Do you subscribe to either one of these sites? Are you getting videos from somewhere else?&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MasteringDrupal/~4/R7AhE6RCLNQ" height="1" width="1"/&gt;</description>
 <comments>http://www.masteringdrupal.com/articles/drupal-video-tutorial-sites-build-module-and-drupalizeme#comments</comments>
 <category domain="http://www.masteringdrupal.com/category/focus/developer">Developer</category>
 <category domain="http://www.masteringdrupal.com/category/focus/site-builder">Site Builder</category>
 <category domain="http://www.masteringdrupal.com/category/focus/themer">Themer</category>
 <category domain="http://www.masteringdrupal.com/category/resource-type/screencast">Screencast</category>
 <pubDate>Thu, 21 Jul 2011 00:03:00 +0000</pubDate>
 <dc:creator>greggles</dc:creator>
 <guid isPermaLink="false">199 at http://www.masteringdrupal.com</guid>
<feedburner:origLink>http://www.masteringdrupal.com/articles/drupal-video-tutorial-sites-build-module-and-drupalizeme</feedburner:origLink></item>
<item>
 <title>Creating Local Copies of External JS for fun and performance: Drupal Starter Module</title>
 <link>http://feedproxy.google.com/~r/MasteringDrupal/~3/_0omDUwOPk4/creating-local-copies-external-js-fun-and-performance-drupal-starter-module</link>
 <description>Often you need to load external JavaScript resources into a Drupal page. Unfortunately those can be from external servers that are slow. Even if the servers are fast, it is great to be able to take advantage of Drupal's JavaScript aggregation to make it a single HTTP request for the JavaScript file instead of multiple.

The attached starter module is useful to create a local copy of external JavaScript files.

This is a task that is really site specific. There are visibility rules and lists of modules to maintain. So, rather than creating a contributed module for it I'm presenting it here as a tutorial. You can also download the &lt;a href="http://www.masteringdrupal.com/files/customlocaljs.tgz"&gt;code for Drupal 6 as a .tgz&lt;/a&gt;.

There are three functions in this starter module.

&lt;h3&gt;List out your files in customlocaljs_files&lt;/h3&gt;

This function is just a piece of configuration to let other functions know which files they are dealing with.

&lt;div class="codeblock"&gt;&lt;code&gt;&lt;span style="color: #000000"&gt;&lt;span style="color: #0000BB"&gt;&amp;lt;?php&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #FF8000"&gt;/**&lt;br /&gt; * A helper function to list all your external js files.&lt;br /&gt; */&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #007700"&gt;function &lt;/span&gt;&lt;span style="color: #0000BB"&gt;customlocaljs_files&lt;/span&gt;&lt;span style="color: #007700"&gt;() {&lt;br /&gt;&amp;nbsp; return array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #DD0000"&gt;'example1' &lt;/span&gt;&lt;span style="color: #007700"&gt;=&amp;gt; &lt;/span&gt;&lt;span style="color: #DD0000"&gt;'http://example.com/number-magic.js'&lt;/span&gt;&lt;span style="color: #007700"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #DD0000"&gt;'exampleb' &lt;/span&gt;&lt;span style="color: #007700"&gt;=&amp;gt; &lt;/span&gt;&lt;span style="color: #DD0000"&gt;'http://example.com/fun-with-advertising.js'&lt;/span&gt;&lt;span style="color: #007700"&gt;,&lt;br /&gt;&amp;nbsp; );&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;

&lt;h3&gt; Download and Add the JavaScript in customlocaljs_init&lt;/h3&gt;
This function shouldn't need any tweaks unless you want to modify exactly which pages on the site the JavaScript should be added to.

&lt;div class="codeblock"&gt;&lt;code&gt;&lt;span style="color: #000000"&gt;&lt;span style="color: #0000BB"&gt;&amp;lt;?php&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #007700"&gt;function &lt;/span&gt;&lt;span style="color: #0000BB"&gt;customlocaljs_init&lt;/span&gt;&lt;span style="color: #007700"&gt;() {&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #FF8000"&gt;// If you want you could also do this in a node_api or wherever it makes sense.&lt;br /&gt;&amp;nbsp; // Only do this in your init if that's where you need to add the js.&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000BB"&gt;$directory &lt;/span&gt;&lt;span style="color: #007700"&gt;= &lt;/span&gt;&lt;span style="color: #0000BB"&gt;file_directory_path&lt;/span&gt;&lt;span style="color: #007700"&gt;() .&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'/customlocaljs'&lt;/span&gt;&lt;span style="color: #007700"&gt;;&lt;br /&gt;&amp;nbsp; foreach (&lt;/span&gt;&lt;span style="color: #0000BB"&gt;customlocaljs_files&lt;/span&gt;&lt;span style="color: #007700"&gt;() as &lt;/span&gt;&lt;span style="color: #0000BB"&gt;$key &lt;/span&gt;&lt;span style="color: #007700"&gt;=&amp;gt; &lt;/span&gt;&lt;span style="color: #0000BB"&gt;$url&lt;/span&gt;&lt;span style="color: #007700"&gt;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #FF8000"&gt;// First make sure that the file is available locally.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000BB"&gt;$file_destination &lt;/span&gt;&lt;span style="color: #007700"&gt;= &lt;/span&gt;&lt;span style="color: #0000BB"&gt;$directory &lt;/span&gt;&lt;span style="color: #007700"&gt;.&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'/'&lt;/span&gt;&lt;span style="color: #007700"&gt;. &lt;/span&gt;&lt;span style="color: #0000BB"&gt;basename&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$url&lt;/span&gt;&lt;span style="color: #007700"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!&lt;/span&gt;&lt;span style="color: #0000BB"&gt;file_exists&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$file_destination&lt;/span&gt;&lt;span style="color: #007700"&gt;)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000BB"&gt;$result &lt;/span&gt;&lt;span style="color: #007700"&gt;= &lt;/span&gt;&lt;span style="color: #0000BB"&gt;drupal_http_request&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$url&lt;/span&gt;&lt;span style="color: #007700"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$result&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;code &lt;/span&gt;&lt;span style="color: #007700"&gt;== &lt;/span&gt;&lt;span style="color: #0000BB"&gt;200&lt;/span&gt;&lt;span style="color: #007700"&gt;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #FF8000"&gt;// Check that the files directory is writable.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #007700"&gt;if (&lt;/span&gt;&lt;span style="color: #0000BB"&gt;file_check_directory&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$directory&lt;/span&gt;&lt;span style="color: #007700"&gt;, &lt;/span&gt;&lt;span style="color: #0000BB"&gt;FILE_CREATE_DIRECTORY&lt;/span&gt;&lt;span style="color: #007700"&gt;)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000BB"&gt;file_save_data&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$result&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;data&lt;/span&gt;&lt;span style="color: #007700"&gt;, &lt;/span&gt;&lt;span style="color: #0000BB"&gt;$directory &lt;/span&gt;&lt;span style="color: #007700"&gt;. &lt;/span&gt;&lt;span style="color: #DD0000"&gt;'/' &lt;/span&gt;&lt;span style="color: #007700"&gt;. &lt;/span&gt;&lt;span style="color: #0000BB"&gt;basename&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$url&lt;/span&gt;&lt;span style="color: #007700"&gt;), &lt;/span&gt;&lt;span style="color: #0000BB"&gt;FILE_EXISTS_REPLACE&lt;/span&gt;&lt;span style="color: #007700"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #FF8000"&gt;// This actually adds the file to the page.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000BB"&gt;drupal_add_js&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$directory &lt;/span&gt;&lt;span style="color: #007700"&gt;.&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'/'&lt;/span&gt;&lt;span style="color: #007700"&gt;. &lt;/span&gt;&lt;span style="color: #0000BB"&gt;basename&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$url&lt;/span&gt;&lt;span style="color: #007700"&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;

&lt;h3&gt;Delete the files every 24 hours: customlocaljs_cron&lt;/h3&gt;

The final purpose is to delete the files every 24 hours. This is important since the code that downloads files only goes to get them if they aren't available. 

&lt;div class="codeblock"&gt;&lt;code&gt;&lt;span style="color: #000000"&gt;&lt;span style="color: #0000BB"&gt;&amp;lt;?php&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #007700"&gt;function &lt;/span&gt;&lt;span style="color: #0000BB"&gt;customlocaljs_cron&lt;/span&gt;&lt;span style="color: #007700"&gt;() {&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #FF8000"&gt;// Redownload the files every day.&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #007700"&gt;if (&lt;/span&gt;&lt;span style="color: #0000BB"&gt;time&lt;/span&gt;&lt;span style="color: #007700"&gt;() - &lt;/span&gt;&lt;span style="color: #0000BB"&gt;variable_get&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'customlocaljs_last_cache'&lt;/span&gt;&lt;span style="color: #007700"&gt;, &lt;/span&gt;&lt;span style="color: #0000BB"&gt;0&lt;/span&gt;&lt;span style="color: #007700"&gt;) &amp;gt;= &lt;/span&gt;&lt;span style="color: #0000BB"&gt;60&lt;/span&gt;&lt;span style="color: #007700"&gt;*&lt;/span&gt;&lt;span style="color: #0000BB"&gt;60&lt;/span&gt;&lt;span style="color: #007700"&gt;*&lt;/span&gt;&lt;span style="color: #0000BB"&gt;24&lt;/span&gt;&lt;span style="color: #007700"&gt;) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #FF8000"&gt;// You have to create this file locally.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #007700"&gt;foreach (&lt;/span&gt;&lt;span style="color: #0000BB"&gt;customlocaljs_files&lt;/span&gt;&lt;span style="color: #007700"&gt;() as &lt;/span&gt;&lt;span style="color: #0000BB"&gt;$key &lt;/span&gt;&lt;span style="color: #007700"&gt;=&amp;gt; &lt;/span&gt;&lt;span style="color: #0000BB"&gt;$url&lt;/span&gt;&lt;span style="color: #007700"&gt;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000BB"&gt;file_delete&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;file_directory_path&lt;/span&gt;&lt;span style="color: #007700"&gt;() .&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'/customlocaljs' &lt;/span&gt;&lt;span style="color: #007700"&gt;. &lt;/span&gt;&lt;span style="color: #DD0000"&gt;'/' &lt;/span&gt;&lt;span style="color: #007700"&gt;. &lt;/span&gt;&lt;span style="color: #0000BB"&gt;basename&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$url&lt;/span&gt;&lt;span style="color: #007700"&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #FF8000"&gt;// Clear aggregated JS files.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #007700"&gt;if (&lt;/span&gt;&lt;span style="color: #0000BB"&gt;variable_get&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'preprocess_js'&lt;/span&gt;&lt;span style="color: #007700"&gt;, &lt;/span&gt;&lt;span style="color: #0000BB"&gt;0&lt;/span&gt;&lt;span style="color: #007700"&gt;)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000BB"&gt;drupal_clear_js_cache&lt;/span&gt;&lt;span style="color: #007700"&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000BB"&gt;variable_set&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'customlocaljs_last_cache'&lt;/span&gt;&lt;span style="color: #007700"&gt;, &lt;/span&gt;&lt;span style="color: #0000BB"&gt;$_SERVER&lt;/span&gt;&lt;span style="color: #007700"&gt;[&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'REQUEST_TIME'&lt;/span&gt;&lt;span style="color: #007700"&gt;]);&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;

And that's it!

Once you've done this you should of course make sure that you are running cron and then bask in the glory that is locally aggregated javascript files.&lt;img src="http://feeds.feedburner.com/~r/MasteringDrupal/~4/_0omDUwOPk4" height="1" width="1"/&gt;</description>
 <comments>http://www.masteringdrupal.com/articles/creating-local-copies-external-js-fun-and-performance-drupal-starter-module#comments</comments>
 <category domain="http://www.masteringdrupal.com/category/topics/6x">6.x</category>
 <category domain="http://www.masteringdrupal.com/category/focus/developer">Developer</category>
 <category domain="http://www.masteringdrupal.com/category/skill-level/intermediate">Intermediate</category>
 <enclosure url="http://www.masteringdrupal.com/files/customlocaljs.tgz" length="1014" type="application/x-gtar" />
 <pubDate>Wed, 27 Apr 2011 21:52:41 +0000</pubDate>
 <dc:creator>greggles</dc:creator>
 <guid isPermaLink="false">192 at http://www.masteringdrupal.com</guid>
<feedburner:origLink>http://www.masteringdrupal.com/articles/creating-local-copies-external-js-fun-and-performance-drupal-starter-module</feedburner:origLink></item>
<item>
 <title>The Drupal Community e-book</title>
 <link>http://feedproxy.google.com/~r/MasteringDrupal/~3/LzrY6mM4r3I/drupal-community-e-book</link>
 <description>&lt;div class="product-info product display"&gt;&lt;span class="uc-price-product uc-price-display uc-price"&gt;$0.00&lt;/span&gt;&lt;/div&gt;&lt;div class="field field-type-text field-field-author"&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                      &lt;div class="field-label-inline-first"&gt;
              Written by:&amp;nbsp;&lt;/div&gt;
                    Ezra Barnett Gildesgame and Greg James Knaddison        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;div class="product-body"&gt;&lt;p&gt;Some people use Drupal for a long time before having direct interaction with this community. These folks might be unaware that the community is out there, or of the benefits of having a good relationship with it.&lt;/p&gt;
&lt;p&gt;In this chapter, we'll introduce the community and give some suggestions for how to interact with it (and get support) to get the best results for you and your website(s).  First, let's start by sharing some basic information about the community. Then we'll talk about finding support. We'll end with some suggestions of ways that you (yes, you!) can say thanks to the Drupal community for the help and free software.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A glance at the community&lt;/li&gt;
&lt;li&gt;Using Drupal.org and Groups.Drupal.org to Get Answers&lt;/li&gt;
&lt;li&gt;Finding the Best Contributed Modules&lt;/li&gt;
&lt;li&gt;Drupal Community Values&lt;/li&gt;
&lt;li&gt;Be Thankful&lt;/li&gt;
&lt;li&gt;Drinking from the fire hose&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div class="add-to-cart"&gt;&lt;form action="/rss.xml"  accept-charset="UTF-8" method="post" id="uc-product-add-to-cart-form-113"&gt;
&lt;div&gt;&lt;input type="hidden" name="qty" id="edit-qty" value="1"  /&gt;
&lt;input type="hidden" name="form_build_id" id="form-608bcea6e6b18e3b2c879fb42079c3a5" value="form-608bcea6e6b18e3b2c879fb42079c3a5"  /&gt;
&lt;input type="hidden" name="form_id" id="edit-uc-product-add-to-cart-form-113" value="uc_product_add_to_cart_form_113"  /&gt;

&lt;/div&gt;&lt;/form&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MasteringDrupal/~4/LzrY6mM4r3I" height="1" width="1"/&gt;</description>
 <category domain="http://www.masteringdrupal.com/category/topics/6x">6.x</category>
 <category domain="http://www.masteringdrupal.com/category/skill-level/beginner">Beginner</category>
 <category domain="http://www.masteringdrupal.com/category/skill-level/intermediate">Intermediate</category>
 <pubDate>Sat, 20 Nov 2010 02:11:56 +0000</pubDate>
 <dc:creator>lisarex</dc:creator>
 <guid isPermaLink="false">113 at http://www.masteringdrupal.com</guid>
<feedburner:origLink>http://www.masteringdrupal.com/books/drupal-community-e-book</feedburner:origLink></item>
<item>
 <title>Improving User Experience with Recommendations e-book</title>
 <link>http://feedproxy.google.com/~r/MasteringDrupal/~3/wOghMfRNoHQ/improving-user-experience-recommendations-e-book</link>
 <description>&lt;div class="product-info product display"&gt;&lt;span class="uc-price-product uc-price-display uc-price"&gt;$0.00&lt;/span&gt;&lt;/div&gt;&lt;div class="field field-type-text field-field-author"&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                      &lt;div class="field-label-inline-first"&gt;
              Written by:&amp;nbsp;&lt;/div&gt;
                    Ezra Barnett Gildesgame and Greg James Knaddison        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;div class="product-body"&gt;&lt;p&gt;If you've ever seen a list such as “Popular News Stores,” “Customers who bought this item also bought” or “Other stories by this author,” then you're familiar with the idea of related and recommended content, and the value these recommendations can add for website visitors. They also add value for site owners, since suggestions (and especially good suggestions) of additional content make people more likely to stay on your site for longer, view more pages, and buy more products.&lt;/p&gt;
&lt;/div&gt;&lt;div class="add-to-cart"&gt;&lt;form action="/rss.xml"  accept-charset="UTF-8" method="post" id="uc-product-add-to-cart-form-111"&gt;
&lt;div&gt;&lt;input type="hidden" name="qty" id="edit-qty-1" value="1"  /&gt;
&lt;input type="hidden" name="form_build_id" id="form-000edc374f6d94d0d404d7b6a40d54b2" value="form-000edc374f6d94d0d404d7b6a40d54b2"  /&gt;
&lt;input type="hidden" name="form_id" id="edit-uc-product-add-to-cart-form-111" value="uc_product_add_to_cart_form_111"  /&gt;

&lt;/div&gt;&lt;/form&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MasteringDrupal/~4/wOghMfRNoHQ" height="1" width="1"/&gt;</description>
 <category domain="http://www.masteringdrupal.com/category/topics/6x">6.x</category>
 <category domain="http://www.masteringdrupal.com/category/skill-level/beginner">Beginner</category>
 <category domain="http://www.masteringdrupal.com/category/general-tags/content-recommendation">content recommendation</category>
 <category domain="http://www.masteringdrupal.com/category/focus/site-builder">Site Builder</category>
 <category domain="http://www.masteringdrupal.com/category/skill-level/intermediate">Intermediate</category>
 <category domain="http://www.masteringdrupal.com/category/skill-level/advanced">Advanced</category>
 <pubDate>Wed, 17 Nov 2010 19:18:58 +0000</pubDate>
 <dc:creator>lisarex</dc:creator>
 <guid isPermaLink="false">111 at http://www.masteringdrupal.com</guid>
<feedburner:origLink>http://www.masteringdrupal.com/books/improving-user-experience-recommendations-e-book</feedburner:origLink></item>
<item>
 <title>Monetizing Your Site e-book</title>
 <link>http://feedproxy.google.com/~r/MasteringDrupal/~3/7VV8ObMcU78/monetizing-your-site-e-book</link>
 <description>&lt;div class="product-info product display"&gt;&lt;span class="uc-price-product uc-price-display uc-price"&gt;$0.00&lt;/span&gt;&lt;/div&gt;&lt;div class="field field-type-text field-field-author"&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                      &lt;div class="field-label-inline-first"&gt;
              Written by:&amp;nbsp;&lt;/div&gt;
                    Ezra Barnett Gildesgame and Greg James Knaddison        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;div class="product-body"&gt;&lt;p&gt;Whether you're looking for a new way to generate income or just trying to cover the costs of operating a website, you've probably wondered how your site will make money with its valuable content. In this chapter, we'll explore several different ways of generating income using external services like Google AdSense and Amazon.com's affiliate program, as well as self-contained systems for selling ads and charging to view and post content.&lt;/p&gt;
&lt;h2&gt;Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Context-Sensitive ads with Google AdSense&lt;/li&gt;
&lt;li&gt;Building a self-contained ad selling system&lt;/li&gt;
&lt;li&gt;Online classifieds: Paying to post&lt;/li&gt;
&lt;li&gt;Subscription only Content&lt;/li&gt;
&lt;li&gt;Summary&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div class="add-to-cart"&gt;&lt;form action="/rss.xml"  accept-charset="UTF-8" method="post" id="uc-product-add-to-cart-form-110"&gt;
&lt;div&gt;&lt;input type="hidden" name="qty" id="edit-qty-2" value="1"  /&gt;
&lt;input type="hidden" name="form_build_id" id="form-d1c11435eb882a883cd5aacc7733b844" value="form-d1c11435eb882a883cd5aacc7733b844"  /&gt;
&lt;input type="hidden" name="form_id" id="edit-uc-product-add-to-cart-form-110" value="uc_product_add_to_cart_form_110"  /&gt;

&lt;/div&gt;&lt;/form&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MasteringDrupal/~4/7VV8ObMcU78" height="1" width="1"/&gt;</description>
 <category domain="http://www.masteringdrupal.com/category/topics/6x">6.x</category>
 <category domain="http://www.masteringdrupal.com/category/skill-level/beginner">Beginner</category>
 <category domain="http://www.masteringdrupal.com/category/focus/site-builder">Site Builder</category>
 <category domain="http://www.masteringdrupal.com/category/skill-level/intermediate">Intermediate</category>
 <pubDate>Wed, 17 Nov 2010 03:15:12 +0000</pubDate>
 <dc:creator>lisarex</dc:creator>
 <guid isPermaLink="false">110 at http://www.masteringdrupal.com</guid>
<feedburner:origLink>http://www.masteringdrupal.com/books/monetizing-your-site-e-book</feedburner:origLink></item>
<item>
 <title>Creating sessions and a schedule with COD</title>
 <link>http://feedproxy.google.com/~r/MasteringDrupal/~3/MIr4R_fpfos/getting-started-cod</link>
 <description>&lt;p&gt;COD, the Conference Organizing Distribution for Drupal, is an easy and streamlined way to build powerful event websites. The recent release of &lt;a href="http://drupal.org/project/cod"&gt;COD Alpha 2&lt;/a&gt; comes with a Views-powered schedule and many other great features.&lt;/p&gt;
&lt;p&gt;In this quick screencast we'll build a single day, two-track conference using the COD Session feature.&lt;/p&gt;
&lt;div class="field field-type-text field-field-embed-code"&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                    &lt;iframe src="http://player.vimeo.com/video/16695306" width="400" height="300" frameborder="0"&gt;&lt;/iframe&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;div class="field field-type-filefield field-field-title-slide"&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                    &lt;a href="/screencast/getting-started-cod" class="imagecache imagecache-title-slide-home imagecache-linked imagecache-title-slide-home_linked"&gt;&lt;img src="http://www.masteringdrupal.com/files/imagecache/title-slide-home/cod-sessions.jpg" alt="" title=""  class="imagecache imagecache-title-slide-home" width="285" height="239" /&gt;&lt;/a&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;div class="field field-type-text field-field-screencast-length"&gt;
      &lt;div class="field-label"&gt;Length:&amp;nbsp;&lt;/div&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                    4 minutes        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://www.masteringdrupal.com/screencast/getting-started-cod" target="_blank"&gt;read more&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MasteringDrupal/~4/MIr4R_fpfos" height="1" width="1"/&gt;</description>
 <comments>http://www.masteringdrupal.com/screencast/getting-started-cod#comments</comments>
 <category domain="http://www.masteringdrupal.com/category/topics/6x">6.x</category>
 <category domain="http://www.masteringdrupal.com/category/skill-level/beginner">Beginner</category>
 <category domain="http://www.masteringdrupal.com/category/topics/module">Module</category>
 <category domain="http://www.masteringdrupal.com/category/focus/site-builder">Site Builder</category>
 <pubDate>Wed, 10 Nov 2010 15:19:56 +0000</pubDate>
 <dc:creator>ben</dc:creator>
 <guid isPermaLink="false">105 at http://www.masteringdrupal.com</guid>
<feedburner:origLink>http://www.masteringdrupal.com/screencast/getting-started-cod</feedburner:origLink></item>
<item>
 <title>Smart Landing Pages with Panels e-book</title>
 <link>http://feedproxy.google.com/~r/MasteringDrupal/~3/0vaXrdeQlts/smart-landing-pages-panels-e-book</link>
 <description>&lt;div class="product-info product display"&gt;&lt;span class="uc-price-product uc-price-display uc-price"&gt;$5.00&lt;/span&gt;&lt;/div&gt;&lt;div class="field field-type-text field-field-author"&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                      &lt;div class="field-label-inline-first"&gt;
              Written by:&amp;nbsp;&lt;/div&gt;
                    Ezra Barnett Gildesgame and Greg James Knaddison        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;div class="product-image"&gt;&lt;div class="main-product-image"&gt;&lt;a href="http://www.masteringdrupal.com/files/imagecache/product_full/screen_shot_2010-11-20_at_10.04.39.png" title="" rel="lightbox[0]"&gt;&lt;img src="http://www.masteringdrupal.com/files/imagecache/product/screen_shot_2010-11-20_at_10.04.39.png" alt="" title=""  class="imagecache imagecache-product" width="200" height="126" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="more-product-images"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="product-body"&gt;&lt;p&gt;Panels makes it relatively easy to integrate your Drupal site's content into dynamic landing pages with customized layouts.&lt;/p&gt;
&lt;p&gt;This PDF can be downloaded instantly after purchase. &lt;a href="http://www.masteringdrupal.com/files/mastering_drupal.zip"&gt;Download the Features file&lt;/a&gt; that provides essential assets.&lt;/p&gt;
&lt;/div&gt;&lt;div class="add-to-cart"&gt;&lt;form action="/rss.xml"  accept-charset="UTF-8" method="post" id="uc-product-add-to-cart-form-103"&gt;
&lt;div&gt;&lt;input type="hidden" name="qty" id="edit-qty-3" value="1"  /&gt;
&lt;input type="submit" name="op" id="edit-submit-103" value="Add to cart"  class="form-submit node-add-to-cart" /&gt;
&lt;input type="hidden" name="form_build_id" id="form-ea31b8107d149ecd7e8a9d1f6d400d58" value="form-ea31b8107d149ecd7e8a9d1f6d400d58"  /&gt;
&lt;input type="hidden" name="form_id" id="edit-uc-product-add-to-cart-form-103" value="uc_product_add_to_cart_form_103"  /&gt;

&lt;/div&gt;&lt;/form&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.masteringdrupal.com/books/smart-landing-pages-panels-e-book" target="_blank"&gt;read more&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MasteringDrupal/~4/0vaXrdeQlts" height="1" width="1"/&gt;</description>
 <category domain="http://www.masteringdrupal.com/category/topics/6x">6.x</category>
 <category domain="http://www.masteringdrupal.com/category/skill-level/beginner">Beginner</category>
 <category domain="http://www.masteringdrupal.com/category/focus/site-builder">Site Builder</category>
 <category domain="http://www.masteringdrupal.com/category/skill-level/intermediate">Intermediate</category>
 <enclosure url="http://www.masteringdrupal.com/files/mastering_drupal.zip" length="9089" type="application/zip" />
 <pubDate>Fri, 05 Nov 2010 20:38:01 +0000</pubDate>
 <dc:creator>lisarex</dc:creator>
 <guid isPermaLink="false">103 at http://www.masteringdrupal.com</guid>
<feedburner:origLink>http://www.masteringdrupal.com/books/smart-landing-pages-panels-e-book</feedburner:origLink></item>
<item>
 <title>Mastering Views e-book</title>
 <link>http://feedproxy.google.com/~r/MasteringDrupal/~3/2cdjtueGxRM/mastering-views-e-book</link>
 <description>&lt;div class="product-info product display"&gt;&lt;span class="uc-price-product uc-price-display uc-price"&gt;$5.00&lt;/span&gt;&lt;/div&gt;&lt;div class="field field-type-text field-field-author"&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                      &lt;div class="field-label-inline-first"&gt;
              Written by:&amp;nbsp;&lt;/div&gt;
                    Ezra Barnett Gildesgame and Greg James Knaddison        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;div class="product-image"&gt;&lt;div class="main-product-image"&gt;&lt;a href="http://www.masteringdrupal.com/files/imagecache/product_full/masteringviews.png" title="" rel="lightbox[1]"&gt;&lt;img src="http://www.masteringdrupal.com/files/imagecache/product/masteringviews.png" alt="" title=""  class="imagecache imagecache-product" width="200" height="120" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="more-product-images"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="product-body"&gt;&lt;p&gt;The &lt;a href="http://drupal.org/project/views"&gt;Views&lt;/a&gt; module addresses a common need for people with a website full of content: displaying that content without having programming knowhow.&lt;/p&gt;
&lt;p&gt;Views is one of the most innovative and important Contributed modules, empowering site administrators to easily create complex displays of content, and has changed the way developers build their modules.&lt;/p&gt;
&lt;p&gt;This PDF can be downloaded instantly after purchase.&lt;/p&gt;
&lt;/div&gt;&lt;div class="add-to-cart"&gt;&lt;form action="/rss.xml"  accept-charset="UTF-8" method="post" id="uc-product-add-to-cart-form-85"&gt;
&lt;div&gt;&lt;input type="hidden" name="qty" id="edit-qty-4" value="1"  /&gt;
&lt;input type="submit" name="op" id="edit-submit-85" value="Add to cart"  class="form-submit node-add-to-cart" /&gt;
&lt;input type="hidden" name="form_build_id" id="form-183a327a9a4732c925e62f62179fc87c" value="form-183a327a9a4732c925e62f62179fc87c"  /&gt;
&lt;input type="hidden" name="form_id" id="edit-uc-product-add-to-cart-form-85" value="uc_product_add_to_cart_form_85"  /&gt;

&lt;/div&gt;&lt;/form&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.masteringdrupal.com/books/mastering-views-e-book" target="_blank"&gt;read more&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MasteringDrupal/~4/2cdjtueGxRM" height="1" width="1"/&gt;</description>
 <category domain="http://www.masteringdrupal.com/category/topics/6x">6.x</category>
 <category domain="http://www.masteringdrupal.com/category/skill-level/beginner">Beginner</category>
 <category domain="http://www.masteringdrupal.com/category/focus/site-builder">Site Builder</category>
 <category domain="http://www.masteringdrupal.com/category/skill-level/intermediate">Intermediate</category>
 <pubDate>Sun, 10 Oct 2010 15:49:23 +0000</pubDate>
 <dc:creator>greggles</dc:creator>
 <guid isPermaLink="false">85 at http://www.masteringdrupal.com</guid>
<feedburner:origLink>http://www.masteringdrupal.com/books/mastering-views-e-book</feedburner:origLink></item>
<item>
 <title>Druplicon Llama hats</title>
 <link>http://feedproxy.google.com/~r/MasteringDrupal/~3/jcmORA3BoYc/druplicon-llama-hats</link>
 <description>&lt;div class="product-info product display"&gt;&lt;span class="uc-price-product uc-price-display uc-price"&gt;$0.00&lt;/span&gt;&lt;/div&gt;&lt;div class="product-image"&gt;&lt;div class="main-product-image"&gt;&lt;a href="http://www.masteringdrupal.com/files/imagecache/product_full/4558424100_6646290f75_z.jpg" title="Webchick and Vauxia in Druplicon hats" rel="lightbox[2]"&gt;&lt;img src="http://www.masteringdrupal.com/files/imagecache/product/4558424100_6646290f75_z.jpg" alt="" title=""  class="imagecache imagecache-product" width="200" height="150" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="more-product-images"&gt;&lt;a href="http://www.masteringdrupal.com/files/imagecache/product_full/4557796209_1164524da0_z.jpg" title="Coltrane and Damz in Druplicon hats" rel="lightbox[2]"&gt;&lt;img src="http://www.masteringdrupal.com/files/imagecache/uc_thumbnail/4557796209_1164524da0_z.jpg" alt="" title=""  class="imagecache imagecache-uc_thumbnail" width="85" height="64" /&gt;&lt;/a&gt;&lt;a href="http://www.masteringdrupal.com/files/imagecache/product_full/4557794727_468d9ab54f_z.jpg" title="IslandUsurper in Druplicon hat" rel="lightbox[2]"&gt;&lt;img src="http://www.masteringdrupal.com/files/imagecache/uc_thumbnail/4557794727_468d9ab54f_z.jpg" alt="" title=""  class="imagecache imagecache-uc_thumbnail" width="85" height="64" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="product-body"&gt;&lt;p&gt;&lt;em&gt;Currently sold out - contact us if you are interested in purchasing one and we'll add you to the list to contact when we get more.&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;These hats are made from a mix of alpaca, llama and synthetic wool.&lt;/li&gt;
&lt;li&gt;They have Druplicon on them.&lt;/li&gt;
&lt;li&gt;They are reversible with a llama design on the inside.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div class="add-to-cart"&gt;&lt;form action="/rss.xml"  accept-charset="UTF-8" method="post" id="uc-product-add-to-cart-form-84"&gt;
&lt;div&gt;&lt;input type="hidden" name="qty" id="edit-qty-5" value="1"  /&gt;
&lt;input type="hidden" name="form_build_id" id="form-3bdd6925d23993e8b71aa1d7d598a2a9" value="form-3bdd6925d23993e8b71aa1d7d598a2a9"  /&gt;
&lt;input type="hidden" name="form_id" id="edit-uc-product-add-to-cart-form-84" value="uc_product_add_to_cart_form_84"  /&gt;

&lt;/div&gt;&lt;/form&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.masteringdrupal.com/products/druplicon-llama-hats" target="_blank"&gt;read more&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MasteringDrupal/~4/jcmORA3BoYc" height="1" width="1"/&gt;</description>
 <pubDate>Sun, 10 Oct 2010 15:43:51 +0000</pubDate>
 <dc:creator>greggles</dc:creator>
 <guid isPermaLink="false">84 at http://www.masteringdrupal.com</guid>
<feedburner:origLink>http://www.masteringdrupal.com/products/druplicon-llama-hats</feedburner:origLink></item>
</channel>
</rss>

