<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>Raised By Turtles&#187; drupal</title>
	<atom:link href="http://raisedbyturtles.org/tag/drupal/feed/" rel="self" type="application/rss+xml" />
	<link>http://raisedbyturtles.org</link>
	<description>None of the News that's Fit to Print</description>
	<lastBuildDate>Sat, 04 Feb 2012 01:10:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Tax Time: Getting Sales and Shipping Data out of Ubercart</title>
		<link>http://raisedbyturtles.org/sales-tax-shipping-data-ubercart/</link>
		<comments>http://raisedbyturtles.org/sales-tax-shipping-data-ubercart/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 03:53:47 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[ubercart]]></category>

		<guid isPermaLink="false">http://raisedbyturtles.org/?p=703</guid>
		<description><![CDATA[We needed to grab a special report in time for tax season. Fortunately, with a bit of SQL it's easy t grab pretty much anything you want from Ubercart]]></description>
			<content:encoded><![CDATA[<p>A client needed to know how much he had charged in sales tax in the state of California in 2011, the total for those orders, and the amount charged to the customer for shipping. This is because, as it turns out, shipping is not taxable by the state of California, but any amount over and above the actual amount paid to the shipper <em>is taxable</em>. So in other words, if UPS charges you $2 to ship the package, but you charged $4 for shipping, the second two dollars is taxable. This is a bit of problem in this case because the client uses a flat rate for shipping, which means in California, the cost of shipping is probably high on most orders, and therefore taxable.</p>
<p>You can pull this data from Ubercart simply enough but it requires a few subqueries to get all the data you need. This is because both the sales data and shipping are in the same table, namely <em>uc_order_line_items</em>. So you need to pull each line item from the table as a separate subquery.</p>
<p>There&#8217;s one other gotcha. Ubercart carries tax through to four decimal places in the database, so you need to round that to the nearest penny, as Ubercart does on checkout. This gives you a spreadsheet with all the values you need, minus the actual amount paid for shipping, which you&#8217;ll have to pull from Quickbooks or whereever.</p>
<p>It&#8217;s possible, also, that you&#8217;ll have to adjust for your server time if your server is in another time zone. In other words, you may need to adjust the timestamp to take that into account. And of course, Ubercart stores your order dates and times as Unix timestamps, so we have to take that into account when we do whatever conversions we need. Fortunately MySQL handles Unix timestamps with no problem.</p>
<p>When all is said and done, we end up with the following query:</p>
<pre class="brush: sql; title: ; notranslate">
SELECT FROM_UNIXTIME(o.created,&quot;%Y-%m-%d&quot;) AS 'Date', o.order_id AS 'Order ID',
    tax.sales_tax AS `Sales Tax`, shipping.shipping AS 'Shipping Charged',
    o.order_total AS 'Order Total', o.billing_postal_code AS 'Zip Code', o.billing_city AS 'City', z.zone_name AS 'State'
FROM
    (SELECT ROUND(amount,2) AS sales_tax, order_id FROM uc_order_line_items WHERE TYPE LIKE 'tax') AS tax,
    (SELECT amount AS shipping, order_id FROM uc_order_line_items WHERE TYPE LIKE 'shipping') AS shipping,
    uc_orders AS o,
    uc_zones AS z
WHERE o.order_status LIKE 'completed'
    AND tax.order_id LIKE o.order_id AND shipping.order_id LIKE o.order_id
    AND o.created &gt; UNIX_TIMESTAMP('2010-12-31 23:59:59') AND o.created &lt; UNIX_TIMESTAMP('2012-01-01 00:00:00')
    AND z.zone_id LIKE o.billing_zone
    AND o.billing_zone LIKE '12'
ORDER BY o.billing_postal_code;
</pre>
<p>Notice that we are ordering by billing postal code. This is because in many ways, this is our most relevant piece of information. Many of the client&#8217;s customers order while on the road, so the billing address is the one that counts for tax purposes (the same as for a gift purchase or whatever). The postal code typically determines the tax rate, so it allows us to effectively sort by location. Once exported into an Excel spreadsheet, though, we can of course sort and hash however we want.</p>
<p>Here&#8217;s a sample of the final output in SQLYog (a Windows MySQL client):</p>
<div id="attachment_707" class="wp-caption alignright" style="width: 310px"><a href="http://raisedbyturtles.org/wp-content/uploads/ubercart-data.png" rel="lightbox[703]" title="SQLYog Screenshot"><img src="http://raisedbyturtles.org/wp-content/uploads/ubercart-data-300x82.png" alt="sample output" title="SQLYog Screenshot" width="300" height="82" class="size-medium wp-image-707" /></a><p class="wp-caption-text">Sample Output from SQLYog</p></div>
<p>Enjoy!</p>
<hr />
]]></content:encoded>
			<wfw:commentRss>http://raisedbyturtles.org/sales-tax-shipping-data-ubercart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding robots meta tags to Drupal nodes having a given taxonomy term</title>
		<link>http://raisedbyturtles.org/robots-meta-drupal-nodes-by-taxonomy-term/</link>
		<comments>http://raisedbyturtles.org/robots-meta-drupal-nodes-by-taxonomy-term/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 00:56:43 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[meta]]></category>
		<category><![CDATA[robots]]></category>
		<category><![CDATA[taxonomy]]></category>

		<guid isPermaLink="false">http://raisedbyturtles.org/?p=554</guid>
		<description><![CDATA[There is no Drupal 6 module that lets you add a meta noindex to pages tagged with a specific term, but here's how to do it easily in the theme layer. ]]></description>
			<content:encoded><![CDATA[<p>Well, the title is a mouthful, but here&#8217;s the situation. You have some nodes that are classified with a certain taxonomy term and you want to tell Google not to index those pages, how do you do it? There is the excellent <a href="http://drupal.org/project/nodewords">nodewords</a> module that lets you manage all kinds of meta tags, including most use cases for the robots meta tag. You can assign meta robots for the taxonomy listing pages, but not for nodes that are tagged with a certain term. For that, you need a little scripting.</p>
<p>Fortunately, Drupal provides you with <a href="http://api.drupal.org/api/drupal/modules--taxonomy--taxonomy.module/function/taxonomy_node_get_terms_by_vocabulary/6">taxonomy_node_get_terms_by_vocabulary()</a>. In Drupal 6, this takes the $node object and a vocabulary ID. Then you just have to cycle through the terms it returns and see if your term is in there. </p>
<p>In my case, I have some pages that need to be publicly accessible, but must not be in Google or other indexes. So I let those get tagged with a special taxonomy term (&#8220;custom&#8221; in my case, but it could be &#8220;noindex&#8221; or anything). All you need to know is the vocabulary ID and the term ID for the term you&#8217;re testing for and you can apply the meta noindex to any node. Sometimes node_load() carries a high cost, but since we&#8217;re only testing this on nodes and we&#8217;re testing for the node in question, that data should be cached and should not result in another database query.</p>
<pre class="brush: php; title: ; notranslate">
function MYTHEME_preprocess_page(&amp;$vars, $hook) {

// if this is a node and not being edited and it is tagged with term 41, then add a &quot;noindex&quot; tag
   if (arg(0) == 'node' &amp;&amp; is_numeric(arg(1)) &amp;&amp; is_null(arg(2))) {
	    $node = node_load(arg(1));
	    $terms = taxonomy_node_get_terms_by_vocabulary($node, 2);

		foreach($terms as $term) {
		  if ($term-&gt;tid == '41') {
			$vars['head'] = drupal_set_html_head('&lt;meta name=&quot;robots&quot; content=&quot;noindex&quot; /&gt;');
		    break;
		  }
		}
	}
}
</pre>
<p>In order to get the meta tag to show, you&#8217;ll need to clear your caches.</p>
]]></content:encoded>
			<wfw:commentRss>http://raisedbyturtles.org/robots-meta-drupal-nodes-by-taxonomy-term/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ubercart not Charging Shipping</title>
		<link>http://raisedbyturtles.org/ubercart-not-charging-shipping/</link>
		<comments>http://raisedbyturtles.org/ubercart-not-charging-shipping/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 19:01:09 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[ubercart]]></category>

		<guid isPermaLink="false">http://raisedbyturtles.org/?p=545</guid>
		<description><![CDATA[If your customer has Javascript turned off, he may accidentally be awarded free shipping. The fix is simple.]]></description>
			<content:encoded><![CDATA[<p>Recently an order came through an Ubercart shop I built where the customer managed to avoid getting charged for shipping. Poking around, I tried disabling Javascript, since the shipping quotes are driven by Javascript.  At this point, of the customer checks out with Paypal, he&#8217;s home free. No shipping required. But even if paying with a credit card, which also requires Javascript, he has to enable Javascript. If he does so and then presses  the Checkout button, he will be brought back to the page to fill in credit card details, but the shipping quote will not fire unless he clicks &#8220;Calculate Shipping.&#8221;</p>
<p>As it turns out, you can simply require the form submission to fail just like it does for credit cards and bring the user back to the checkout details page. To do so, simply go to Admin -&gt; Store Administration -&gt; Configuration -&gt; Shipping Quote Settings (/admin/store/settings/quotes/edit) and turn on &#8220;Prevent the customer from completing an order if a shipping quote is not selected.&#8221;</p>
<div id="attachment_546" class="wp-caption aligncenter" style="width: 310px"></p>
<div class="mceTemp mceIEcenter">
<dl id="attachment_546" class="wp-caption aligncenter" style="width: 310px;">
<dt class="wp-caption-dt"><a href="http://raisedbyturtles.org/wp-content/uploads/shipping-quote-settings.png" rel="lightbox[545]" title="Ubercart Shipping Quote settings screenshot"><img class="size-medium wp-image-546" title="Ubercart Shipping Quote settings screenshot" src="http://raisedbyturtles.org/wp-content/uploads/shipping-quote-settings-300x94.png" alt="Ubercart Shipping Quote settings screenshot" width="300" height="94" /></a><p class="wp-caption-text">Ubercart: require customer to select shipping</p></div>
</dt>
<dd class="wp-caption-dd">Ubercart: require customer to select shipping</dd>
</dl>
</div>
<p>And that&#8217;s pretty much it &#8211; just check that setting and no more accidental free shipping.</p>
]]></content:encoded>
			<wfw:commentRss>http://raisedbyturtles.org/ubercart-not-charging-shipping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubercart Quickbooks Integration and Ubercart Shipping Integration Options</title>
		<link>http://raisedbyturtles.org/ubercart-quickbooks-integration-and-ubercart-shipping-integration-options/</link>
		<comments>http://raisedbyturtles.org/ubercart-quickbooks-integration-and-ubercart-shipping-integration-options/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 06:30:53 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[quickbooks]]></category>
		<category><![CDATA[shipping]]></category>
		<category><![CDATA[ubercart]]></category>
		<category><![CDATA[webgility]]></category>

		<guid isPermaLink="false">http://raisedbyturtles.org/?p=537</guid>
		<description><![CDATA[Integrating shipping with an online store has it&#8217;s share of challenges and is a common subject of conversation in the forums for Ubercart (USPS Shipping Labels), osCommerce (non-answers on USPS integration and no answer though there does seem to be some integration). Sadly, if you should be so lucky as to be on osCommerce, X-Cart, [...]]]></description>
			<content:encoded><![CDATA[<p>Integrating shipping with an online store has it&#8217;s share of challenges and is a common subject of conversation in the forums for Ubercart (<a href="http://www.ubercart.org/forum/ideas_and_suggestions/466/usps_print_labels">USPS Shipping Labels</a>), osCommerce (<a href="http://forums.oscommerce.com/topic/344407-print-shipping-labels-for-ups-fedex-andor-usps/">non-answers on USPS integration</a> and <a href="http://forums.oscommerce.com/topic/367029-ups-fedex-and-us-mail-shipping-labels/">no answer</a> though there does seem to be <a href="http://addons.oscommerce.com/info/1498">some integration</a>). Sadly, if you should be so lucky as to be on osCommerce, X-Cart, Zen Cart, Magento, CRE Loaded or Cube Cart, you can get Quickbooks and shipping integration for only $160 from <a href="http://www.magneticone.com/store/advanced_search_result.php?keywords=quickbooks&amp;x=0&amp;y=0">Magnetic One</a>. Some of these are good carts and not expensive (Cube Cart), but for one reason or another I rejected them for the project in question (mostly because of Ubercart&#8217;s incredible ability to structure, remix and present data).</p>
<p>Webgility&#8217;s eCC seems to be the leading solution for most carts and the ones that have a really nice shipping integration are mostly hosted solutions, which poses a problem if your store has out of the ordinary situations. So what are the options?</p>
<h2>Webgility eCC</h2>
<p>This is actually a great solution. It has only one real problem from our perspective – it expect all computers to be on the same network. This is not, as it happens, our use case. The ony downsides here seem to be that to get eCC working, you have to have Quickbooks working and if your copies of eCC will be running in a non-networked environment, you have to have 2 full licenses, rather than a full and an add-on license. So the total extra cost is $170 extra for a full eCC license and whatever it costs for a cheap, outdated copy of Quickbooks on EBay (about $50). So for $220, this issue goes away. </p>
<p>In addition, you&#8217;re on the hook for a monthly fee of about $16-$35 or so, which is the cost to have a Stamps.com or Endicia Dazzle account which is required for shipping label printing to work. This is typical of most of these systems and not eCC specific.</p>
<h2>Deep Thought Courrier</h2>
<p>Deep Thought Courrier handles only the Quickbooks end and is $500, so a fair bit pricier than eCC. On the plus side, the Courrier Deep Thought website is actually powered by Ubercart, so they are presumably eating their own dogfood. The app also works with Cubecart and osCommerce. But this still leaves the shipping integration unsolved.</p>
<h2>(eCC OR Deep Thought Courrier) + Pony Express Mailer</h2>
<p>Meanwhile, <a href="http://ponyexpressmailer.com/index.php">Pony Express Mailer</a> handles only shipping integration, though I use the term &quot;integration&quot; a bit loosely. Pony Express is only $40 and connects to a database <em>if it&#8217;s local</em> and then to USPS Click n Ship. Of course, an e-commerce site is not going to have a local database, so that means creating a method of building an XML file in your store, downloading that, and then uploading it to Pony Express. At that point, Pony Express supposedly integrates with Click n&#8217; Ship, though I can&#8217;t test this because their link on their free trial page is broken. Hopefully they&#8217;ll get back to me soon.</p>
<p>The disadvantage here is the extra step required: open website, download orders, open orders from Pony Express for shipping, and then input shipping info into the site, which presumably is going to be a manual cut and paste affair.</p>
<p>The advantage is that it uses Click n&#8217; Ship directly, without going through Stamps.com or Endicia, and thus has no monthly fee. This means a minimum savings of around $200/year.</p>
<h2>Atandra T-HUB</h2>
<p><a href="http://www.atandra.com/quickbooks-shopping-cart-integration-compatibility.html">Atandra T-HUB</a> is basically the same functionality as eCC, though a fair bit more expensive. If you want Quickbooks and shipping integration, you start at $500 with additional fees for support contracts ($250 per year) and setup and training ($250). Unfortunately, T-HUB does not have an off-the-shelf Ubercart integration, despite supporting a zillion other carts (sigh). So for Ubercart you have<a href="http://www.support.atandra.com/index.php?_m=knowledgebase&amp;_a=viewarticle&amp;kbarticleid=1&amp;nav=0,2"> three options</a></p>
<ul>
<li>Use their CSV datafile option. Essentially, have your store generate a CSV file, download it, load it into T-HUB and off you go. On the other hand, ugh&#8230; Not a very convenient solutions</li>
<li>Hire them to do a custom integration. Let&#8217;s assume this is not cheap</li>
<li>Do it yourself based on their published XML spec. In this case, you must pay about $450–$700 to have your integration &quot;certified&quot; and of course you still pay the T-HUB license fees.</li>
</ul>
<h2>Farther Afield</h2>
<p>If you want to look outside the Book, then you can use <a href="http://www.xtuple.com/postbooks">xTuple/Postbooks</a> which is sort of an open source Quickbooks as near as I can tell (and more — it looks like a full Enterprise Resource Management system) and it has <a href="http://www.xtuple.org/ubercart-integration">full Ubercart integration</a>. That will, of course, be a massively hard sell to anyone who already has a business running on Quickbooks.</p>
<p>Then there have been some attempts at a direct Quickbooks integration with Ubercart. That still leaves the shipping problem unsolved, but the bigger problem is that neither of these projects, either <a href="http://drupal.org/project/uc_qb">Ubercart Quickbooks Integration</a> or <a href="http://drupal.org/project/qb">Quickbooks API</a> have ever made it as far as an official stable release. Since this is critical financial data were talking about, it would be nice to see something a lot more mature, but it&#8217;s a potential place to start if you&#8217;re looking to roll your own. If you want to go that route, it looks like the best place to start is <a href="https://github.com/harking/Quickbooks-API/">George Montana Harkin&#8217;s fork of the QB API project</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://raisedbyturtles.org/ubercart-quickbooks-integration-and-ubercart-shipping-integration-options/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using a View as a Content Field in Drupal</title>
		<link>http://raisedbyturtles.org/view-as-content-field-in-drupal/</link>
		<comments>http://raisedbyturtles.org/view-as-content-field-in-drupal/#comments</comments>
		<pubDate>Tue, 02 Nov 2010 19:01:01 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[node reference]]></category>
		<category><![CDATA[views]]></category>

		<guid isPermaLink="false">http://raisedbyturtles.org/?p=498</guid>
		<description><![CDATA[Sometimes you're just dying to bring the power of views formatting to individual CCK fields. The Node Reference Views modules does just that.]]></description>
			<content:encoded><![CDATA[<p>Sometimes in Drupal you&#8217;d like a field that pulls data from other fields, possibly other content types or who knows. If it&#8217;s relatively simple, you can use the <a href="http://drupal.org/project/computed_field">Computed Field module</a> to pull data straight from the database. But if you want to get really tricky, you can use the <a href="http://drupal.org/project/nodereference_views">Node Reference Views</a> module. For example, let&#8217;s say you want to include the weights of individual components of an item, so you get a dropdown list of components to choose from, then once you&#8217;ve chosen them, they will be displayed in your field formatted as you&#8217;ve selected in your View. In other words, imagine that you&#8217;re formatting a list of components using Views as you might normally do, but now you insert that in your node as a field.</p>
<p>So in short you use Node Reference to set the <em>source</em> of the data and you use Node Reference Views to set the <em>format</em> of the data.</p>
<p>Enable both modules.</p>
<p>Now, add a new field to your content type. You&#8217;ll have three choices &#8211; checkboxes, select list or auto-complete. It doesn&#8217;t really make any difference. This is just how you&#8217;re going to choose which ones to include. Select list works well for a medium number of choices %raisedbyturtles.orgexample the total number of components you&#8217;ll have available). On the next screen where you&#8217;re configuring the field, choose which content types are going to be available. In our case we have a special content type for components.</p>
<div id="attachment_512" class="wp-caption aligncenter" style="width: 421px"><a href="http://raisedbyturtles.org/wp-content/uploads/set-content-types.png" rel="lightbox[498]" title="Set the content types"><img src="http://raisedbyturtles.org/wp-content/uploads/set-content-types.png" alt="" title="Set the content types" width="411" height="150" class="size-full wp-image-512" /></a><p class="wp-caption-text">Choose your content types</p></div>
<p>Now we have to create view using the same name as the field type. If you have forgotten what you called it, raisedbyturtles.orgink to get the field name (you can also edit the field and it will tell you on the edit screen).</p>
<div id="attachment_507" class="wp-caption aligncenter" style="width: 310px"><a href="http://raisedbyturtles.org/wp-content/uploads/field-name.png" rel="lightbox[498]" title="Click to enlarge"><img src="http://raisedbyturtles.org/wp-content/uploads/field-name-300x68.png" alt="Hovering over link to get field name" title="Click to enlarge" width="300" height="68" class="size-medium wp-image-507" /></a><p class="wp-caption-text">This field name must be your view name as well (click to enlarge)</p></div>
<p>Now go over to the Views listing and create a new view and give it the same name as the field. In this case nr_component_weights. The view in this case is simple — we just grab the name of the component and the weight. We format it as fields (inline) and rows.</p>
<div id="attachment_511" class="wp-caption aligncenter" style="width: 310px"><a href="http://raisedbyturtles.org/wp-content/uploads/views-screen.png" rel="lightbox[498]" title="Views Settings (click to enlarge)"><img src="http://raisedbyturtles.org/wp-content/uploads/views-screen-300x185.png" alt="Views settings screen" title="Views Settings (click to enlarge)" width="300" height="185" class="size-medium wp-image-511" /></a><p class="wp-caption-text">Views Settings (click to enlarge)</p></div>
<p>Then, here&#8217;s the magic — under <em>Display fields</em> (as opposed to <em>Manage fields</em>) you can choose View as the display mode. The field will now automatically use the View that has the same name.</p>
<div id="attachment_510" class="wp-caption aligncenter" style="width: 310px"><a href="http://raisedbyturtles.org/wp-content/uploads/select-display-view.png" rel="lightbox[498]" title="Select Display Type"><img src="http://raisedbyturtles.org/wp-content/uploads/select-display-view-300x49.png" alt="Display fields screenshot" title="Select Display Type" width="300" height="49" class="size-medium wp-image-510" /></a><p class="wp-caption-text">Choose the View display formatter</p></div>
<p>Now when you go to your node edit screen, you can select whichever nodes (in this case Components) you want to include.</p>
<div id="attachment_508" class="wp-caption aligncenter" style="width: 328px"><img src="http://raisedbyturtles.org/wp-content/uploads/node-selection.png" alt="Screenshot: Node selection on edit screen" title="Node selection on edit screen" width="318" height="115" class="size-full wp-image-508" /><p class="wp-caption-text">Select the nodes you want included in the view</p></div>
<p>Then when you view your page, it will include a field that consists of those nodes, formatted by the View you just created.<br />
<div id="attachment_509" class="wp-caption aligncenter" style="width: 437px"><img src="http://raisedbyturtles.org/wp-content/uploads/result.png" alt="screenshot: as shown to end user" title="Resulting Output" width="427" height="245" class="size-full wp-image-509" /><p class="wp-caption-text">Voila - views output as a field</p></div></p>
<p>Magic!</p>
]]></content:encoded>
			<wfw:commentRss>http://raisedbyturtles.org/view-as-content-field-in-drupal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pull Ubercart Product Options onto Page Using Computed Field</title>
		<link>http://raisedbyturtles.org/pull-ubercart-product-options-onto-page-using-computed-field/</link>
		<comments>http://raisedbyturtles.org/pull-ubercart-product-options-onto-page-using-computed-field/#comments</comments>
		<pubDate>Tue, 02 Nov 2010 05:53:38 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[computed field]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[ubercart]]></category>

		<guid isPermaLink="false">http://raisedbyturtles.org/?p=503</guid>
		<description><![CDATA[How to make product options into a displayable field in Ubercart]]></description>
			<content:encoded><![CDATA[<p>This is just a little tip that came up because I was working on a shop that has a large number of product options in a select list and we want those to be more scannable and searchable in plain text columns as a field. In order to get this into a field you can use the <a href="http://drupal.org/project/computed_field">Computed Field module</a> which will let you enter PHP code and execute and output it. It has some advantages over enabling the PHP filter</p>
<ol>
<li>You don&#8217;t have to actually enable the PHP filter, which cuts down on the risk</li>
<li>The resulting field won&#8217;t be editable by just anyone, but only people who have rights to manage content types</li>
<li>full CCK integration</li>
<li>Options for storing in DB or not, so you can effectively cache the computed value, which in the case we&#8217;ll look at here, has a bit of overhead.</li>
</ol>
<p>One thing to keep in mind: if you do store the value in the database, I believe this will not update until you save the node. I&#8217;m not sure if there&#8217;s a refresh mechanism or not.</p>
<p>This is pretty simple &#8211; just enable the <a href="http://drupal.org/project/computed_field">Computed Field module</a> and create a new field on your content type and make it a Computed Field type.</p>
<p>Then in the computed field, you just add your PHP to grab what you need. In our case, we want to grab the attribute options that are specific to the actual node that we&#8217;re looking at.</p>
<p>Obviously, this is hardcoded for Attribute 1. </p>
<pre class="brush: php; light: true; title: ; notranslate">
$result = db_query(&quot;select ao.name from
                {uc_product_options} as po, {uc_attribute_options} as ao
                 where ao.aid='1' AND ao.oid=po.oid AND nid='%d'
                 order by `name`&quot;, $node-&gt;nid);

$items = array();
while ($row = db_fetch_object($result)) {
  $items[] = check_plain($row-&gt;name);
}
if (empty($items))
{
 $node_field[0]['value'] = '';
}
else
{
  $num_options = count($items);
  $leftside = '';
  $rightside = '';
  $colsize = intval($num_options/2);

  for ($i=0; $i&lt;$colsize; $i++) {
      $leftside .= '&lt;li&gt;' . $items[$i] . '&lt;/li&gt;';
  }
  $leftside = '&lt;ul class=&quot;left half&quot;&gt;'. $leftside . '&lt;/ul&gt;';
  for ($i=$colsize; $i&lt;$num_options; $i++) {
      $rightside .= '&lt;li&gt;' . $items[$i] . '&lt;/li&gt;';
  }
  $rightside = (empty($rightside)) ? '' : '&lt;ul class=&quot;right half&quot;&gt;'. $rightside . '&lt;/ul&gt;';
$items = array();
  $node_field[0]['value'] = $leftside . $rightside;
}
</pre>
<p>And then to output it, in the Display field, </p>
<pre class="brush: php; light: true; title: ; notranslate">
$display = $node_field_item['value'];
</pre>
]]></content:encoded>
			<wfw:commentRss>http://raisedbyturtles.org/pull-ubercart-product-options-onto-page-using-computed-field/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Limiting Menu Choices for Drupal Content Creators</title>
		<link>http://raisedbyturtles.org/limiting-drupal-menu-choices/</link>
		<comments>http://raisedbyturtles.org/limiting-drupal-menu-choices/#comments</comments>
		<pubDate>Mon, 01 Nov 2010 22:52:49 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[menus]]></category>

		<guid isPermaLink="false">http://raisedbyturtles.org/?p=493</guid>
		<description><![CDATA[One challenge for any Drupal site is making the interface simpler for the &#8220;end admin&#8221;, that is to say the person who will ultimately run the site, but is not a developer or Drupal guru. In general, you can turn most things on and off, but the menu system does not allow you to hide [...]]]></description>
			<content:encoded><![CDATA[<p>One challenge for any Drupal site is making the interface simpler for the &#8220;end admin&#8221;, that is to say the person who will ultimately run the site, but is not a developer or Drupal guru. In general, you can turn most things on and off, but the menu system <strong>does not allow you to hide admin menu choices for general site editors</strong>.</p>
<p>So if you have site editors that have the rights to create new menu items, you end up with a massive set of menu choices the user is confronted with and no way to stop them from trying to add a Product link (for example) to the Navigation menu. Or less worrisome, it&#8217;s just a hassle for the user to try to find the right menu, since they sort alphabetically. So they&#8217;ll have scroll forever for anything with a name that sorts lower than Navigation.</p>
<p>Thankfully, there is a module that lets you <strong>hide irrelevant menus in the Drupal node creation form: <a href="http://drupal.org/project/ctm">Menu Settings per Content Type module</a></strong>. This module lets you set it so that when adding content, only menus that might be relevant for that content type get displayed.</p>
<p>Here you can see a before and after, but note that even though I did some Photoshop work to show more of the Before versiraisedbyturtles.org visible, it&#8217;s still a lot less than half the choices. Whereas for the After, that shows the entire menu as presented to the content editor/writer.</p>
<div id="attachment_494" class="wp-caption aligncenter" style="width: 290px"><a href="http://raisedbyturtles.org/wp-content/uploads/content-type-menus.png" rel="lightbox[493]" title="Menu Options Filtering in Drupal"><img src="http://raisedbyturtles.org/wp-content/uploads/content-type-menus-280x300.png" alt="" title="Menu Options Filtering in Drupal" width="280" height="300" class="size-medium wp-image-494" /></a><p class="wp-caption-text">click to see full size</p></div>
]]></content:encoded>
			<wfw:commentRss>http://raisedbyturtles.org/limiting-drupal-menu-choices/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Custom Form Labels in Drupal without String Overrides</title>
		<link>http://raisedbyturtles.org/custom-form-labels-in-drupal-without-string-overrides/</link>
		<comments>http://raisedbyturtles.org/custom-form-labels-in-drupal-without-string-overrides/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 00:04:07 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[modules]]></category>

		<guid isPermaLink="false">http://raisedbyturtles.org/?p=481</guid>
		<description><![CDATA[Change a Drupal form label in such a way that you change it in one place and leave it alone in another, which is not possible with string overrides]]></description>
			<content:encoded><![CDATA[<p>One of the aggravating aspects of customizing built-in labels and other strings in Drupal is that it&#8217;s a simple substitution that will change all occurrences of the exact string through the entire site, regardless of context. So the quick and dirty methods work much of the time, especially for longer strings that are more likely to be unique. In the case of single-word strings, though, they often have different meanings in different contexts. For example, &#8220;View&#8221; can be a noun or a verb, and it might refer to viewing an image or a View from the views module. So sometimes you want and need to be very precise in the way you make these changes.</p>
<p>Let&#8217;s say that you have a field like Weight in one of your Drupal content types (for example, an e-commerce site with Ubercart will have Products and those all have a Weight field). So you want to change that on the entry form to something like Shipping Weight (product as packaged), as distinguished, for example, from Field Weight (product as used). </p>
<p>It&#8217;s really easy to change that using one of the many string substitution methods in Drupal. You can create a full-on translation file using the built-in Drupal Locale system, but that&#8217;s overkill if you&#8217;re building a site in English. Simpler is to use the <a href="http://drupal.org/projectstringoverrides">String Overrides module</a>, which lets you simply override any string. Simply input &#8220;Weight&#8221; in one column and &#8220;Shipping Weight&#8221; in the other and it&#8217;s done!</p>
<p>Simpler still, in your <i>settings.php</i> file, you can simply add a few overrides without the extra overhead of adding a whole module:</p>
<pre class="brush: php; light: true; title: ; notranslate"> $conf['locale_custom_strings_en'] = array(
   'Weight'      =&gt; 'Shipping Weight',
 );
</pre>
<p>Same effect. Great! Just one little problem. Now if you go to a page that has some type of sorting, like for a menu item or taxonomy term, the Weight field that determines sort order in Drupal now reads &#8220;Shipping Weight&#8221; when that isn&#8217;t what it is at all. Arrgh! Drupal indiscriminately looks for any text wrapped in the t() function that matches &#8220;Weight&#8221; and replaces it, regardles of context. That&#8217;s no good!</p>
<p>To get some more granularity, you need to alter your form on a form-by-form basis. To do this, I created a simply module to make the form tweaks I need. I call it TD_form_tweaks because it is for the Trail Designs site. Like any module, it needs a .info file</p>
<p>td_form_tweaks.info</p>
<pre class="brush: plain; title: ; notranslate">
name = TD Form Tweaks
description = &quot;Programmatically make necessary tweaks to forms on the site.&quot;
package = User interface
core = 6.x

version = &quot;6.x-0.9&quot;
core = &quot;6.x&quot;
project = &quot;td_form_tweaks&quot;
datestamp = &quot;1287267734&quot;
</pre>
<p>And then the actual functionality.</p>
<pre class="brush: php; title: ; notranslate">
/**
* @file
* td_form_tweaks allows form modifications using the methods outlined
* in this excellent Lullabot post:
* http://www.lullabot.com/articles/modifying-forms-drupal-5-and-6
*/

/**
* Implementation of hook_form_alter().
*
* This lets you make changes to any form in the site. You can alter
* remove or add form elements. You can also alter the validation
* and submission behavior. The name will always be modulename_form_alter.
* If this will only be used on one form, you can use the hook_FORM_ID_alter
* function instead of the hook_form_alter.
* see http://api.drupal.org/api/function/hook_form_FORM_ID_alter/6
*/
&lt;pre&gt;
function td_form_tweaks_form_alter(&amp;$form, $form_state, $form_id) {

/*
* used with devel module to determine form ID and such
*      $dpm($form);
*/

$is_product == FALSE;
$product_types = uc_product_types();

// is user creating a new product page?
if (arg(0) == 'node' &amp;&amp; arg(1) == 'add' &amp;&amp; in_array(arg(2), $product_types)) {
   $is_product = TRUE;
}

// is user editing an existing product page?
if (arg(0) == 'node' &amp;&amp; arg(2) == 'edit') {
  $node = node_load(arg(1));
  if (!empty($node-&gt;type) &amp;&amp; in_array($node-&gt;type, $product_types)) {
     $is_product = TRUE;
  }
}

// if it's a product, alter the form
if ($is_product &amp;&amp; $form['#id'] == 'node-form') {
      if (!empty($form['base']['weight']['weight'])) {
        $form['base']['weight']['weight']['#title'] = t('Packaged Weight');
      }
  }
}
</pre>
<p>And voilà! This could easily include a <b>switch</b> statement and be set up to make any number of changes to any number of product types. A bit more work than a simple string override, yes, but it doesn&#8217;t propogate willy-nilly throughout the site.</p>
]]></content:encoded>
			<wfw:commentRss>http://raisedbyturtles.org/custom-form-labels-in-drupal-without-string-overrides/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Superfish Menu Block Hidden Behind Following Block in Fusion Theme</title>
		<link>http://raisedbyturtles.org/superfish-menu-block-hidden-behind-following-block-in-fusion-theme/</link>
		<comments>http://raisedbyturtles.org/superfish-menu-block-hidden-behind-following-block-in-fusion-theme/#comments</comments>
		<pubDate>Sat, 23 Oct 2010 23:50:56 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[fusion]]></category>
		<category><![CDATA[superfish]]></category>

		<guid isPermaLink="false">http://raisedbyturtles.org/?p=474</guid>
		<description><![CDATA[I have nothing especially original to add here — this page is mostly meant as a bookmark for my memory. The fix for a vertical menu is slightly (but only slightly) different from the solution outlined in the official docs, so here it is. Essentially, the problem is this: the Fusion theme for Drupal uses [...]]]></description>
			<content:encoded><![CDATA[<p>I have nothing especially original to add here — this page is mostly meant as a bookmark for my memory. The fix for a vertical menu is <i>slightly</i> (but only slightly) different from the solution outlined in the official docs, so here it is.</p>
<p>Essentially, the problem is this: the <a href="http://drupal.org/project/fusion">Fusion theme</a> for <a href="http://drupal.org">Drupal</a> uses <a href="http://users.tpg.com.au/j_birch/plugins/superfish">Superfish menus</a>. If you have a vertical style menu that expands downwards and you have a block below it, when it expands, the flyout menu will be partialy hidden by the menu block below it.</p>
<p>After much going around, the community came up with a couple of solutions mixed into <a href="http://drupal.org/node/645212">a long thread on Drupal.org</a> and more succinctly summed up in a <a href="http://fusiondrupalthemes.com/support/documentation/troubleshooting/why-does-my-superfish-dropdown-menu-go-behind-adjacent-region-">support page at Fusion Themes</a> and that content is reiterated on the general <a href="http://fusiondrupalthemes.com/support/documentation/troubleshooting">Fusion Theme Troubleshooting page</a>. See also the page on <a href="http://fusiondrupalthemes.com/support/theme-developers/special-features/customizing-dropdown-menu">Customizing the Fusion dropdown menus</a> which has some useful information on theming that aspect of Fusion. The Fusion folks also have some good instructions on making a slick looking <a href="http://fusiondrupalthemes.com/story/100525/customizing-superfish-menus-your-fusion-theme">horizontal menu with the second-level menu also horizontal</a>—a neat effect. The third level, if you have one, is then a normal vertical dropdown.</p>
<p>In essence, they suggest setting the containing Drupal block to <i>overflow: visible</i> in the CSS and, if that doesn&#8217;t solve the problem, to set the inner block, that is <i>.block .inner</i> to <i>position:static</i></p>
<p>Neither of those worked for me. I went round and round with this, trying all sorts of combinations, applying these in many combinations to many elements, also playing with <i>position:relative</i> and many other options. Eventually, the solution was dead simple. Assuming that you have a menu named &#8220;main&#8221; and it&#8217;s in a block, then</p>
<blockquote><p>
#block-menu-menu-main  {<br />
position:static;<br />
}
</p></blockquote>
<p>That seems to have solved all of my Superfish issues with positioning.</p>
<p>I still couldn&#8217;t get the arrows to show using autoArrows, but I simply wanted arrows on all menu items that have a flyout submenu. Since Drupal already applies the class &#8220;expanded&#8221; to such items, this was easier to do with simple CSS anyway.</p>
<blockquote><p>
li.expanded {<br />
background:url(&#8220;/sites/default/themes/acquia_prosper/images/arrow.png&#8221;) no-repeat right center transparent;<br />
}
</p></blockquote>
<p>And then finally, to override default Superfish settings as set by Fusion, you simply add a new Superfish initialization function in your <i>js/acquia_prosper_script.js</i> file like so:</p>
<blockquote><p>
Drupal.behaviors.acquia_prosperSuperfish = function (context) {<br />
  $(&#8220;div.block ul.sf-menu&#8221;).superfish({<br />
    hoverClass:  &#8216;sfHover&#8217;,<br />
    delay:       800,<br />
    animation:   {opacity:&#8217;show&#8217;,height:&#8217;show&#8217;},<br />
    speed:       &#8216;slow&#8217;,<br />
    autoArrows:  false,<br />
    dropShadows: false,<br />
    disableHI:   false<br />
  }).supposition();<br />
};
</p></blockquote>
<p>That pretty much solved my Superfish problems.</p>
<p>One remaining issue is that I wanted some top-level menu items that are NOT links. That is to say, that have no destination page, but only a submenu. Drupal does not by default allow this. The page I mentioned earlier on customizing Fusion dropdowns suggests the <a href="http://drupal.org/project/special_menu_items">Special Menu Items module</a>. I haven&#8217;t tried it yet, but it looks like it would do the trick.</p>
]]></content:encoded>
			<wfw:commentRss>http://raisedbyturtles.org/superfish-menu-block-hidden-behind-following-block-in-fusion-theme/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Drupal Mega Menu ideas</title>
		<link>http://raisedbyturtles.org/drupal-mega-menu-ideas/</link>
		<comments>http://raisedbyturtles.org/drupal-mega-menu-ideas/#comments</comments>
		<pubDate>Sun, 17 Oct 2010 05:27:47 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[mega menus]]></category>
		<category><![CDATA[superfish]]></category>

		<guid isPermaLink="false">http://raisedbyturtles.org/drupal-mega-menu-ideas/</guid>
		<description><![CDATA[These are just some random notes on various solutions and half solutions people have put out there for making &#8220;mega menus&#8221; in Drupal. I&#8217;m sure there are much better roundups out there. I just don&#8217;t want this to fade entirely into the disorganized soup of my delicious bookmarks. In brief, a mega menu is a [...]]]></description>
			<content:encoded><![CDATA[<p>These are just some random notes on various solutions and half solutions people have put out there for making &#8220;mega menus&#8221; in Drupal. I&#8217;m sure there are much better roundups out there. I just don&#8217;t want this to fade entirely into the disorganized soup of my delicious bookmarks.</p>
<p>In brief, a mega menu is a dropdown menu that shows all child menus (as in child and grandchild menus) in one big flyout.</p>
<p>Many Drupal themes come with Superfish menus, including the popular Fusion family of themes, so that seems like a decent place to start. Over on Dave Buchholz&#8217;s I-cre8 blog, he has a <a href="http://www.i-cre8.biz/jquery-superfish-mega-menu">brief post on Superfish mega menus</a> that links to a demo and a download.</p>
<p>Beyond Superfish, there is an alpha version of a <a href="http://drupal.org/project/megamenu">Megamenu module</a>. Does it play nice with Superfish or replace it? I&#8217;m not sure yet.</p>
<p>If you&#8217;ve planned way ahead and haven&#8217;t started theming yet, you could use the <a href="http://www.joomlart.com/drupal/themes/jd-t3-blank">JDT3 theme from JoomlArt</a> which comes with Mega Menus built in, though you will have to buy a membership in JoomlArt in order to access it. The site is running Joomla I suppose, but there is a <a href="http://demo.t3.joomlart.com/drupal/">Drupal demo</a>, which with a little styling would be quite adequate.</p>
<h2>Some Other Menu Stuff</h2>
<p>The <a href="http://drupal.org/project/menu_block">Menu block module</a> creates a block that appears dependent on context. So if you have articles and galleries, if you&#8217;re looking at an article category or node, it can give you a menu block with items relevant to navigation from where you are currently.  If that makes any sense&#8230;</p>
<p>And while we&#8217;re at it, if you want to <strong>add arrows</strong> to Superfish menus in a Fusion theme, the good folks at FusionDrupalThemes.com have a <a href="http://fusiondrupalthemes.com/story/100525/customizing-superfish-menus-your-fusion-theme">nice little tutorial</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://raisedbyturtles.org/drupal-mega-menu-ideas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Stamps.com or Endicia Dazzle with Webgility eCC and Ubercart?</title>
		<link>http://raisedbyturtles.org/stamps-com-or-endicia-dazzle-with-webgility-ecc-and-ubercart/</link>
		<comments>http://raisedbyturtles.org/stamps-com-or-endicia-dazzle-with-webgility-ecc-and-ubercart/#comments</comments>
		<pubDate>Mon, 11 Oct 2010 19:31:00 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[dazzle]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[ecc]]></category>
		<category><![CDATA[endicia]]></category>
		<category><![CDATA[stamps.com]]></category>
		<category><![CDATA[ubercart]]></category>
		<category><![CDATA[webgility]]></category>

		<guid isPermaLink="false">http://raisedbyturtles.org/?p=457</guid>
		<description><![CDATA[I&#8217;ve been testing Webgility eCC with Ubercart and Dazzle and Stamps.com. Okay, I expect anyone who makes it to this page will know what all of those are, but in brief: Ubercart is a shopping cart system built on Drupal. I love the power of Drupal CCK (custom structured data fields of any imaginable sort) [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been testing Webgility eCC with Ubercart and Dazzle <em>and</em> Stamps.com. Okay, I expect anyone who makes it to this page will know what all of those are, but in brief:</p>
<ul>
<li><a href="http://ubercart.org">Ubercart</a> is a shopping cart system built on <a href="http://drupal.org">Drupal</a>. I love the power of Drupal <a href="http://drupal.org/project/content">CCK</a> (custom structured data fields of any imaginable sort) plus <a href="http://drupal.org/project/content">Views</a> (which allows for amazing custom data extraction and presentation. There&#8217;s simply nothing like it and Ubercart lets you build on the power of Drupal.</li>
<li><a href="http://webgility.com">Webgility e-Commerce Connector (eCC)</a> is a desktop tool that provides complete integration between Ubercart, the Quickbooks accounting system and shipping systems, notably Endicia Dazzle and Stamps.com.</li>
<li><a href="http://stamps.com">Stamps.com</a> lets you buy US Postal Service postage and print shipping labels straight from your computer, for both domestic and international shipping.</li>
<li><a href="http://endicia.com">Endicia Dazzle</a> lets you print shipping labels not only from the USPS for domestic and international shipping, but also from UPS and FedEx if you sign up for one of the pricier plans.</li>
<li>Both pre-fill and print integrated customs declarations as a single label and advise on prohibited items for the country in question (you can&#8217;t legally send a radar detector to Swizterland, for example).
</li>
</ul>
<p>Overall, the system is pretty incredible and both Dazzle and Stamps.com work great. As standalone applications, I could take either one and be very happy. Both of them offer 30-day free trials, so there&#8217;s no harm in doing what I did and testing both to see which works best for you.</p>
<p>When it comes to using Stamps.com and Endicia Dazzle through the eCC interface, though, there are a couple of differences as you can see in these pictures and as described below (click to see full sized images):</p>
<div id="attachment_461" class="wp-caption aligncenter" style="width: 310px"><a href="http://raisedbyturtles.org/wp-content/uploads/stamps-in-ecc.png" rel="lightbox[457]" title="Stamps.com Tab in eCC"><img src="http://raisedbyturtles.org/wp-content/uploads/stamps-in-ecc-300x180.png" alt="Stamps.com Tab in eCC" title="Stamps.com Tab in eCC" width="300" height="180" class="size-medium wp-image-461" /></a><p class="wp-caption-text">Stamps.com Tab in eCC with Shipping Info</p></div>
<div id="attachment_460" class="wp-caption aligncenter" style="width: 310px"><a href="http://raisedbyturtles.org/wp-content/uploads/endicia-in-ecc.png" rel="lightbox[457]" title="Endicia Tab in eCC"><img src="http://raisedbyturtles.org/wp-content/uploads/endicia-in-ecc-300x180.png" alt="Endicia Tab in eCC" title="Endicia Tab in eCC" width="300" height="180" class="size-medium wp-image-460" /></a><p class="wp-caption-text">Dazzle—no shipping rates</p></div>
<div id="attachment_462" class="wp-caption aligncenter" style="width: 310px"><a href="http://raisedbyturtles.org/wp-content/uploads/endicia-native.png" rel="lightbox[457]" title="Endicia Native Interface"><img src="http://raisedbyturtles.org/wp-content/uploads/endicia-native-300x272.png" alt="Endicia Native Interface" title="Endicia Native Interface" width="300" height="272" class="size-medium wp-image-462" /></a><p class="wp-caption-text">Endicia—no shipping info</p></div>
<p>Now when you click to generate the label in Stamps.com it just generates it right from eCC without opening the Stamps.com desktop application. When you click to generate the label via Endicia Dazzle, it takes you to the Dazzle desktop app, but minus the information you really care about—the Send To address and the shipping charges. This is not the case if you are shipping entirely from within the Endicia interface, but in that case, there&#8217;s no great way to get your data from your store to Endicia—the best option for Ubercart is to generate an XML file, download it, open Endicia, load the XML file into Endicia and then generate labels.</p>
<ul>
<li>Stamps.com actually tells you how much the shipping will cost before you print. To me, this is just a huge plus in favor or Stamps.com</li>
<li>Stamps.com also keeps you within Webgility eCC and so you see the address that it&#8217;s printing for and all the other details. The eCC Dazzle connector transfers you to the desktop Dazzle application when you click on &#8220;Generate Label&#8221;, but the handoff is a little rough.
<ul>
<li>when the Dazzle app comes up, it does not display the Ship To address or the postage charges.</li>
<li>If you have Dazzle already open, the XML file used to transfer data between eCC and Dazzle will be locked, which means that eCC can&#8217;t send data to it and you&#8217;ll go almost through the whole process and then it will fail with and &#8220;Outputfile not generated&#8221; error (note, this is not &#8220;Output File not generated&#8221;, outputfile is a specific term used by the Dazzle XML spec).</li>
</ul>
<p>Again, this is another huge plus in favor of Stamps.com</li>
<li>Dazzle has a &#8220;test mode&#8221; where it will print labels with &#8220;Void&#8221; across them, so that you can test print before you commit. I think that&#8217;s key, since you don&#8217;t see the rates ahead of time, but really not necessary in the Stamps.com interface, because you have all the information you need. So I would say this somewhat mitigates the issues mentioned above, but who wants to print a test label, review it, and then print it for real?</li>
</ul>
<p>With the USPS shipping, postage is like money. When you print a label, you&#8217;ve spent money just as much as if you converted your dollars into a Starbucks Frappuccino and, since the Ship To address is printed on the label, a week-old label is about as hard to convert back into dollars as a week-old Frappuccino. So if you&#8217;re primarily shipping USPS, it&#8217;s a lot nicer to use the Stamps.com interface. </p>
<p>On the other hand, Stamps.com limits you to just one shipper. If you bump up to one of the Pro Plans with Endicia, you also get UPS, FedEx and Ke</p>
<p>Depending on your budget, however, you can use both. In order to run eCC you need the Dazzle premium service ($16/month). Stamps.com costs about the same</p>
]]></content:encoded>
			<wfw:commentRss>http://raisedbyturtles.org/stamps-com-or-endicia-dazzle-with-webgility-ecc-and-ubercart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seeing All Child Nodes in Drupal Taxonomy</title>
		<link>http://raisedbyturtles.org/drupal-drilldown/</link>
		<comments>http://raisedbyturtles.org/drupal-drilldown/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 04:04:46 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[taxonomy]]></category>

		<guid isPermaLink="false">http://raisedbyturtles.org/?p=305</guid>
		<description><![CDATA[I have been tearing my hair out a bit trying to figure out how to save a whole taxonomy lineage in Drupal, so that everything tagged with a child term would be tagged with a parent term. In other words, given a taxonomy like: 1. United States 3. California 4. Vermont 2. Canada 5. Alberta [...]]]></description>
			<content:encoded><![CDATA[<p>I have been tearing my hair out a bit trying to figure out how to save a whole taxonomy lineage in Drupal, so that everything tagged with a child term would be tagged with a parent term. In other words, given a taxonomy like:</p>
<ul>
<li>1. United States
<ul>
<li>3. California</li>
<li>4. Vermont</li>
</ul>
</li>
<li>2. Canada
<ul>
<li>5. Alberta</li>
</ul>
</li>
</ul>
<p>I want it so that if I tag something as <em>California</em> (term 3), it also gets tagged as <em>United States</em> (term 1). The <a href="http://drupal.org/project/hierarchical_select">Hierarchical Select module</a> does this, and much more, but it has conflicts with other Drupal modules I want to use, so I just gave up on it. </p>
<p>Finally, I realized that I could simply turn it around and solve this on the data retrieval end, rather than the data storage end. In Drupal, if you enter a standard Drupal path like <em>/taxonomy/term/1</em>, that shows only nodes tagged as <em>United States</em>, but <em>/taxonomy/term/1/all</em> shows all nodes tagged <em>United States</em> <strong>and </strong>all nodes tagged with child terms.</p>
<p>I&#8217;m trying to build a drill-down <a href="http://ultraskier.com/directory">directory of professional ski instructors</a> (emphasis on <em>trying </em>— it&#8217;s still pretty rudimentary now and doesn&#8217;t yet have any instructors really). I realized that I could use the <a href="http://drupal.org/project/taxonomyblocks">Advanced Taxonomy Blocks module</a> to navigate for the drill down and was looking to create an add-on module or a patch for the module so that I could have it add the &#8220;all&#8221; to the end of the URL. Then I saw this in the settings:<br />
<img src="http://raisedbyturtles.org/wp-content/uploads/AdvancedTaxonomyBlockPathSettings.jpg" alt="Advanced Taxonomy Block Path Settings" title="Advanced Taxonomy Block Path Settings" width="381" height="85" class="aligncenter size-full wp-image-306" /><br />
All you have to do is add the <em>/all</em> to the end of the path. It&#8217;s built right in to the module settings (go to <em>/admin/settings/taxonomyblocks</em> and click <em>Configure</em>).</p>
<p>So much thanks to <a href="http://www.pixelclever.com/">Aaron Hawkins, an awesome drupal developer</a>, for this simple way around my problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://raisedbyturtles.org/drupal-drilldown/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Evaluating a CMS Theme or Template &#8211; Please Help!</title>
		<link>http://raisedbyturtles.org/evaluating-a-cms-theme/</link>
		<comments>http://raisedbyturtles.org/evaluating-a-cms-theme/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 18:23:27 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[theme design]]></category>
		<category><![CDATA[theming]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://raisedbyturtles.org/?p=301</guid>
		<description><![CDATA[Validation, fixed width, fixed fonts, javascript OH MY! What matters when evaluating a theme for my Wordpress or Drupal site?]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve finally decided to install MegaSuperDuperCMS because everyone has said it absolutely rocks. But I want that special look, so I started going through all of the available themes or templates or whatever it is the MegaSuperDuperCMS community calls them. I found one, KillerThemeCSS that looks great. It has my colors. It has CSS in the name, so it must be modern and cool and up to <a href="http://www.webstandards.org/">web standards</a>. It looks so neat and clean and snazzy and it just makes me think it looks like I mean business. Or perhaps that I mean pleasure, because I most definitely don&#8217;t want to look like I mean business.</p>
<p>So now I ask you, &#8220;<strong>What else should I look at besides the awesome look of KillerThemeCSS?</strong>&#8221; Here are some things I&#8217;ve already looked at. Please add to them or correct my foolishness if I&#8217;m just plain looking at something the wrong way. </p>
<p>These are in the order the popped into my head, <em>not necessarily in order of importance</em> (and to some extent the importance will be determined by the degree to which they fail any of these tests).</p>
<h2>Content code near the top</h2>
<p>Do I really have to look at the code? I hope not. I&#8217;m a little worried, because I don&#8217;t really know HTML but even so, when I opened it up with View Source, the source was 10 screenfuls long and the main headline for the page was on the ninth screen. Is that a problem?</p>
<p>(<i>Okay, this is not as big a problem as it used to be because the search engines have gotten better at figuring out what&#8217;s unique and what&#8217;s just repeated &#8220;service&#8221; content like navigational links and disclaimers and such. Look at the source code for a Google results page and you&#8217;ll see they certainly aren&#8217;t worrying as much about clean code either. But it&#8217;s still better not to confuse Google too much</i>).</p>
<h2>Proper use of H1 and H2</h2>
<p>So someone told me it&#8217;s good to put my page headline in an H1 tag. But when I was looking at the source in the last step, I couldn&#8217;t find one? Is that a problem? </p>
<p>(<i>This is unbelievably common and this post was actually prompted because I just looked at a &#8220;premium&#8221; paid theme that had <strong>no h1 or h2 on the front page and no h1 on the content pages</strong></i>).</p>
<h2>What&#8217;s &#8220;above the fold&#8221; mean?</h2>
<p>I love that stunning header image. It&#8217;s crisp, it&#8217;s clean, it looks professional and really catches the eye. And it had better catch the eye, because for users who don&#8217;t have the mega big monitor that the designer has, that&#8217;s all they&#8217;ll see because it takes up most of the screen. Is that bad?</p>
<p>(<i>I&#8217;m exaggerating a bit, but there seems to be an increasing vogue for themes with such big headers that there&#8217;s hardly any content at all above the fold, that is, hardly any meaningful content visible to a user on an average monitor without scrolling</i>).</p>
<h2>Color and Contrast</h2>
<p>My new theme with grey type on a black background looks awesome dude. Cool. Suave. Perfect for my edgy new music site. Except that nobody on a Mac can read it because their different gamma settings make it more like black on black. Is that a problem? And I really love the emphatic RED TYPE in the green sidebar. Many of my visitors are red-green color blind, so the only way they can see it is by doing &#8220;select all&#8221;. Is that a problem? I tried this just for kicks. I took a <strong>screenshot</strong> and loaded it into Photoshop (or was it <a href="http://irfanview.com/">Irfanview?</a>).<br />
 &#8211; <strong>Converted it to greyscale</strong>. I couldn&#8217;t read a thing, but nobody has a black and white monitor, so this isn&#8217;t a problem right?<br />
 &#8211; Then I <strong>played with the contrast, brightness and gamma</strong> (in &#8220;levels&#8221; on Photoshop; under &#8220;Enhance colors&#8221; in Irfanview). When I got the gamma up to 1.30 or down to .70 I couldn&#8217;t tell my form buttons from the background, but nobody&#8217;s monitor is that far different from mine is it?</p>
<h2>Font size</h2>
<p>I love that font they use and how efficient it is at really packing information onto the page, though it is a bit of a hassle trying to read and hold a magnifying glass at the same time. So I hit CTRL-+ on Firefox and&#8230; and&#8230; it doesn&#8217;t resize. That should be okay though, right because everyone has the same screen resolution as I do and my target audience is all under 40, so they all have good eyes. That&#8217;s a safe assumption, right?</p>
<h2>All screens wide and small</h2>
<p>Hey, it&#8217;s a fluid design. That&#8217;s awesome! I heard that was the best way to go. It uses all my screen real estate and looks great at 800px and at 1024px. It&#8217;s a little hard to read at 1200px because the lines are sort of long. But nobody really opens their browser full screen at 1200px do they? And all those visitors in my logs with 1680px widescreen monitor have their browsers open at a reasonable size, right? They won&#8217;t get headaches and lose their place because my lines are 250 characters long, will they? And I don&#8217;t worry about those iPhone users because I checked my logs and they only visit one page and leave anyway, so I don&#8217;t really need to be concerned with them do I?</p>
<p>(<i>Fluid is okay, but it can&#8217;t just let the content area expand up to any line length until it becomes unreadable. It can allow longer line lengths in terms pixels when it has bigger text — so if you&#8217;re going for variable line lengths, better to use ems, not pixels. It can allow wider display by rearranging elements at certain break points and intelligently using the screen — that&#8217;s the more sophisticated and more rare <a href="http://www.alistapart.com/articles/switchymclayout/">Switchy McLayout</a> approach. </p>
<p>But with the growing prevalence of widescreens, an infinitely expandable center content area at a small font size is not good. At the same time, the mobile market has increased a lot too [candid admission: and I ignore it completely]. More and more there&#8217;s no such thing as a standard screen size and a higher and higher percentage of viewers will have very large (1600px+ wide) or very small (400px or less wide) screens. At least try one of the extremes depending on what your target audience is likely to be. The truth is, I don&#8217;t build to be mobile-friendly, but I&#8217;m seeing that the time has come, perhaps past, when you can get away with this without taking a hit</i>).</p>
<h2>Do Javascript and Flash degrade gracefully?</h2>
<p>So I love how this theme has AJAX this and that and sIFR headlines that looks so crisp since standard HTML+CSS doesn&#8217;t give you anti-aliased fonts. Awesome. But when I looked at it while running the <a href="http://noscript.net/">Firefox NoScript plugin</a>, which blocks Flash and Javascript, well, the headlines were completely messed up and the navigation didn&#8217;t work and I can&#8217;t make comments or anything. Do people really surf without Flash and Jacascript? Is this something I should worry about?</p>
<p>(<i>You used to have to count on losing 10% of your audience if your site required Javascript. Now so many popular sites are enhanced by Javascript, that the numbers of those opting out are dropping some, but there will always be some security conscious visitors who will opt out. Best practice is to opt for a progressive enhancement model, where the site works without Javascript, but it adds a lot of useful features if available.</i>).</p>
<h2>Is there a separate CSS file or section of a file for MY styles?</h2>
<p>The theme has a hodge-podge of CSS files and I can&#8217;t figure out where I need to go to change anything. Is that a problem?</p>
<p>(<i>Maybe or maybe not, depending on your skill and your needs. Some themes are made to be customized and some are not. I like themes that by default include an extra CSS file. Yep, that&#8217;s one more file to download, but you might be able to get around that once you go live (Drupal allows you to combine all the files once the development phase is over and cache it as a single, albeit hugely bloated, CSS file) and modern browsers allow more concurrent connections so in the future you may be better off with more small files rather than one big one anyway, even without taking browser caching into account. Once you have it tweaked in your prototype, you can always put it into one small, light CSS file to bring bandwidth down.</p>
<p>The advantage of this system, is that you can make any changes you want to that last file, the one with just your CSS rules, and override the distribution files. Then if the developers find that the theme itself has cross-browser or even security problems, you can move up to the next version of the theme without losing your changes. Also, new versions of the CMS may require new versions of the theme and by compartmentalizing your changes, the upgrade process will be simpler. Even if you do combine files in the end, you&#8217;ll have that file with the core changes you made to get your original look, so you can fall back on that if you upgrade.</i>)</p>
<h2>Validation</h2>
<p>I just ran my site through the W3C HTML validator and got 132 errors. Is that a problem?</p>
<p>(<i>Maybe. It can be hard to find a CMS and theme that actually passes HTML and CSS validation. There are a lot of reasons for this, but one is that modules often generate code and there is generally not a system for a module to find out what the theme DOCTYPE is. So if the theme is XHTML and the module expects HTML and throws out an <img /> tag without closing it ( or <img />) then it won&#8217;t validate. Also, since it&#8217;s hard to force users to input valid HTML, most CMSes stipulate a transitional DOCTYPE, not strict. Finally, a single affiliate banner from Commission Junction can trigger tons of errors and that&#8217;s the fault of nobody but the affiliate network. </p>
<p>I won&#8217;t get into the <a href="http://24ways.org/2005/transitional-vs-strict-markup">strict/transitional, html/xhtml debate</a> here, but it is reasonable to expect that a theme, running stripped down with only core modules/plugins and validated content, should conform to whatever DOCTYPE the theme author specifies. Ideally, it should validate to the strict version of that DOCTYPE under that situation, though I might want to actually run it as transitional because of the issues with user-generated content. That said, those who tell you validation matters for ranking in Google are blowing smoke. The vast majority of websites don&#8217;t validate and so Google does not take validation into account per se, but only secondary effects, like truly broken code that it can&#8217;t parse out in order to figure out what the point of your page is and where the links go. It has to be really broken for that.</i>)</p>
<h2>Whoa! My Head&#8217;s Spinning. Can&#8217;t I Hire Someone?</h2>
<p>Okay, confession time. I was possessed by an evil demon who channeled through my fingers and I have pretty much no clue what half of that stuff I typed up there means. What I really need is for someone who can just make those changes for me if they&#8217;re necessary. </p>
<p>I think I&#8217;m only going to use <strong>themes designed by freelance designers</strong> who are actually out there for hire and looking for work, because as it turns out, most of the hobbyists who design themes are too damn busy with the rest of their lives to even answer my emails and wouldn&#8217;t consider working for hire because they care more about spending time with their kids than the $150 I&#8217;m willing to give them. </p>
<p>Looking forward to you advice. PS My boss needs our site up and running tomorrow.</p>
]]></content:encoded>
			<wfw:commentRss>http://raisedbyturtles.org/evaluating-a-cms-theme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Review: Pro Drupal Development by John VanDyk</title>
		<link>http://raisedbyturtles.org/pro-drupal-development-review/</link>
		<comments>http://raisedbyturtles.org/pro-drupal-development-review/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 06:04:00 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://raisedbyturtles.org/?p=265</guid>
		<description><![CDATA[If you've torn you hair out and still don't really feel totally comfortable with the Drupal forms API, or with getting your module to affect the menu system or have lingering questions about anything in Drupal core, this book is a godsend. It is so much clearer and more accessible than the online documentation and the index is great. Within the first day I had it, it saved me a couple of hours of effort. Highly recommended.]]></description>
			<content:encoded><![CDATA[<p>I spent a long time on the fence about buying John VanDyk&#8217;s <em>Pro Drupal Development</em> because there&#8217;s so much documentation online and because I&#8217;m a cheap bastard. By about the middle of chapter 2, I realized what a stupid decision that was.  I could have saved myself sooooo much time if I had just bought the damn thing when it first came out!</p>
<p>There are, I would say, two good reasons <strong>not</strong> to buy <em>Pro Drupal Development</em>:</p>
<ol>
<li>You are not a Drupal developer.</li>
<li>You are such a Drupal ninja already that VanDyk mentions you in the acknowledgements.</li>
</ol>
<p>If on the otherhand, you build Drupal sites and do any mucking about in the internals, this book will probably teach you a lot and, if it doesn&#8217;t do that, it is still probably a worthwhile reference. In my case, I learned a lot. It was a bit humbling actually, but damn useful.</p>
<p>I&#8217;ve tried to read through the forms API and the documentation for it, but it never quite came together for me and I found reading it online wearisome to be honest, in a way that I never felt when I was learning PHP and spending a lot of time with the online PHP manual. I suspect that&#8217;s because PHP ultimately has a lot of overlap with C++ and other programming languages, so I was mostly skimming for syntax, but Drupal is a complex system with an architecture that was utterly foreign to me with its massive collection of hooks, callbacks, templates and so forth. So how does hook_nodeapi() relate to theme_preprocess_node() and node.tpl.php? And that&#8217;s an <em>easy</em> one. Throw in the menu and forms APIs, filters and so on and it just gets hard to get started on really putting it together.</p>
<p>I&#8217;ve hacked together some modules and done quite a bit of themeing, but I never really took the time to really understand the underlying Drupal architecture.  By the time I was a few chapters into <em>Pro Drupal Development</em>, I was already seeing better ways to do some things than my old bad &#8220;make it work&#8221; habits had taught me. Furthermore, with the excellent index in the book, when I came across roadblocks I could often find a solution quickly that allowed me to move on without having to sift through the documentation online.</p>
<p>Most importantly though, in almost every case, VanDyk&#8217;s explanations are just so much better than I&#8217;ve found elsewhere. I have no idea how talented a coder he is, but he definitely has real skill as a writer and a teacher. So many things that seemed arcane to me from other documentation, we&#8217;re absolutely clear and obvious in his able hands. I suspect some of that is because of good editing (not to be underestimated: it&#8217;s rare for a film to win the Best Picture Oscar without also winning the Oscar for Best Editing), and I find it much more comfortable to read print rather than onscreen, especially conceptually intricate material. None of that, however, takes away from VanDyk&#8217;s skill and my gratitude that he and others involved in the book put the time in to open up Drupal development to the rest of us.</p>
<p>If I have one regret about the book, it&#8217;s this: it covers only the core system. I understand the rationale behind that. With  thousands, of Drupal modules, you simply can&#8217;t go down that road. Still, I think that the <a href="http://drupal.org/project/content">Content Construction Kit</a> and <a href="http://drupal.org/project/views">Views</a> have really become &#8220;pseudo-core&#8221; in that complex Drupal sites commonly use them and they are increasingly being folded into Drupal core. These modules are in and of themselves pretty complex, especially Views, and I would love to see a book that covers Views in the detail that VanDyk covers the core (and perhaps one of the other Drupal books does, I just don&#8217;t know about it yet). That said, having gotten a much better understanding of core gave me pretty much all the tools I needed to embed Views into my site in the way I wanted, and yet still have everything get themed and hooked properly and without using the <a href="http://drupal.org/project/panels">Panels</a> module, another complex module which, while powerful and useful, adds a lot of overhead for the simple task I needed (I actually originally built my &#8220;proof of concept&#8221; site using Panels, but realized after reading <em>Pro Drupal Development</em> that I could simply achieve what I wanted by making small changes in templates and template.php without weighing the site down with yet another massive module).</p>
<p>So in short: Thanks John! Now with take the massive riches flowing to you from all six of my readers, one of whom might actually buy your book, go write another one.</p>
]]></content:encoded>
			<wfw:commentRss>http://raisedbyturtles.org/pro-drupal-development-review/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>ImageMagick versus GD2 resource usage</title>
		<link>http://raisedbyturtles.org/imagemagick-gd2-resource-usage/</link>
		<comments>http://raisedbyturtles.org/imagemagick-gd2-resource-usage/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 02:49:18 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[gallery]]></category>
		<category><![CDATA[gd2]]></category>
		<category><![CDATA[imagemagick]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://raisedbyturtles.org/?p=160</guid>
		<description><![CDATA[I&#8217;ve been wondering which image toolkit is likely to result in lower resource usage (especially coming up against the PHP memory limit) for applications like Gallery and Drupal. People used to always say the resize quality was better with ImageMagick versus GD, but I think GD2 closed much of that gap. But what about resources? [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been wondering which image toolkit is likely to result in lower resource usage (especially coming up against the PHP memory limit) for applications like <a href="http://gallery.menalto.com">Gallery</a> and <a href="http://drupal.org">Drupal</a>. People used to always say the resize quality was better with ImageMagick versus GD, but I think GD2 closed much of that gap. But what about resources? The best answer I could find was in a <a href="http://ask.metafilter.com/83573/A-little-bigger-than-a-thumbnail">thread on metafilter.com</a> where one respondent says</p>
<blockquote><p>
if possible, do yourself a favor and switch to ImageMagick as soon as possible. GD2 runs within the php child, so resizing any image over 640&#215;480 will pretty much take down the process you&#8217;re using. On our server, we&#8217;d have children allocated 64megs of memory die trying to resize a 1280&#215;1024 image.</p>
<p>While I&#8217;m not an expert on server tuning or linux, my understanding is that in your typical usage scenario, you&#8217;d run IM as a niced shell process, meaning that 1) the php child won&#8217;t crash because it just launches the exec and continues, and 2) the process shouldn&#8217;t significantly slow down your server, because it&#8217;ll only use &#8216;free&#8217; resources. This CAN mean that your user may experience a delay between uploading a file and being able to see a thumbnail…
</p></blockquote>
<p>That&#8217;s the best I can find for now. I should test it, of course, but for now I&#8217;ll take that advice and default to IM until I run into trouble.</p>
]]></content:encoded>
			<wfw:commentRss>http://raisedbyturtles.org/imagemagick-gd2-resource-usage/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

