<?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/"
	>

<channel>
	<title>John's Jottings &#187; Movable Type</title>
	<atom:link href="http://www.johnsjottings.com/archives/categories/movable-type/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.johnsjottings.com</link>
	<description>Technology, Blogging, Food, Travel, Poker and More</description>
	<lastBuildDate>Tue, 13 Apr 2010 22:10:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>This Is Not A Solution To Comment Spam</title>
		<link>http://www.johnsjottings.com/archives/2005/01/18/this_is_not_a_solution_to_comment_spam.html</link>
		<comments>http://www.johnsjottings.com/archives/2005/01/18/this_is_not_a_solution_to_comment_spam.html#comments</comments>
		<pubDate>Wed, 19 Jan 2005 02:31:53 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Movable Type]]></category>
		<category><![CDATA[Weblogs]]></category>
		<category><![CDATA[comment spam]]></category>
		<category><![CDATA[nofollow]]></category>
		<category><![CDATA[page rank checker]]></category>

		<guid isPermaLink="false">http://www.johnsjottings.com/wp/?p=383</guid>
		<description><![CDATA[A few days ago Dave started to leak the rumor that something big was going on in the weblog world. Today it&#8217;s become official as announcements have started to come out about how web companies are coming together to address the serious problem of comment spam in weblogs. The solution is support of the &#8220;rel=nofollow&#8221; [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p></p><p>A few days ago Dave <a href="http://archive.scripting.com/2005/01/14#When:11:45:23AM" rel="nofollow" >started to leak</a> the rumor that something big was going on in the weblog world.  Today it&#8217;s become official as <a href="http://www.ysearchblog.com/archives/000069.html" rel="nofollow" >announcements</a> have <a href="http://www.movabletype.org/news/2005/01/movable_type_nofollow_p.shtml" rel="nofollow" >started</a> to <a href="http://sixapart.com/log/2005/01/support_for_nof.shtml" rel="nofollow" >come out</a> about how web companies are coming together to address the serious problem of comment spam in weblogs.</p>
<p>The solution is support of the &#8220;rel=nofollow&#8221; tag to links added to comments on weblogs.  The thinking is that any link that the owner of the site did not add themselves, i.e. in comments, should not be trusted and as such should not be included in calculating pagerank at Yahoo, Google, and other <a href="http://www.secondaryincomeblog.com/search-engines/make-sure-the-search-engines-see-your-website/" rel="nofollow" >search engines</a>.</p>
<p><b>Am I insane to think this is a really bad idea?</b></p>
<p>First of all, it isn&#8217;t going to solve anything.  The spammers will still throw out their automated scripts hoping some shit sticks, and stick it will because not everyone is going to implement this.</p>
<p>Secondly, one of the reasons why weblogs do so well in Google is that many of us build relationship links through sites by adding constructive comments on related posts.  This interlinking of sites through comments (good comments, mind you) is an appropriate way of judging the value of both the site the comment appears on and the site from which the commenter comes from.</p>
<p><b>The &#8220;rel=nofollow&#8221; tag solution is throwing the baby out with the bath water!</b>  Fix the damn problem instead.</p>
<p>Speaking of which I have gone from many, many spam a day to one or two a week just using a simple template change that the spammers still haven&#8217;t picked up on.  Sure they will at some point but silence is so sweet for now.  Use a <a href="http://www.johnsjottings.com/archives/2004/01/10/mtgooglerank.html">page rank checker</a> to see if this has impacted you.</p>
<p>[UPDATE] &#8211; I don&#8217;t usually agree with <a href="http://www.badpress.net/" rel="nofollow" >Andrew Orlowski</a> but he nailed it with <a href="http://www.russellbeattie.com/notebook/1008253.html#1013408" rel="nofollow" >his comment</a> on <a href="http://www.russellbeattie.com/notebook/" rel="nofollow" >Russell&#8217;s</a> post.  I feel the same way.  But to date I&#8217;m in the minority from what I&#8217;ve seen.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.johnsjottings.com/archives/2005/01/18/this_is_not_a_solution_to_comment_spam.html/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Technorati Tags in Movable Type</title>
		<link>http://www.johnsjottings.com/archives/2005/01/14/technorati_tags_in_movable_type.html</link>
		<comments>http://www.johnsjottings.com/archives/2005/01/14/technorati_tags_in_movable_type.html#comments</comments>
		<pubDate>Sat, 15 Jan 2005 05:00:52 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Movable Type]]></category>
		<category><![CDATA[Weblogs]]></category>
		<category><![CDATA[movable type]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[technorati]]></category>
		<category><![CDATA[technorati tags]]></category>

		<guid isPermaLink="false">http://www.johnsjottings.com/wp/?p=382</guid>
		<description><![CDATA[Technorati has released today a new feature called tags which allows one to further categorize the web. Mix Flickr and Del.icio.us tags with weblog tags and you get a Technorati Tag page, which looks like this which is the page for the tag technorati. The basic premise is you tag your articles just like people [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://www.technorati.com" rel="nofollow" >Technorati</a> has released today a new feature called <a href="http://www.technorati.com/help/tags.html" rel="nofollow" >tags</a> which allows one to further categorize the web.  Mix <a href="http://flickr.com/" rel="nofollow" >Flickr</a> and <a href="http://del.icio.us/" rel="nofollow" >Del.icio.us</a> tags with weblog tags and you get a Technorati Tag page, which looks like <a href="http://www.technorati.com/tag/technorati" rel="nofollow" >this</a> which is the page for the tag technorati.</p>
<p>The basic premise is you tag your articles just like people tag pictures in Flickr or links in Del.icio.us.  The best writeup I&#8217;ve seen of this new feature is at <a href="http://www.corante.com/many/archives/2005/01/14/technorati_tags_take_2.php" rel="nofollow" >Corante</a>.</p>
<p>I thought of two ways I might want to do this in my Movable Type implementation.  The first was to leverage Brad Choate&#8217;s <a href="http://bradchoate.com/weblog/2002/07/27/key-values-plugin" rel="nofollow" >Key Values</a> similarly to how I do for <a href="http://www.johnsjottings.com/archives/2004/07/14/using_adsense_channels_with_movable_type.html">customizing AdSense channels</a>.  That would mean I would need to add a string like &#8220;tag=tagsubject&#8221; to the extended entry of my articles.  The advantage is I would get a targeted tag.  The disadvantage is it is more metadata to enter for each new entry and it wouldn&#8217;t account for the hundreds of older entries.</p>
<p>So since I am already entering <a href="http://www.secondaryincomeblog.com/keywords/how-to-optimize-landing-page-keywords/" rel="nofollow" >keywords</a> for each entry (which get used in my inline Google links) I decided to just use those for the tags.  This way I don&#8217;t have to change my posting habits (other than to use better keywords) and each of my older entries will already have that metadata.</p>
<p>At the bottom of each of my entries is a list of Technorati tags, which are dynamically generated based off the keywords in the entry.  Here is the code I used to build that list:</p>
<blockquote><p><MTPerlScript><br />
my $keywords = &#8220;<$MTEntryKeywords$>&#8220;;<br />
my @split_keywords = split(/ /, $keywords);<br />
my $split_keyword;<br />
foreach $split_keyword (@split_keywords) {<br />
print &#8216;<a href="http://technorati.com/tag/'.$split_keyword.'" rel="nofollow"  rel="tag">&#8216;.$split_keyword.&#8217;</a> | &#8216;;<br />
}<br />
</MTPerlScript></p></blockquote>
<p>Thanks to <a href="http://www.benhammersley.com/code/putting_delicious_tags_into_movable_type_entries_using_the_keywords_space.html" rel="nofollow" >Ben Hammersley</a> for the keyword parsing code.  Obviously you need another Brad Choate plugin, <a href="http://bradchoate.com/weblog/2002/07/27/mtperlscript" rel="nofollow" >PerlScript</a>, to pull this off.  Yes, I know I am a bit of a <a href="http://cool-stuff-tech.blogspot.com/" rel="nofollow" >computer geek</a>, but I can&#8217;t help myself, I love figuring out problems like this.  You don&#8217;t have to be a geek to enable this for your site, it is pretty simple.</p>
<p>I agree with Corante &#8211; this <em>is</em> a big day for tagging.</p>
<p>[UPDATE] &#8211; I have overflow hidden in that code snippet so to see the truncated line simply highlight the code with your mouse and copy to your editor.</p>
<p>[UPDATE 2] &#8211; Took me awhile to notice I had the URL screwed up. I was wondering why my tagged pages were not appearing.   Fixed.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.johnsjottings.com/archives/2005/01/14/technorati_tags_in_movable_type.html/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Alternating Comment Colors Without PHP</title>
		<link>http://www.johnsjottings.com/archives/2005/01/04/alternating_comment_colors_without_php.html</link>
		<comments>http://www.johnsjottings.com/archives/2005/01/04/alternating_comment_colors_without_php.html#comments</comments>
		<pubDate>Wed, 05 Jan 2005 03:45:20 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Movable Type]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.johnsjottings.com/wp/?p=377</guid>
		<description><![CDATA[



No related posts.]]></description>
			<content:encoded><![CDATA[<p></p><p>In my redesign I wanted to incorporate the alternate color blocks used by &#8220;many&#8221;:http://www.7nights.com/asterisk/archive/2005/01/info-gathering#comments &#8220;blogs&#8221;:http://www.stopdesign.com/log/2004/12/16/small-screens.html#comments these days to differentiate between comments to a post.</p>
<p>Having done a similar task in &#8220;PHP&#8221;:http://www.php.net/ and &#8220;ASP&#8221;:http://www.asp.net/ I knew the simple trick to making it work but what I wasn&#8217;t sure about was how to incorporate it into my Movable Type templates where I am not using PH I have it installed and I could use it, but I wanted to handle this without it.</p>
<p>I was &#8220;able to accomplish it&#8221;:http://www.johnsjottings.com/archives/2004/12/24/obfuscated_perl.html#comments relatively easily using Brad Choate&#8217;s wonderful &#8220;PerlScript&#8221;:http://bradchoate.com/weblog/2002/07/27/mtperlscript plugin.  Here is a snippet of the code in the template:</p>
<p>bc(code).. <MTPerlScript><br />
$val = <$MTCommentOrderNumber$> % 2;<br />
print qq(
<div class="com$val" id="comment<$MTCommentID$>&#8220;>);<br />
</MTPerlScript></p>
<p>That builds the div that you use to wrap each comment.  Every comment will then alternate using .com0 and .com1 as styles.  Here is the code for the two styles:</p>
<p>bc(code). .com0{<br />
background:#efefef;<br />
border:1px solid #ccc;<br />
padding:0 10px;<br />
margin:15px 0;<br />
}<br />
.com1 {<br />
border:1px solid #ccc;<br />
padding:0 10px;<br />
margin:15px 0;<br />
}</p>
<p>That&#8217;s it.  If you came here looking for how to do this in PHP, Scriptygoddess wrote a &#8220;tutorial&#8221;:http://www.scriptygoddess.com/archives/2002/05/27/alternating-comment-colors/ that may help you.  See Wikipedia for info on <a href="http://en.wikipedia.org/wiki/Modular_arithmetic" rel="nofollow" >modular arithmetic</a>.</p>
<p>p(update). [UPDATE] &#8211; After I wrote this article I found a link (thanks to my inline Google articles) to a very robust plugin called &#8220;MTGrid&#8221;:http://www.nonplus.net/software/mt/MTGrid.htm that would also accomplish this without PHP.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.johnsjottings.com/archives/2005/01/04/alternating_comment_colors_without_php.html/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Congrats Jay Allen!</title>
		<link>http://www.johnsjottings.com/archives/2004/07/27/congrats_jay_allen.html</link>
		<comments>http://www.johnsjottings.com/archives/2004/07/27/congrats_jay_allen.html#comments</comments>
		<pubDate>Wed, 28 Jul 2004 04:44:26 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Movable Type]]></category>

		<guid isPermaLink="false">http://www.johnsjottings.com/wp/?p=344</guid>
		<description><![CDATA[



No related posts.]]></description>
			<content:encoded><![CDATA[<p></p><p>A belated congratulations to Jay Allen for &#8220;winning&#8221;:http://www.jayallen.org/comment_spam/2004/07/mtblacklist_v20_and_the_the_plugin_contest_win Six Apart&#8217;s Movable Type &#8220;Plugin Contest&#8221;:http://www.sixapart.com/log/2004/07/plug_in_to_mova.shtml with MT-Blacklist 2.0.</p>
<p>I&#8217;ve &#8220;written&#8221;:http://www.google.com/search?hl=en&#038;ie=UTF-8&#038;q=site%3Awww.johnsjottings.com+mt-blacklist about Jay&#8217;s amazing program many times and it sounds like the new version is miles ahead of the first release.  Can&#8217;t wait until it is available at the end of next month, when &#8220;Movable Type 3.1&#8243;:http://www.movabletype.org/news/2004/07/movable_type_31_whats_new.shtml will be released.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.johnsjottings.com/archives/2004/07/27/congrats_jay_allen.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using AdSense Channels with Movable Type</title>
		<link>http://www.johnsjottings.com/archives/2004/07/14/using_adsense_channels_with_movable_type.html</link>
		<comments>http://www.johnsjottings.com/archives/2004/07/14/using_adsense_channels_with_movable_type.html#comments</comments>
		<pubDate>Wed, 14 Jul 2004 13:03:16 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Movable Type]]></category>
		<category><![CDATA[Weblogs]]></category>
		<category><![CDATA[adsense]]></category>
		<category><![CDATA[adsense channels]]></category>
		<category><![CDATA[advertising]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[channels]]></category>
		<category><![CDATA[movable type]]></category>

		<guid isPermaLink="false">http://www.johnsjottings.com/wp/?p=342</guid>
		<description><![CDATA[Many webloggers have incorporated Google&#8217;s AdSense into their weblogs as one of the new ways to make money online &#8211; it&#8217;s a simple, relatively unobtrusive way to generate a little bit of secondary income. Until recently it was impossible to know which pages were generating revenue but with the introduction of channels a few months [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p></p><p>Many webloggers have incorporated Google&#8217;s <a href="https://www.google.com/adsense/" rel="nofollow" >AdSense</a> into their weblogs as one of the new <a href="http://dayjobnuker.com/" rel="nofollow" >ways to make money online</a> &#8211; it&#8217;s a simple, relatively unobtrusive way to generate a little bit of <a href="http://www.secondaryincomeblog.com" rel="nofollow" >secondary income</a>. Until recently it was impossible to know which pages were generating revenue but with the introduction of <em>channels</em> a few months ago Google opened up a whole new way to look at the data. Channels allow the AdSense user to see exactly what pages are the biggest revenue generators, but until now such insight had been unavailable to the average weblogger. This article shows how you can use channels to pinpoint which articles or other pages on your weblog are generating the most revenue.</p>
<h4>Who should read this article</h4>
<p>I am a Movable Type user and as such have written this article specifically for Movable Type. However the concepts should translate to any other weblogging tool so in general any weblogger that has been approved for the AdSense program should benefit from this article.</p>
<p><span id="more-342"></span></p>
<h4>Requirements</h4>
<p>The approach outlined in this article has been tested using both Movable Type 2.661 and 3.01D. Two plugins are used &#8211; Brad Choate&#8217;s <a href="http://bradchoate.com/weblog/2002/07/27/key-values-plugin" rel="nofollow" >Key Values</a> and <a href="http://bradchoate.com/weblog/2002/07/27/regex-plugin%20plugins" rel="nofollow" >Regex</a>. Obviously you must be approved for Google&#8217;s AdSense program.</p>
<h4>Installing the Key Values plugin</h4>
<p>Brad Choate&#8217;s brilliant <a href="http://bradchoate.com/weblog/2002/07/27/key-values-plugin" rel="nofollow" >Key Values</a> plugin offers a simple way to extend the built-in fields of Movable Type. We will be using this plugin to insert the unique channel id into any article. Before I go on to describe exactly how to do that you should make sure you have this plugin installed. I won&#8217;t rewrite Brad&#8217;s installation instructions here so please <a href="http://bradchoate.com/weblog/2002/07/27/key-values-plugin" rel="nofollow" >get it installed</a> before continuing.</p>
<p>Brad&#8217;s <a href="http://bradchoate.com/weblog/2002/07/27/regex-plugin" rel="nofollow" >Regex</a> plugin is not needed unless you use the MTIfExtended tag in your template &#8211; see below for an example.</p>
<h4>Creating the channels</h4>
<p>Most webloggers have a main page with the last <em>n</em> articles, various archives pages and individual article pages. I suggest creating one channel for your main page, another for each archive type you have, a default channel that will be used for individual articles where you have not specified a channel and one for every article you want to monitor. Take care, however, as Google currently limits you to 50 active channels. What that means is you will want to keep tabs on a subset of your articles &#8211; probably the most heavily viewed or the ones you put the most effort into. Wouldn&#8217;t it be nice to see your hard work paying off by seeing exactly how much revenue a specific article is generating for you?</p>
<p>Follow <a href="https://www.google.com/adsense/faq#channel" rel="nofollow" >Google&#8217;s directions</a> for creating a channel. Below is an example of what part of your code might like look. Here <em>0123456789</em> is the unique channel id you will be inserting into your template or articles.</p>
<blockquote><p>google_ad_width = 728;<br />
google_ad_height = 90;<br />
google_ad_format = &#8220;728x90_as&#8221;;<br />
google_ad_channel =&#8221;0123456789&#8243;;</p></blockquote>
<p>Create a channel called &#8220;Main Page&#8221;, one called &#8220;Archives&#8221;, one called &#8220;Default Article&#8221; and then two or three more representing a few test articles. Be sure to use descriptive names.</p>
<h4>Adding a channel to an article</h4>
<p>I&#8217;m going to jump ahead of the game just a little to describe how you are going to be adding this channel data to some of your articles, then we&#8217;ll proceed to making the template changes necessary to support this approach.</p>
<p>The channels called &#8220;Main Page&#8221;, &#8220;Archives&#8221; and &#8220;Default Article&#8221; will all be used within your templates as you will see below. However the channels you created for individual articles will actually be entered in the article itself, in the MTEntryMore field (the Extended Entry text box of the Movable Type edit screen).</p>
<p>Here is an example of the simplest case were you don&#8217;t actually use that field for your article so it only contains the key/value pair:</p>
<p><img width="487" src="http://www.johnsjottings.com/images/ee-blank.jpg" alt="ee-blank.jpg" height="79" /></p>
<p>And as you can see if you do actually use that field adding the channel isn&#8217;t much different:</p>
<p><img width="323" src="http://www.johnsjottings.com/images/ee-data.jpg" alt="ee-data.jpg" height="90" /></p>
<p>At this point you may be saying to yourself, &#8220;I don&#8217;t want that crap to show in my article.&#8221; Ah behold the magic of the MTKeyValue plugin. With the appropriate template changes nobody will be the wiser.</p>
<h4>Template changes</h4>
<p>Now that you have your channels created and you know how to add the individual ones to your articles you will need to edit a few of your templates. There are two considerations here. The obvious change is that you need to change each template that contains the Google AdSense code to point to the custom channel for that page. Then, because of our overloading the MTEntryMore field we need to make sure the channel data is stripped from that field when it is displayed in any template.</p>
<p>Let&#8217;s start with the simplest change. One of the channels you created was called &#8220;Main Page&#8221;. Go to the template (default name is Main Index) that contains the AdSense code that is displayed on your main page, assuming you have the ads showing there, and simply update the AdSense code to include the channel id. It will look just like the code fragment above that came straight from Google. At this point you really haven&#8217;t done anything too tricky. Whenever a user clicks an ad on your main page that will register the click through to the Main Page channel. If your site is like mine where most people arrive through a search to an individual article then it is likely you won&#8217;t see many hits from the main page. Still, the point of this article is that you can begin to find that stuff out!</p>
<p>Do the same thing for your Archives channel and your archives templates. You can either use the same channel for all your archive types or if you are interested in seeing whether a particular archive type does better for you then obviously you can create multiple archive channels. Keep in mind the 50 channel limitation, however.</p>
<p>To this point we haven&#8217;t done anything very dynamic but that is about to change. I think the real value to this approach is the granularity &#8211; seeing your revenue at the article level. Let&#8217;s take a look at the changes we need to make to your Individual Entry Template (default name is Individual Entry Archive). The first thing we need to do is again make the change to the Google AdSense code although this time we aren&#8217;t just entering a simple channel id. Here is what mine looks like:</p>
<blockquote><p><code>google_ad_channel = "&lt;mtkeyvalues&gt;&lt;/mtkeyvalues&gt;<br />
&lt;mtkeyvalue default="0123456789" key="channel"&gt;&lt;/mtkeyvalue&gt;";</code></p></blockquote>
<p>(That should all be on one line). The opening and closing MTKeyValues is the container tag for accessing the key/value data via the MTKeyValue plugin. The MTKeyValue tag is saying &#8220;if there exists a key named channel then use that value, otherwise use the default value of 0123456789.&#8221; This value would be a real number, the number you generated for your Default Article channel above.</p>
<p>At this point your work with the channels is done. In fact if you stopped right now you would have access to your custom channels and if you looked at the source for a couple of your test articles you would see the correct channels being used. However there is one problem. Remember the &#8220;channel=0123456789&#8243; line we put into the Extended Entry? You need to tell Movable Type to strip that line out when it builds your site. That data needs to be invisible to the reader. Here&#8217;s how to do that.</p>
<p>In your Individual Entry Template you should have a section that looks something like this:</p>
<blockquote><p>&lt;$MTEntryBody$&gt;<br />
&lt;$MTEntryMore$&gt;</p></blockquote>
<p>All it&#8217;s doing is printing out the Entry Body and then the Extended Entry right after it. That&#8217;s what you want but you just want to make sure your key/value pair doesn&#8217;t show u That&#8217;s easy:</p>
<blockquote><p>&lt;$MTEntryBody$&gt;<br />
&lt;mtkeyvalues&gt;&lt;/mtkeyvalues&gt;<br />
&lt;$MTEntryMore$&gt;<br />
;</p></blockquote>
<p>The MTKeyValues tag does all the work and automatically strips the key/value data out so what&#8217;s left is just whatever you had in the Extended Entry field. All I did here was wrap the &lt;MTEntryMore&gt; tag with the &lt;MTKeyValues&gt; tag and you should simply repeat that across all of your templates that reference the MTEntryMore field. Don&#8217;t forget to fix your RSS templates.</p>
<p>One thing I ran into on my main page template was the code that hides the Extended Entry text from the user. The logic of that code is quite simple &#8211; &#8220;if there is no extended entry data then just show the body of the article. If there is extended entry data then show a clickable link that when clicked will display the extended entry data.&#8221; The code itself looked something like this:</p>
<blockquote><p>&lt;mtentryifextended&gt;&lt;/mtentryifextended&gt;<br />
&#8230; do stuff &#8230;</p></blockquote>
<p>If you&#8217;ve been paying attention you probably have figured out the problem. If I have an article that doesn&#8217;t use the Extended Entry field other than to insert a channel id then my code would think there is an extended entry and display the link &#8211; but there would be nothing behind it because the MTKeyValues tag had stripped the key/value out. Here is how I (<a href="http://www.johnsjottings.com/archives/2004/07/12/the_smallest_thing.html">with some help</a>) worked around that:</p>
<blockquote><p>&lt;mtkeyvalues&gt;&lt;/mtkeyvalues&gt;<br />
&lt;mtentryifextended&gt;&lt;/mtentryifextended&gt;<br />
&lt;mtifmatches expr=&#8221;[MTEntryMore]&#8221; pattern=&#8221;m/\S/&#8221;&gt;&lt;/mtifmatches&gt;<br />
&#8230; do stuff &#8230;</p></blockquote>
<p>The MTIfMatches tag comes from the <a href="http://bradchoate.com/weblog/2002/07/27/regex-plugin" rel="nofollow" >Regex</a> plugin. You only need that plugin if you have this unique situation.</p>
<p>At this point you should be good to go.</p>
<h4>Where to go from here</h4>
<p>The first thing I need to point out is that you will not immediately see the impact of your work. Channel data seems to be two or three days behind so have some patience &#8211; it will take a little bit of time before you start seeing the channel data in your reports.</p>
<p>In this article I&#8217;ve given you a framework for incorporating Google&#8217;s AdSense channels into your weblog for the purpose of better understanding where exactly your revenue comes from. Because of the limitations of the number of channels you can create, however, you will need to apply some logic to which articles you flag and you will need to keep that up to date as you add new articles &#8211; fortunately Google makes it very easy to inactivate channels so you can control that completely within Google without having to go back to your old articles. Simply leave the channel data there.</p>
<p>If you have any trouble getting this implemented please leave a comment below or <a href="mailto:john@johnsjottings.com?subject=Help%20with%20AdSense%20channels%20article" rel="nofollow" >email me</a> and I&#8217;ll try to help.</p>
<p>I hope you have found this article useful and can use this approach to tweak your site to increase your AdSense revenue. If you feel you can quantify an increase in revenue as a result of this article then I would greatly appreciate any donation you feel is appropriate. Please click on the button below to throw some love my way.</p>
<p>Thank you and good luck.</p>
<p>More <a href="http://www.adsenseoptimized.com/index.html" rel="nofollow" >AdSense Tips</a>.</p>
<form method="post" action="https://www.paypal.com/cgi-bin/webscr">
<input name="cmd" type="hidden" />
<input name="submit" border="0" src="https://www.paypal.com/en_US/i/btn/x-click-but04.gif" alt="Make payments with PayPal - it's fast, free and secure!" type="image" />
<input name="encrypted" type="hidden" /> </form>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.johnsjottings.com/archives/2004/07/14/using_adsense_channels_with_movable_type.html/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>The Smallest Thing</title>
		<link>http://www.johnsjottings.com/archives/2004/07/12/the_smallest_thing.html</link>
		<comments>http://www.johnsjottings.com/archives/2004/07/12/the_smallest_thing.html#comments</comments>
		<pubDate>Tue, 13 Jul 2004 05:33:12 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Movable Type]]></category>

		<guid isPermaLink="false">http://www.johnsjottings.com/wp/?p=341</guid>
		<description><![CDATA[I&#8217;ve spent the last week trying to get Brad Choate&#8217;s Key Values plugin working as I need it to. A couple of nights ago I ended up sending Brad a cry for help and he wrote back promptly (thanks Brad!) with a suggestion, which much to my chagrine didn&#8217;t work. I was so sure it [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p></p><p><img alt="mttag.jpg" class="articleimg"  src="http://www.johnsjottings.com/images/mttag.jpg" width="286" height="99" /></p>
<p>I&#8217;ve spent the last week trying to get Brad Choate&#8217;s <a href="http://bradchoate.com/weblog/2002/07/27/key-values-plugin" rel="nofollow" >Key Values</a> plugin working as I need it to.  A couple of nights ago I ended up sending Brad a cry for help and he wrote back promptly (thanks Brad!) with a suggestion, which much to my chagrine didn&#8217;t work.  I was so sure it would.</p>
<p>So I decided to do some more debugging having the confidence that it should work and as a result looked at the HTML my template was generating, a snippet of which you see here.  That&#8217;s the HTML you see after you save your entry.  See that &lt;/MTIfMatches&gt; tag there?  Shouldn&#8217;t be there.  That much I knew.  Took me just another minute to see the cause.  The opening tag was &lt;MTIFMatches&gt;.  Can you see the problem?</p>
<p>Farked with a capital F.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.johnsjottings.com/archives/2004/07/12/the_smallest_thing.html/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MTYahooRank</title>
		<link>http://www.johnsjottings.com/archives/2004/02/28/mtyahoorank.html</link>
		<comments>http://www.johnsjottings.com/archives/2004/02/28/mtyahoorank.html#comments</comments>
		<pubDate>Sat, 28 Feb 2004 13:44:25 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Movable Type]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Weblogs]]></category>
		<category><![CDATA[google page rank]]></category>
		<category><![CDATA[movable type plugin]]></category>
		<category><![CDATA[page rank checker]]></category>
		<category><![CDATA[yahoo page rank]]></category>

		<guid isPermaLink="false">http://www.johnsjottings.com/wp/?p=303</guid>
		<description><![CDATA[MTYahooRank is a Movable Type plugin that allows you to programmatically determine the Yahoo Rank of a keyword or phrase. Have a keyword that is special to you that you always want to know where you stand on Yahoo? MTYahooRank is for you. MTYahooRank is a page rank checker similar to my MTGoogleRank plugin, but [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p></p><p>MTYahooRank is a Movable Type plugin that allows you to programmatically determine the Yahoo Rank of a keyword or phrase.  Have a keyword that is special to you that you always want to know where you stand on Yahoo?  MTYahooRank is for you.  MTYahooRank is a <a href="http://www.johnsjottings.com/archives/2004/01/10/mtgooglerank.html">page rank checker</a> similar to my <a href="http://www.johnsjottings.com/archives/2004/01/10/mtgooglerank.html">MTGoogleRank</a> plugin, but actually has a couple of additional features that I have not yet been able to get working via the Google API.  To see one example of how this could be used I&#8217;ve added a simple SearchRanks widget toward the bottom of my sidebar on my <a href="http://www.johnsjottings.com">front page</a>.</p>
<p>To use simply download YahooRank.txt rename to YahooRank.pl and place in your Movable Type plugins directory.  Then include the tag in your templates and away you go.</p>
<p>MTYahooRank includes the following tags:</p>
<p>MTYahooRank &#8211; The main tag &#8211; arguments documented below.<br />
MTYahooRankVersion &#8211; Returns the version number of MTYahooRank.<br />
MTYahooRankPoweredBy &#8211; Returns the phrase &#8220;Powered By MTYahooRank&#8221; with a link to my site.  No obligation to use, but it would be cool if you did.</p>
<p>The main MTYahooRank tag takes one required argument and optionally up to five additional arguments:</p>
<p><b>query</b> = the actual query to pass to Yahoo.  This is a required argument and you will get a rebuild error if you don&#8217;t include it.<br />
<b>url</b> = by default MTYahooRank uses your own weblog&#8217;s url as defined within MT to use in the search.  You can override this default if you choose.<br />
<b>pages</b> = by default MTYahooRank only searches through the first page of results in Yahoo.  You can override this default if you choose.  Take caution when doing so, however, as this will slow rebuilds down.<br />
<b>count</b> = when the count argument is included MTYahooRank will return the total estimated number of results for the given query.  When this argument exists it is assumed you want the count returned &#8211; the value you use does not matter.<br />
<b>link</b> = when the link argument is included MTYahooRank will return an html formatted anchor to the yahoo search page for the given search parameter. When this argument exists it is assumed you want the link returned &#8211; the value you use does not matter.<br />
<b>linktype</b> = works in conjunction with link, if linktype = &#8220;text&#8221; then the query value is the text, otherwise the result number is the text</p>
<p>Unless count or link is specified, MTYahooRank returns either a numeric value representing the YahooRank calculated or a string formatted like &#8220;>#&#8221; where # is the number of results searched.  So if you passed the argument pages=3 that would actually search through the first 30 results on Yahoo (10 results per page by default) and if your search string was not found the value &#8220;>30&#8243; would be returned.  If the <b>count</b> argument is included then the numeric value returned will be equal to the estimated total result set size.</p>
<p>Here are some usage examples:</p>
<p>&lt;MTYahooRank query=&#8221;rubber chicken&#8221;/&gt;<br />
&lt;MTYahooRank query=&#8221;rubber chicken&#8221; url=&#8221;www.microsoft.com&#8221;/&gt;<br />
&lt;MTYahooRank query=&#8221;rubber chicken&#8221; url=&#8221;www.microsoft.com&#8221; pages=&#8221;3&#8243;/&gt;<br />
&lt;MTYahooRank query=&#8221;rubber chicken&#8221; pages=&#8221;3&#8243;/&gt;<br />
&lt;MTYahooRank query=&#8221;rubber chicken&#8221; link=&#8221;1&#8243;/&gt; would return &#8220;>10&#8243;:http://search.yahoo.com/search?ei=UTF-8&#038;fr=sfp&#038;p=rubber+chicken<br />
&lt;MTYahooRank query=&#8221;rubber chicken&#8221; link=&#8221;1&#8243; linktype=&#8221;text&#8221;/&gt; would return &#8220;rubber chicken&#8221;:http://search.yahoo.com/search?ei=UTF-8&#038;fr=sfp&#038;p=rubber+chicken</p>
<p>Thanks to code from <a href="http://kalsey.com/blog/" rel="nofollow" >Adam Kalsey</a> MTYahooRank also supports embedded MT tags, for example:</p>
<p>&lt;MTYahooRank query=&#8221;[MTBlogName]&#8221; url=&#8221;[MTBlogURL]&#8221; pages=&#8221;3&#8243;/&gt;</p>
<p>Note that instead of using the tag as you would find it in your templates, &lt;$MTBlogName$&gt; you need to use [MTBlogName] with the square brackets.</p>
<p>In a future article I will show you how you can utilize Brad Choate&#8217;s <a href="http://www.bradchoate.com/past/mtmacros.php" rel="nofollow" >MTMacro</a> plugin to include MTYahooRank results within an entry.</p>
<p>I hope you find it useful.  I&#8217;d also love to get suggestions for improvement, there should be many.</p>
<p><u>History</u></p>
<p>* 11/02/2004 &#8211; Version .20 released.<br />
* 02/28/2004 &#8211; Version .10 released.<br />
** Initial release.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.johnsjottings.com/archives/2004/02/28/mtyahoorank.html/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>MTGoogleRank</title>
		<link>http://www.johnsjottings.com/archives/2004/01/10/mtgooglerank.html</link>
		<comments>http://www.johnsjottings.com/archives/2004/01/10/mtgooglerank.html#comments</comments>
		<pubDate>Sat, 10 Jan 2004 11:26:07 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Movable Type]]></category>
		<category><![CDATA[Weblogs]]></category>
		<category><![CDATA[google page rank]]></category>
		<category><![CDATA[movable type plugin]]></category>
		<category><![CDATA[page rank checker]]></category>

		<guid isPermaLink="false">http://www.johnsjottings.com/wp/?p=285</guid>
		<description><![CDATA[[UPDATE] &#8211; Version .30 released 02/08/2004 MTGoogleRank is a Movable Type plugin that allows you to programmatically determine the Google Rank of a keyword or phrase. Have a keyword that is special to you that you always want to know where you stand? MTGoogleRank is for you. MtGoogleRank uses the officially sanctioned Google API so [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p></p><p>[UPDATE] &#8211; Version .30 released 02/08/2004</p>
<p>MTGoogleRank is a Movable Type plugin that allows you to programmatically determine the Google Rank of a <a href="http://www.secondaryincomeblog.com/keywords/how-to-optimize-landing-page-keywords/" rel="nofollow" >keyword</a> or phrase.  Have a keyword that is special to you that you always want to know where you stand?  MTGoogleRank is for you.  MtGoogleRank uses the officially sanctioned Google API so you will be completely &#8220;street legal&#8221; in its use.  To see one example of how this could be used I&#8217;ve added a simple GoogleRanks widget toward the bottom of my sidebar.  I&#8217;ve also added it to my search template.</p>
<p>To use simply download GoogleRank.txt rename the file to GoogleRank.pl and place in your Movable Type plugins directory.  Then include the tag in your templates and away you go.</p>
<p>You need a Google API key to use this plugin.  If you do not have one you can get one for free at <a href="http://www.google.com/apis/" rel="nofollow" >http://www.google.com/apis/</a>.  MT has a placeholder for this key within it&#8217;s configuration.  Open your administration screen, click Weblog Configuration then Preferences and about half way down the page you will find the spot for it.</p>
<p>MTGoogleRank includes the following tags:</p>
<p>MTGoogleRank &#8211; The main tag &#8211; arguments documented below.<br />
MTGoogleRankVersion &#8211; Returns the version number of MTGoogleRank.<br />
MTGoogleRankPoweredBy &#8211; Returns the phrase &#8220;Powered By MTGoogleRank&#8221; with a link to my site.</p>
<p>The main MTGoogleRank tag takes one required argument and optionally up to three additional arguments:</p>
<p><b>query</b> = the actual query to pass to Google.  This is a required argument and you will get a rebuild error if you don&#8217;t include it.<br />
<b>url</b> = by default MTGoogleRank uses your own weblog&#8217;s url as defined within MT to use in the search.  You can override this default if you choose.<br />
<b>pages</b> = by default MTGoogleRank only searches through the first page of results in Google.  You can override this default if you choose.  Take caution when doing so, however, as the Google API is a little slow and scrolling through many pages is going to slow things down significantly.<br />
<b>count</b> = when the count argument is included MTGoogleRank will return the total estimated number of results for the given query.  When this argument exists it is assumed you want the count returned &#8211; the value you use does not matter.</p>
<p>MTGoogleRank returns either a numeric value representing the GoogleRank calculated or a string formatted like &#8220;>#&#8221; where # is the number of results searched.  So if you passed the argument pages=3 that would actually search through the first 30 results on Google (10 results per page) and if your search string was not found the value &#8220;>30&#8243; would be returned.  If the <b>count</b> argument is included then the numeric value returned will be equal to the estimated total result set size.</p>
<p>Here are some usage examples:</p>
<p>&lt;MTGoogleRank query=&#8221;rubber chicken&#8221;/&gt;<br />
&lt;MTGoogleRank query=&#8221;rubber chicken&#8221; url=&#8221;www.microsoft.com&#8221;/&gt;<br />
&lt;MTGoogleRank query=&#8221;rubber chicken&#8221; url=&#8221;www.microsoft.com&#8221; pages=&#8221;3&#8243;/&gt;<br />
&lt;MTGoogleRank query=&#8221;rubber chicken&#8221; pages=&#8221;3&#8243;/&gt;<br />
Out of &lt;MTGoogleRank query=&#8221;rubber chicken&#8221; count=&#8221;true&#8221;/&gt; pages on Google, I am in position &lt;MTGoogleRank query=&#8221;rubber chicken&#8221;/&gt;<br />
&lt;MTGoogleRank query=&#8221;link:www.johnsjottings.com&#8221; count=&#8221;true&#8221;/&gt; pages are linked to my site.</p>
<p>Thanks to code from <a href="http://kalsey.com/blog/" rel="nofollow" >Adam Kalsey</a> MTGoogleRank also supports embedded MT tags, for example:</p>
<p>&lt;MTGoogleRank query=&#8221;[MTBlogName]&#8221; url=&#8221;[MTBlogURL]&#8221; pages=&#8221;3&#8243;/&gt;</p>
<p>Note that instead of using the tag as you would find it in your templates, &lt;$MTBlogName$&gt; you need to use [MTBlogName] with the square brackets.</p>
<p>In a future article I will show you how you can utilize Brad Choate&#8217;s <a href="http://www.bradchoate.com/past/mtmacros.php" rel="nofollow" >MTMacro</a> plugin to include MTGoogleRank results within an entry.</p>
<p>I hope you find it useful.  I&#8217;d also love to get suggestions for improvement, there should be many.</p>
<p>Tip of the hat to <a href="http://www.joegrossberg.com/archives/001126.html" rel="nofollow" >Joe</a> for the inspiration.</p>
<p><u>History</u></p>
<p>* 02/08/2004 &#8211; Version .30 released.<br />
** Added MTGoogleRankVersion tag.<br />
** Added MTGoogleRankPoweredBy tag.<br />
** Added code to handle the occasional Google &#8220;burp&#8221;.<br />
* 01/14/2004 &#8211; Version .20 released.<br />
** Added <i>count</i> argument.<br />
* 01/10/2004 &#8211; Version .10 released.<br />
** Initial release.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.johnsjottings.com/archives/2004/01/10/mtgooglerank.html/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Automating MT-Blacklist</title>
		<link>http://www.johnsjottings.com/archives/2004/01/04/automating_mt_blacklist.html</link>
		<comments>http://www.johnsjottings.com/archives/2004/01/04/automating_mt_blacklist.html#comments</comments>
		<pubDate>Sun, 04 Jan 2004 12:52:41 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Movable Type]]></category>
		<category><![CDATA[Weblogs]]></category>
		<category><![CDATA[blog spam]]></category>
		<category><![CDATA[jay allen]]></category>
		<category><![CDATA[movable type]]></category>
		<category><![CDATA[mt-blacklist]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://www.johnsjottings.com/wp/?p=282</guid>
		<description><![CDATA[The best defense against the growing problem of comment spam that Movable Type powered weblog owners have is Jay Allen&#8217;s MT-Blacklist. If your weblog is built on MT then you simply must install this plugin. There is no better feeling than checking the activity log and seeing all of the comment spammers who have been [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p></p><p>The best defense against the growing problem of comment spam that Movable Type powered weblog owners have is Jay Allen&#8217;s <a href="http://www.jayallen.org/projects/mt-blacklist/" rel="nofollow" >MT-Blacklist</a>.  If your weblog is built on MT then you simply must install this plugin.  There is no better feeling than checking the activity log and seeing all of the comment spammers who have been stopped dead in their tracks by this wonderful plugin.</p>
<p>Once you install the plugin keep the blacklist up to date by visiting the <a href="http://www.jayallen.org/comment_spam/" rel="nofollow" >Comment Spam Clearinghouse</a>.  Here you will find the most recently updated blacklist as well as a mechanism for submitting any new comment spam that happened to slip through.  We as a community of users help to keep the list updated for the benefit of everyone.</p>
<p>Up until a few days ago the only fault I had with this system was that it still required me to periodically grab the new blacklist, and of course some comment spam would slip in between the time someone identified the new variant and I was able to grab the new blacklist.</p>
<p>Thankfully, someone has solved this problem.  Cheah Chu Yeow has created the <a href="http://blog.codefront.net/scripts/blacklistupdater/" rel="nofollow" >MT-Blacklist Updater</a> which is a simple PHP script that can be scheduled via cron or Windows Scheduled Tasks, or whatever other job scheduling mechanism you use.  Installation was a breeze and my blacklist now gets updated automatically every 6 hours.  What I really like about this implementation is that it processes and records both inserts and deletes to the list.  The only problem with it I have is that there doesn&#8217;t appear to be a way to record the details behind what was inserted or deleted.  Particularly for deletes I would be interested in the details.</p>
<p>Comment spam is a growing problem but thankfully there are people like Jay Allen and Cheah Chu Yeow who are tackling the problem head-on.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.johnsjottings.com/archives/2004/01/04/automating_mt_blacklist.html/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MTAdSenseStats</title>
		<link>http://www.johnsjottings.com/archives/2003/11/29/mtadsensestats.html</link>
		<comments>http://www.johnsjottings.com/archives/2003/11/29/mtadsensestats.html#comments</comments>
		<pubDate>Sat, 29 Nov 2003 14:58:09 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Movable Type]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Weblogs]]></category>
		<category><![CDATA[adsense]]></category>
		<category><![CDATA[adsense plugin]]></category>
		<category><![CDATA[google adsense]]></category>
		<category><![CDATA[moveable type]]></category>
		<category><![CDATA[mt]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.johnsjottings.com/wp/?p=264</guid>
		<description><![CDATA[After some gentle prodding I&#8217;ve decided to release MTAdSenseStats after all. Please read my previous entry to understand why I have hesitated in releasing it. It is important to note that using these tags on a public website is a violation of Google&#8217;s Terms &#038; Conditions and I take no responsibility for anything that may [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p></p><p>After some gentle prodding I&#8217;ve decided to release MTAdSenseStats after all.  Please read <a href="http://www.johnsjottings.com/archives/2003/11/12/mtadsensestats_not.html">my previous entry</a> to understand why I have hesitated in releasing it.  It is important to note that using these tags on a public website is a violation of Google&#8217;s Terms &#038; Conditions and I take no responsibility for anything that may happen if you use this plugin.  <b><em>The use of MTAdSenseStats should be restricted solely to private pages strictly for the use of the AdSense account holder</em></b>.</p>
<p><em>&lt;DISCLAIMER&gt;I barely know Perl, I&#8217;ve never coded a Movable Type plugin before and I&#8217;m a manager.  Proceed at your own risk.&lt;/DISCLAIMER&gt;</em></p>
<p>With that said, I present MTAdSenseStats, a Movable Type plugin designed for the private use of AdSense account holders who wish to incorporate some AdSense statistics in private pages within a Movable Type weblog.</p>
<p>To use simply downloadAdSenseStats.pl and place in your Movable Type plugins directory.  Replace the username and password in the file with your own AdSense account information.  Then use any of the available tags in your templates.</p>
<p>MTAdSenseStats includes the following tags:</p>
<p>MTAdSenseStats &#8211; Container tag<br />
MTAdSenseStatsVersion &#8211; Version number of MTAdSenseStats<br />
MTAdSenseStatsDays &#8211; Number of days in the AdSense program<br />
MTAdSenseStatsDateToday &#8211; Date for the &#8220;today&#8221; stats<br />
MTAdSenseStatsImpressionsTotal &#8211; Total impressions to date<br />
MTAdSenseStatsImpressionsPerDay &#8211; Average impressions per day<br />
MTAdSenseStatsImpressionsToday &#8211; Total impressions for today<br />
MTAdSenseStatsImpressionsMin &#8211; Fewest impressions for one day over history<br />
MTAdSenseStatsImpressionsMinDate &#8211; Date of fewest impressions<br />
MTAdSenseStatsImpressionsMax &#8211; Most impressions for one day over history<br />
MTAdSenseStatsImpressionsMaxDate &#8211; Date of most impressions<br />
MTAdSenseStatsClicksTotal &#8211; Total clicks to date<br />
MTAdSenseStatsClicksPerDay &#8211; Average clicks per day<br />
MTAdSenseStatsClicksToday &#8211; Clicks for today<br />
MTAdSenseStatsClicksMin &#8211; Fewest clicks for one day over history<br />
MTAdSenseStatsClicksMinDate &#8211; Date of fewest clicks<br />
MTAdSenseStatsClicksMax &#8211; Most clicks for one day over history<br />
MTAdSenseStatsClicksMaxDate &#8211; Date of most clicks<br />
MTAdSenseStatsCtrTotal &#8211; Clickthrough rate to date<br />
MTAdSenseStatsCtrToday &#8211; Clickthrough rate for today<br />
MTAdSenseStatsCtrMin &#8211; Lowest clickthrough rate for one day over history<br />
MTAdSenseStatsCtrMinDate &#8211; Date of lowest clickthrough rate<br />
MTAdSenseStatsCtrMax &#8211; Highest clickthrough rate for one day over history<br />
MTAdSenseStatsCtrMaxDate &#8211; Date of highest clickthrough rate<br />
MTAdSenseStatsEarningsTotal &#8211; Total earnings to date<br />
MTAdSenseStatsEarningsPerDay &#8211; Average earnings per day<br />
MTAdSenseStatsEarningsToday &#8211; Total earnings for today<br />
MTAdSenseStatsEarningsMin &#8211; Least earnings for one day over history<br />
MTAdSenseStatsEarningsMinDate &#8211; Date of least earnings<br />
MTAdSenseStatsEarningsMax &#8211; Most earnings for one day over history<br />
MTAdSenseStatsEarningsMaxDate &#8211; Date of most earnings</p>
<p>Here is how it might be used in a template:</p>
<blockquote><p><MTAdSenseStats><br />
AdSense Statistics (MTAdSenseStats v<$MTAdSenseStatsVersion$>) for <$MTAdSenseStatsDateToday$>:<br />
Today&#8217;s impressions: <$MTAdSenseStatsImpressionsToday$><br />
Today&#8217;s clicks: <$MTAdSenseStatsClicksToday$><br />
Today&#8217;s ctr: <$MTAdSenseStatsCtrToday$><br />
Today&#8217;s earnings: <$MTAdSenseStatsEarningsToday$><br />
Total stats over <$MTAdSenseStatsDays$> days:<br />
Average impressions: <$MTAdSenseStatsImpressionsPerDay$><br />
Average clicks: <$MTAdSenseStatsClicksPerDay$><br />
Average earnings: <$MTAdSenseStatsEarningsPerDay$><br />
Total impressions: <$MTAdSenseStatsImpressionsTotal$><br />
Total clicks: <$MTAdSenseStatsClicksTotal$><br />
Total ctr: <$MTAdSenseStatsCtrTotal$><br />
Total earnings: <$MTAdSenseStatsEarningsTotal$><br />
Minimum impressions of <$MTAdSenseStatsImpressionsMin$> on <$MTAdSenseStatsImpressionsMinDate$><br />
Maximum impressions of <$MTAdSenseStatsImpressionsMax$> on <$MTAdSenseStatsImpressionsMaxDate$><br />
Minimum clicks of <$MTAdSenseStatsClicksMin$> on <$MTAdSenseStatsClicksMinDate$><br />
Maximum clicks of <$MTAdSenseStatsClicksMax$> on <$MTAdSenseStatsClicksMaxDate$><br />
Minimum clickthrough of <$MTAdSenseStatsCtrMin$> on <$MTAdSenseStatsCtrMinDate$><br />
Maximum clickthrough of <$MTAdSenseStatsCtrMax$> on <$MTAdSenseStatsCtrMaxDate$><br />
Minimum earnings of <$MTAdSenseStatsEarningsMin$> on <$MTAdSenseStatsEarningsMinDate$><br />
Maximum earnings of <$MTAdSenseStatsEarningsMax$> on <$MTAdSenseStatsEarningsMaxDate$><br />
</MTAdSenseStats></p></blockquote>
<p>I hope you find it useful.  I&#8217;d also love to get suggestions for improvement, there should be many.</p>
<p>[NOTE - Because AdSense uses https you need either IO:Socket:SSL or Crypt:SSLeay installed]</p>
<p>Should you really need to maximize your Adsense Earnings don&#8217;t forget to read my article on using <a href="http://www.johnsjottings.com/archives/2004/07/14/using_adsense_channels_with_movable_type.html">Adsense Channels</a> to maximize per post revenue.</p>
<p><u>History</u><br />
11/29/2003 &#8211; Version .25 released.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.johnsjottings.com/archives/2003/11/29/mtadsensestats.html/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>MTAdSenseStats (NOT)</title>
		<link>http://www.johnsjottings.com/archives/2003/11/12/mtadsensestats_not.html</link>
		<comments>http://www.johnsjottings.com/archives/2003/11/12/mtadsensestats_not.html#comments</comments>
		<pubDate>Thu, 13 Nov 2003 00:35:00 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Movable Type]]></category>
		<category><![CDATA[adsense stats]]></category>
		<category><![CDATA[google adsense]]></category>
		<category><![CDATA[privacy policy]]></category>

		<guid isPermaLink="false">http://www.johnsjottings.com/wp/?p=257</guid>
		<description><![CDATA[[UPDATE - I released it after all, please see MTAdSenseStats for more details] For the last few nights I&#8217;ve been pounding away at my first MT Plugin, MTAdSenseStats. I had even started the announcement that you see striked out below. But then tonight I got an email from the Google AdSense police: Hello John, We&#8217;ve [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p></p><p>[UPDATE - I released it after all, please see <a href="http://www.johnsjottings.com/archives/2003/11/29/mtadsensestats.html">MTAdSenseStats</a> for more details]</p>
<p>For the last few nights I&#8217;ve been pounding away at my first MT Plugin, MTAdSenseStats.  I had even started the announcement that you see <del>striked out</del> below.</p>
<p>But then tonight I got an email from the Google AdSense police:</p>
<blockquote><p>Hello John,<br />
We&#8217;ve noticed that you are sharing confidential information regarding the Google AdSense program.  This activity is a violation of our Terms and Conditions (<a href="https://www.google.com/adsense/terms" rel="nofollow" >https://www.google.com/adsense/terms</a>).<br />
Please immediately remove  the following language from your website or web posting:<br />
<br />
I&#8217;ve had my best day to date today, just shy of #DELETED#.  In one day.<br />
<br />
After you&#8217;ve made the appropriate changes, please respond to this email so we can review your site again.  We appreciate the understanding.<br />
Sincerely,<br />
The Google Team</p></blockquote>
<p>I took the message to heart and not only stopped development of the plugin, but also removed other mentions to AdSense revenue that I had posted, as well as removed an image showing a graph of my revenue history I had referred to elsewhere.</p>
<p>After all, I&#8217;m on track to make #DELETED# this year and I don&#8217;t want to screw that up.</p>
<p><del><em>&lt;DISCLAIMER&gt;I barely know Perl, I&#8217;ve never coded a Movable Type plugin before and I&#8217;m a manager.  Proceed at your own risk.&lt;/DISCLAIMER&gt;</em></del></p>
<p><del>With that said, I present MTAdSenseStats v0.10, a Movable Type plugin that</del></p>
<p><del>It includes the following tags:</del></p>
<p>* <del>MTAdSenseStats</del><br />
** <del>Container tag</del><br />
* <del>MTAdSenseStatsVersion</del><br />
** <del>Version number of MTAdSenseStats</del><br />
* <del>MTAdSenseStatsDays</del><br />
** <del>Number of days in the program</del><br />
* <del>MTAdSenseStatsImpressionsTotal</del><br />
** <del>Total impressions to date</del><br />
* <del>MTAdSenseStatsImpressionsPerDay</del><br />
** <del>Average impressions per day</del><br />
* <del>MTAdSenseStatsImpressionsToday</del><br />
** <del>Total impressions for today</del><br />
* <del>MTAdSenseStatsClicksTotal</del><br />
** <del>Total clicks to date</del><br />
* <del>MTAdSenseStatsClicksPerDay</del><br />
** <del>Average clicks per day</del><br />
* <del>MTAdSenseStatsClicksToday</del><br />
** <del>Clicks for today</del><br />
* <del>MTAdSenseStatsClickthroughTotal</del><br />
** <del>Clickthrough rate to date</del><br />
* <del>MTAdSenseStatsClickthroughToday</del><br />
** <del>Clickthrough rate for today</del><br />
* <del>MTAdSenseStatsRevenueTotal</del><br />
** <del>Total revenue to date</del><br />
* <del>MTAdSenseStatsRevenuePerDay</del><br />
** <del>Average revenue per day</del><br />
* <del>MTAdSenseStatsRevenueToday</del><br />
** <del>Total revenue for today</del></p>
<p><del>Here is how it might be used in a template:</del></p>
<blockquote><p><MTAdSenseStats><br />
AdSense Statistics (v<$MTAdSenseStatsVersion$>):<br />
Today&#8217;s revenue: <$MTAdSenseStatsRevenueToday$><br />
Average Per Day: <$MTAdSenseStatsRevenuePerDay$><br />
Total Revenue: <$MTAdSenseStatsRevenueTotal$><br />
Not too bad for <$MTAdSenseStatsDays$> days work!<br />
</MTAdSenseStats></p></blockquote>
<p><del>I hope you find it useful.  I&#8217;d also love to get suggestions for improvement, there should be many.</del></p>
<p>Oh well, so much for that.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.johnsjottings.com/archives/2003/11/12/mtadsensestats_not.html/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Power of Movable Type</title>
		<link>http://www.johnsjottings.com/archives/2003/07/15/the_power_of_movable_type.html</link>
		<comments>http://www.johnsjottings.com/archives/2003/07/15/the_power_of_movable_type.html#comments</comments>
		<pubDate>Tue, 15 Jul 2003 13:48:41 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Movable Type]]></category>
		<category><![CDATA[content management]]></category>
		<category><![CDATA[movable type]]></category>
		<category><![CDATA[website creation]]></category>

		<guid isPermaLink="false">http://www.johnsjottings.com/wp/?p=186</guid>
		<description><![CDATA[In yet another example of how to leverage the power of Movable Type, Matt Haughey of Metafilter fame has written Beyond the Blog, in which he describes some of the methods he uses to extend Movable Type. In particular he focuses on using MT templates to drive the static pages of a website such as [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p></p><p>In yet another example of how to leverage the power of Movable Type, Matt Haughey of Metafilter fame has written <a href="http://a.wholelottanothing.org/features.blah/entry/007162" rel="nofollow" >Beyond the Blog</a>, in which he describes some of the methods he uses to extend Movable Type.  In particular he focuses on using MT templates to drive the static pages of a website such as a resume page or an about page, and how to use MT as a simple sort of database application.</p>
<p>To seasoned developers this sort of stuff reeks of fluff &#8211; but it&#8217;s rare to find good designers who are also good coders and what a flexible templating system like MT can provide is to allow a designer to work independently, yet still provide terrifically powerful web sites.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.johnsjottings.com/archives/2003/07/15/the_power_of_movable_type.html/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MT Plugin Manager</title>
		<link>http://www.johnsjottings.com/archives/2003/07/05/mt_plugin_manager.html</link>
		<comments>http://www.johnsjottings.com/archives/2003/07/05/mt_plugin_manager.html#comments</comments>
		<pubDate>Sat, 05 Jul 2003 17:30:55 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Movable Type]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[movable type]]></category>
		<category><![CDATA[plugin manager]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://www.johnsjottings.com/wp/?p=176</guid>
		<description><![CDATA[David Raynes has released a public beta of the Movable Type Plugin Manager. They may have fixed this bug already but in case not, in order to get it working you need to change &#8220;param&#8221; to &#8220;params&#8221; on line 197 of manager.pm. For some reason it did not manage to detect any of my installed [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p></p><p>David Raynes has released a <a href="http://www.rayners.org/archives/000258.php" rel="nofollow" >public beta</a> of the Movable Type Plugin Manager.  They may have fixed this bug already but in case not, in order to get it working you need to change &#8220;param&#8221; to &#8220;params&#8221; on line 197 of manager.pm.</p>
<p>For some reason it did not manage to detect any of my installed plugins but I have been able to add them manually.  I also appear to be having a problem installing any plugin that uses .zip instead of .tar &#8211; could be a problem with my version of Archive::Zip, I&#8217;ll have to look more closely when I have time later.</p>
<p>Anyway, good idea with active development &#8211; I expect this to develop nicely.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.johnsjottings.com/archives/2003/07/05/mt_plugin_manager.html/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Using Unique Category Templates in Movable Type</title>
		<link>http://www.johnsjottings.com/archives/2003/03/01/using_unique_category_templates_in_movable_type.html</link>
		<comments>http://www.johnsjottings.com/archives/2003/03/01/using_unique_category_templates_in_movable_type.html#comments</comments>
		<pubDate>Sat, 01 Mar 2003 11:43:10 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Movable Type]]></category>
		<category><![CDATA[archive]]></category>
		<category><![CDATA[category]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[movable type]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.johnsjottings.com/wp/?p=85</guid>
		<description><![CDATA[If you click on the Book Reviews category archive link in the links section of my main page you will notice that the page layout looks different than any of the other category archives. In my site redesign I wanted to move the book images off of the main page and the category archive seemed [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p></p><p>If you click on the <a href="http://www.johnsjottings.com/archives/categories/book_reviews/index.html">Book Reviews</a> category archive link in the links section of my main page you will notice that the page layout looks different than any of the other category archives.  In my site redesign I wanted to move the book images off of the main page and the category archive seemed a logical place.</p>
<p>However, I could not find a way using Out Of The Box Movable Type to resolve this issue.  But by leveraging the <a href="http://mt-plugins.org/archives/entry/compare.php" rel="nofollow" >Compare</a> plugin and MT Template Modules I was able to accomplish this.</p>
<p>I put the code I wanted for the sidebar in a template module called &#8220;booksbar&#8221; and then included the following code in my category archive template:</p>
<blockquote><p><code>&lt;MTIfEqual a="[MTArchiveCategory]" b="Book Reviews"&gt;<br />
&lt;$MTInclude module="Booksbar"$&gt;<br />
&lt;/MTIfEqual&gt;</code></p></blockquote>
<p>This was my first exposure to using MT Template Modules and I&#8217;m finding other areas to use them in as well &#8211; a very useful feature.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.johnsjottings.com/archives/2003/03/01/using_unique_category_templates_in_movable_type.html/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tonight&#8217;s Changes</title>
		<link>http://www.johnsjottings.com/archives/2003/01/24/tonights_changes.html</link>
		<comments>http://www.johnsjottings.com/archives/2003/01/24/tonights_changes.html#comments</comments>
		<pubDate>Sat, 25 Jan 2003 04:46:29 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Internal]]></category>
		<category><![CDATA[Movable Type]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[movable type]]></category>
		<category><![CDATA[redesign]]></category>
		<category><![CDATA[website changes]]></category>
		<category><![CDATA[wordpress template]]></category>

		<guid isPermaLink="false">http://www.johnsjottings.com/wp/?p=56</guid>
		<description><![CDATA[Made the following changes (improvements?) to the web log tonight: Added daily archives Now if you click on a day on the calendar rather than being brought to the first entry of the day you will be brought to a page which includes all entries for that day. The interesting thing here was that since [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p></p><p>Made the following changes (improvements?) to the web log tonight:</p>
<p><strong>Added daily archives</strong><br />
Now if you click on a day on the calendar rather than being brought to the first entry of the day you will be brought to a page which includes all entries for that day.  The interesting thing here was that since I was already using the date-based archive template for my monthly archive (if you click on the monthly archive you will see the calendar view for the whole month, <a href="http://diveintomark.org/archives/2002/08/06/fullscreen_calendars_in_movable_type.html" rel="nofollow" >courtesy of Mark Pilgrim</a>) when I initially enabled this clicking on the day brought up the calendar for the month.  After thinking about that for awhile and <a href="http://www.movabletype.org/docs/mtmanual_templates.html#archive%20templates" rel="nofollow" >perusing</a> the Movable Type doc I learned you can setup multiple archive templates:</p>
<blockquote><p>Archive templates define the look and feel or your blog archives. For each archive type that you choose (see ARCHIVING), you can associate multiple archive templates with that archive type; this allows for different &#8220;views&#8221; of the same set of archived entries. For example, you might wish to create two different views of your monthly archives: a page containing each of the entries for a particular month, and a calendar view of that month. Or, you could use different templates to create hi-fi and lo-fi versions of your archives.</p></blockquote>
<p>Too cool.</p>
<p><span id="more-56"></span><br />
<strong>Added category archives</strong><br />
I had already turned on category archives I just had not exposed them via the links, which I have now done.  I also changed the path for the category archives so each category has its own directory.  I still need to clean up my categories a bit too.</p>
<p><strong>Auto ping for book reviews</strong><br />
Not a change you&#8217;ll notice, but I added a ping to <a href="http://www.jacobsen.no/books/" rel="nofollow" >Book Review Repository</a> for my Book Review category.  I had not realized Anders had an unsorted category to choose from, which certainly makes my job easier as I really wanted to keep just a single category for reviews and I know I would forget to ping his site if it wasn&#8217;t automatic.  Maybe if I ask nicely he&#8217;ll move them to the right category when he rebuilds. <img src='http://www.johnsjottings.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>Added Google related articles</strong><br />
See the <a href="http://www.johnsjottings.com/archives/2003/01/24/mtgooglesearch_with_perl_58.html">previous article</a> for the full scoop; this took a bit longer than planned.  Only other thing to note is that I have chosen to use <a href="http://www.secondaryincomeblog.com/keywords/how-to-optimize-landing-page-keywords/" rel="nofollow" >keywords</a> instead of title for the search, which means I need to remember to enter keywords for all of my articles.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.johnsjottings.com/archives/2003/01/24/tonights_changes.html/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
