<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
  <title>MT Hacks</title>
  <link rel="alternate" type="text/html" href="http://mt-hacks.com/" />
  <modified>2010-08-27T17:58:56Z</modified>
  <tagline>Movable Type Hacks, Plugins, and Tips</tagline>
  <id>tag:mt-hacks.com,2012://22</id>
  <generator url="http://www.movabletype.org/" version="4.34-en">Movable Type</generator>
  <copyright>Copyright (c) 2010, Mark</copyright>

  <entry>
    <title>Auto-Tweet New Entries to Twitter</title>
    <link rel="alternate" type="text/html" href="http://mt-hacks.com/20100826-autotweet-new-entries-to-twitter.html" />
    <modified>2010-08-27T17:58:56Z</modified>
    <issued>2010-08-26T14:56:32-05:00</issued>
    <id>tag:mt-hacks.com,2010://22.169275</id>
    <created>2010-08-26T18:56:32Z</created>
    <summary type="text/plain">The Twitter Tools plugin for Movable Type enables you to easily and automatically share your MT entries on Twitter. The plugin pushes tweets directly to Twitter immediately when entries are published, avoiding the delays of other services. Future versions of...</summary>
    <author>
      <name>Mark</name>
      <url>http://www.markcarey.com/</url>
      <email>mark@markcarey.com</email>
    </author>
    <dc:subject>Home</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mt-hacks.com/">
      <![CDATA[<p>The Twitter Tools plugin for Movable Type enables you to easily and automatically share your MT entries on Twitter. The plugin <em>pushes</em> tweets directly to Twitter immediately when entries are published, avoiding the delays of other services. Future versions of the plugin will add additional Twitter integration features.</p>

<p><img src="http://mt-hacks.com/images/twitter-tools-settings.png" width="595" height="346" /></p>

<p><strong>Post New Entries to Twitter Within Seconds of Publishing</strong></p>

<p>There are a number of free services out there that will automatically share your entries to your Twitter stream. In most cases, these services work by periodically checking your blog's RSS feed for new entries to post. While this works, it means a time lag or delay before new items get posted to Twitter. The delays get worse and more frequent when these services become popular. TwitterFeed has over 1,000,000 users -- because they have so many RSS feeds to check, it can often be a long time before they get around to yours.  <em>The Twitter Tools plugin solves this delay problem by pushing the tweets directly from MT, immediately, when the entry is published</em>.</p>

<p><strong>How it Works</strong></p>

<p>The plugin is pretty simple.  After installing the plugin, you authorize MT to auto-tweet when new entries are published. After that, every new entry gets tweeted quickly and directly and automatically.</p>

<p>Other optional features include:</p>

<ul>
	<li>Add a prefix to tweet (such as "New Post:")</li>
	<li>Automatically add hashtags to a tweets for a blog</li>
	<li>Automatically use Entry tags as hashtags</li>
	<li>URL Shortening using the URL shortener of your choice (including Bit.ly, Awe.sm, Supr, YOURLS, TinyURL, and more).  (<em>yes, you can enter your own shortener API key and yes, Bit.ly Pro domains 'just work'</em>)</li>
</ul>

<p><strong>Twitter Tools Pro</strong></p>

<p>With Twitter Tools Pro, you get the following extra features:</p>

<ul><li>Post to both blog and author Twitter feeds at the same time. This is great for multi-author blogs, or if you want to post to both your person Twitter account and to your blog's Twitter account.</li>
	<li>Optional Filters can be used to only tweet entries with specific Categories or Tags</li>
	<li>Optional customized Tweet text for each entry (the default is the Entry title).</li>
<li>Option to use your own Twitter App, enabling you to customize the "via" text and link shown in Tweet metadata</li>
<li>More features are work-in-progress, including importing tweets and more.</li></ul>

<p><strong>Template Tags</strong></p>

<p>Twitter Tools includes one new template tag:</p>

<ul>
	<li><strong>&lt;mt:EntryTwitterShortURL></strong> - Outputs the short URL created when the entry was tweeted (using the URL shortener of your choice).  You can use this template tag to display the short URL to your readers and/or integrate it into Twitter share links or Tweet Buttons -- great for analytics, as your readers use the the same short URL as you do.  Note: if the entry was not tweeted by Twitter Tools, this tag will output an empty string. This tag also works on PHP-dynamic templates.</li>
</ul>

<p><strong>Requirements</strong></p>

<p>All required modules are included in the download file for Twitter Tools.  See installation steps below.</p>

<p><strong>Installation</strong></p>

<ol>
	<li>Download and extract the zip file, then upload the contents of the 'plugins' directory into the 'plugins' directory of your Movable Type installation (often /cgi-bin/mt/plugins/).</li>
	<li>Upload the contents of the 'extlib' directory into the 'extlib' directory of your Movable Type installation (often /cgi-bin/mt/extlib/).</li>
	<li>Upload the contents of the 'mt-static' directory into the 'mt-static' directory used by your Movable Type installation.</li>
	<li>Go to the blog-level plugin settings for Twitter Tools and click the Signin with Twitter button to authorize your blog to post to Twitter.</li>
	<li>Return to the settings once again and click the "Auto-tweet" setting to enable auto-posting to Twitter, and adjust other settings as desired.</li>
	<li>(Optional for Pro) Authors can also connect their MT author profile with a Twitter account by choosing the "Twitter Account" item from the left menu of their user profile. Note that entries will be posted to Twitter only if "auto-tweet" is enabled in blog settings for the plugin.</li>
</ol>

<p><strong>Get Twitter Tools Pro</strong></p>

<div class="module"><em><strong>Commercial License for 1 to 10 blogs - $97</strong></em>

<p><a href="<$MTPaymentURL id="52"$>"><img src="https://www.paypal.com/en_US/i/btn/x-click-but23.gif" /></a></div></p>

<div class="module"><em><strong>Blog Network License for 10+ blogs - $249</strong></em>

<p><a href="<$MTPaymentURL id="53"$>"><img src="https://www.paypal.com/en_US/i/btn/x-click-but23.gif" /></a></div></p>

<p><strong>Get Twitter Tools</strong></p>

<p>Twitter Tools is free for non-commercial use:</p>

<p><strong>Download Now</strong></p>

<p><MTIfMemberLoggedIn><a href="/downloads/TwitterTools.zip" target="_blank" title="Download Now" onclick="pushRating('twittertoolsdownloads',1,1,22,<$MTAjaxRatingTotalScore type="twittertoolsdownloads" id="1"$>,<$MTAjaxRatingVoteCount type="twittertoolsdownloads" id="1"$>,0);"><img src="/images/download.gif" alt="Download Now"/></a> <br />
<span class="downloads">Downloads: <$MTAjaxRatingVoteCount id="1" type="twittertoolsdownloads"$></span></MTIfMemberLoggedIn></p>

<p>As always, comments, questions, and suggestions are welcome.</p>

<p>Future versions of Twitter Tools may include other integration features such as importing Tweets into a blog and more. Suggestions are welcome.</p>

<p><img src="http://mt-hacks.com/mtos-static/plugins/TwitterCommenters/images/twitter_logo.png" style="border: 0; padding: 0; margin: 0;" /> <strong>Follow <a href="http://twitter.com/mthacks">@mthacks</a> on Twitter for updates and other MT and Twitter hacks.</strong></p>]]>
      
    </content>
  </entry>

  <entry>
    <title>Automatically Post New Entries to Facebook</title>
    <link rel="alternate" type="text/html" href="http://mt-hacks.com/20100826-automatically-post-new-entries-to-facebook.html" />
    <modified>2010-08-26T20:38:43Z</modified>
    <issued>2010-08-26T12:14:35-05:00</issued>
    <id>tag:mt-hacks.com,2010://22.169270</id>
    <created>2010-08-26T16:14:35Z</created>
    <summary type="text/plain">The Facebook Tools plugin for Movable Type enables you to easily and automatically share your MT entries on Facebook. The plugin pushes updates directly to Facebook immediately when entries are published, avoiding the delays of other services. Future versions of...</summary>
    <author>
      <name>Mark</name>
      <url>http://www.markcarey.com/</url>
      <email>mark@markcarey.com</email>
    </author>
    <dc:subject>FacebookTools</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mt-hacks.com/">
      <![CDATA[<p>The Facebook Tools plugin for Movable Type enables you to easily and automatically share your MT entries on Facebook. The plugin <em>pushes</em> updates directly to Facebook immediately when entries are published, avoiding the delays of other services. Future versions of the plugin will add additional Facebook integration features.</p>

<p><img src="http://mt-hacks.com/images/facebook-tools-settings.png" width="595" height="249" /></p>

<p><strong>Post New Entries to Facebook Within Seconds of Publishing</strong></p>

<p>There are a number of free services out there that will automatically share your entries to Facebook. In most cases, these services work by periodically checking your blog's RSS feed for new entries to post. While this works, it means a time lag or delay before new items get posted to Facebook. The delays get worse and more frequent when these services become popular. TwitterFeed has over 1,000,000 users and NetworkedBlogs has over 300,000 -- because they have so many RSS feeds to check, it can often be a long time before they get around to yours.  <em>The Facebook Tools plugin solves this delay problem by pushing the Facebook updates directly from MT, immediately, when the entry is published</em>.</p>

<p><strong>How it Works</strong></p>

<p>The plugin is pretty simple.  First you register your Facebook Application (easy to do, takes less than a minute) and then authorize MT to post updates when new entries are published. After that, every new entry gets pushed to Facebook quickly and directly and automatically.  The updates include an image from your entries (if present).</p>

<p><strong>Facebook Tools Pro</strong></p>

<p>With Facebook Tools Pro, you get the following extra features:</p>

<ul>	<li>Post updates to <strong>Facebook Pages</strong> instead of user profiles</li>
	<li>Post to both blog and author profiles at the same time. This is great for multi-author blogs, or if you want to post to both your person profile and to your blog's Facebook Page.</li>
	<li>Optional Filters can be used to only share entries with specific Categories or Tags</li>
	<li>Optional customized status message for each entry (the default is the Entry title).</li>
<li>Option to use a different Facebook App for each blog in your system.</li></ul>

<p><strong>Requirements</strong></p>

<p>Most required modules are included in the download file for Facebook Tools.  Because the Facebook API uses "Oauth 2.0", it must use SSL.  As such, one of following are required (plus any dependancies), but may already be installed by default on your server:</p>

<ul>	<li><a href="http://search.cpan.org/~dland/Crypt-SSLeay-0.57/SSLeay.pm">Crypt::SSLeay</a>, <strong>****OR***</strong></li>
	<li><a href="http://search.cpan.org/~sullr/IO-Socket-SSL-1.33/SSL.pm">IO::Socket::SSL</a></li></ul>

<p>If your system doesn't not already have one of these, note that the latter is known to be easier to install.</p>

<p><strong>Installation</strong></p>

<ol>
	<li>Download and extract the zip file, then upload the contents of the 'plugins' directory into the 'plugins' directory of your Movable Type installation (often /cgi-bin/mt/plugins/).</li>
	<li>Upload the contents of the 'mt-static' directory into the 'mt-static' directory used by your Movable Type installation.</li>
	<li><a href="http://www.facebook.com/developers/createapp.php" target="_blank">Create a Facebook Application</a>. This is easier than it sounds, and it only few settings are needed here.  Choose a name for your App, which can be the same name as your blog. The upload a Logo and an icon image -- of these the icon is more important.  (if you want you can use <a href="http://mt-hacks.com/images/mt-hacks-73x73.png">my Logo image</a> and <a href="http://mt-hacks.com/images/mthacks-icon-16x16.gif">my icon image</a>.) Then click on the "Website" tab on the left, and fill the "Site URL" field with the domain of your admin MT login eg. http://www.mydomain.com.  Then save the settings, you can leave the rest of the settings the way they are. </li>
	<li>Copy the "Application ID" and "Application Secret" in the settings for the plugin, then save the settings.</li>
	<li>Return to the blog-level plugin settings and click the Facebook Connect button to authorize your blog to post to Facebook.  The Facebook authorization dialog will ask for the necessary permissions, click "Allow".  After authorization, if using the Pro version of the plugin, you will be given an option to choose one of your administered Facebook Pages to post updates to.</li>
	<li>Return to the settings once again and click the "Auto-Share" setting to enable auto-posting to Facebook, and adjust other settings as desired.</li>
	<li>(Optional for Pro) Authors can also connect their MT author profile with a Facebook account by choosing the "Facebook Account" item from the left menu of their user profile. Note that entries will be posted to Facebook only if "auto-share" is enabled in blog settings for the plugin.</li>
</ol>

<p><strong>Get Facebook Tools Pro</strong></p>

<div class="module"><em><strong>Commercial License for 1 to 10 blogs - $97</strong></em>

<p><a href="<$MTPaymentURL id="50"$>"><img src="https://www.paypal.com/en_US/i/btn/x-click-but23.gif" /></a></div></p>

<div class="module"><em><strong>Blog Network License for 10+ blogs - $249</strong></em>

<p><a href="<$MTPaymentURL id="51"$>"><img src="https://www.paypal.com/en_US/i/btn/x-click-but23.gif" /></a></div></p>

<p><strong>Get Facebook Tools</strong></p>

<p>Facebook Tools is free for non-commercial use:</p>

<p><strong>Download Now</strong></p>

<p><MTIfMemberLoggedIn><a href="/downloads/FacebookTools.zip" target="_blank" title="Download Now" onclick="pushRating('facebookdownloads',1,1,22,<$MTAjaxRatingTotalScore type="facebookdownloads" id="1"$>,<$MTAjaxRatingVoteCount type="facebookdownloads" id="1"$>,0);"><img src="/images/download.gif" alt="Download Now"/></a> <br />
<span class="downloads">Downloads: <$MTAjaxRatingVoteCount id="1" type="facebookdownloads"$></span></MTIfMemberLoggedIn></p>

<p>As always, comments, questions, and suggestions are welcome.</p>

<p>Future versions of Facebook Tools may include other integration features such as integration with Facebook Likes, Comments, and more. Suggestions are welcome.</p>]]>
      
    </content>
  </entry>

  <entry>
    <title>Publish Scheduled Entries on Time</title>
    <link rel="alternate" type="text/html" href="http://mt-hacks.com/20100818-publish-scheduled-entries-on-time.html" />
    <modified>2010-08-18T19:31:24Z</modified>
    <issued>2010-08-18T15:30:00-05:00</issued>
    <id>tag:mt-hacks.com,2010://22.169118</id>
    <created>2010-08-18T19:30:00Z</created>
    <summary type="text/plain">For legacy reasons, Movable Type and Melody publish future or &quot;scheduled posts&quot; by way of a periodic task. In short, these means that periodically MT will checked to see if there are any entries with a Scheduled status that have...</summary>
    <author>
      <name>Mark</name>
      <url>http://www.markcarey.com/</url>
      <email>mark@markcarey.com</email>
    </author>
    <dc:subject>Home</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mt-hacks.com/">
      <![CDATA[<p>For legacy reasons, Movable Type and Melody  publish future or "scheduled posts" by way of a periodic task. In short, these means that periodically MT will checked to see if there are any entries with a Scheduled status that have come due, and then publish them. A side-effect of this is that in most cases an entry scheduled for 10:30 won't actually publish until 10:46 or 11:15, or even later (depending on your MT configuration and other periodic tasks).</p>

<p>But what if the post is time-sensitive, and you really want that post to live at 10:30?</p>

<p>This plugin aims to address this by creating a "TheSchwartz" job to publish the post. When the entry is saved, a job gets created for the entry, configured to run at desired publishing date and time.  Combine this with running the run-periodic-tasks in daemon mode and scheduled posts should publish very close to the scheduled time.</p>

<p><a href="http://github.com/markcarey/mt-plugin-futurepost-job">FuturePost Job on GitHub</a></p>]]>
      
    </content>
  </entry>

  <entry>
    <title>Tweet Button Chrome Extension</title>
    <link rel="alternate" type="text/html" href="http://mt-hacks.com/20100813-tweet-button-chrome-extension.html" />
    <modified>2010-08-20T19:31:37Z</modified>
    <issued>2010-08-13T08:55:21-05:00</issued>
    <id>tag:mt-hacks.com,2010://22.169022</id>
    <created>2010-08-13T12:55:21Z</created>
    <summary type="text/plain">I have created a version of Twitter&apos;s new official Tweet Button that works as a Chrome Extension. With this extension you can view the Tweet Count and Share the page for all web pages, even pages that don&apos;t have embedded...</summary>
    <author>
      <name>Mark</name>
      <url>http://www.markcarey.com/</url>
      <email>mark@markcarey.com</email>
    </author>
    <dc:subject>Non-MT Hacks</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mt-hacks.com/">
      <![CDATA[<p>I have created a version of Twitter's <a href="http://blog.twitter.com/2010/08/pushing-our-tweet-button.html" target="_blank">new official Tweet Button</a> that works as a Chrome Extension.  With this extension you can view the Tweet Count and Share the page for all web pages, even pages that don't have embedded tweet buttons.</p>

<p><img src="/images/tweet-button-chrome-600.png" /></p>

<p>The Tweet Count shows in red over the T icon to the right of the address bar, so you immediately know how how many tweets the page has received.  If you want to Tweet it, just click on the icon and Twitter's official share box will appear, the same way it would if you had clicked a Tweet Button embedded on the page itself.</p>

<p>Simple as that.</p>

<p><a href="https://chrome.google.com/extensions/detail/npbfbfhimhhpobfdpedbeellkojncajk">Click here to get the Tweet Button Chrome Extension</a>.</p>

<p><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://mt-hacks.com/20100813-tweet-button-chrome-extension.html" data-text="Tweet Button Chrome Extension" data-count="vertical" data-via="mthacks">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></p>]]>
      
    </content>
  </entry>

  <entry>
    <title>Google Buzz Results on Google Search</title>
    <link rel="alternate" type="text/html" href="http://mt-hacks.com/20100304-google-buzz-results-on-google-search.html" />
    <modified>2010-03-04T19:20:05Z</modified>
    <issued>2010-03-04T12:55:21-05:00</issued>
    <id>tag:mt-hacks.com,2010://22.166476</id>
    <created>2010-03-04T17:55:21Z</created>
    <summary type="text/plain">A year ago, I created a Greasemonkey user script that displays the most recent 5 tweets for the query that you are searching for at the top of Google search results. Today I have created one that does the same...</summary>
    <author>
      <name>Mark</name>
      <url>http://www.markcarey.com/</url>
      <email>mark@markcarey.com</email>
    </author>
    <dc:subject>Non-MT Hacks</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mt-hacks.com/">
      <![CDATA[<p>A year ago, I created a <a href="http://mt-hacks.com/20090302-realtime-twitter-search-results-on-google.html">Greasemonkey user script</a> that displays the most recent 5 tweets for the query that you are searching for at the top of Google search results.</p>

<p>Today I have created one that does the same thing for Google Buzz results:</p>

<p><img src="http://mt-hacks.com/images/google-buzz.png" width="599" height="380" /></p>

<p>This works in both FireFox and Chrome.</p>

<p>Currently, the Buzz results are restricted to actual Buzz updates -- it excludes updates that are imported from other services sich as Twitter, Google Reader, RSS feeds, etc.  This seemed to provide the best experience, but a future version may have options/settings for adjusting this.  Buzz results are presented in plain text, limited to the first 140 characters, so they don't take up too much screen space on the Google results page.  A "more &raquo;" link appears when the Buzz has additional text or media (links, images, etc.).</p>

<p>The Buzz results are powered by the <a href="http://buzzzy.com/">Buzzzy</a> API.  A big thanks to the creators of Buzzzy for there work in creating a search engine and API for Buzz updates!</p>

<p>Get Buzz results on your Google searches:</p>

<p><strong>FireFox</strong></p>

<ol>
	<li>If you don't already have it, install the <a href="https://addons.mozilla.org/en-US/firefox/addon/748">Greasemonkey add-on for Firefox</a>.</li>

<p>	<li>Click the "Install" button on the <a href="http://userscripts.org/scripts/show/70491">"Buzz Search Results on Google" page on userscripts.org</a>.</li><br />
</ol></p>

<p><strong>Chrome</strong></p>

<ol>
	<li>Install the Google Chrome Extension from the Extensions Gallery: <a href="https://chrome.google.com/extensions/detail/lkpbiibfcehgbcfpinnimfocnfjhdpic">Buzz Results on Google Chrome Extension</a>.</li>

<p>	<li>Click the "Install" button on the above page.</li><br />
</ol></p>

<p><img src="http://mt-hacks.com/mtos-static/plugins/TwitterCommenters/images/twitter_logo.png" style="border: 0; padding: 0; margin: 0;" /> <a href="http://twitter.com/home?status=Google%20Buzz%20Results%20on%20Google%20http%3A%2F%2Fmt-hacks.com%2F72Uw">If you like this, please tweet it by clicking here!</a> (short url for this page is <a href="http://mt-hacks.com/72Uw">http://mt-hacks.com/72Uw</a>)</p>

<p>Feedback and suggestions are welcome, via comments on this entry, or <a href="http://twitter.com/mthacks/status/9986418234">via Twitter reply</a>, <a href="http://www.google.com/buzz/mcarey/7JX4QQeopwQ/Get-Buzz-Search-Results-on-Google-Search-Pages-A">Google Buzz</a>, etc. </p>

<p><script type="text/javascript">digg_url = 'http://mt-hacks.com/20100304-google-buzz-results-on-google-search.html';digg_bgcolor = '#ffffff';digg_skin = 'compact';</script><script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></p>]]>
      
    </content>
  </entry>

  <entry>
    <title>Twitter Search Results on Google Chrome Extension</title>
    <link rel="alternate" type="text/html" href="http://mt-hacks.com/20100304-twitter-search-results-on-google-chrome-extension.html" />
    <modified>2010-03-04T18:13:04Z</modified>
    <issued>2010-03-04T12:50:27-05:00</issued>
    <id>tag:mt-hacks.com,2010://22.166477</id>
    <created>2010-03-04T17:50:27Z</created>
    <summary type="text/plain">A year ago, I created a Greasemonkey user script that displays the most recent 5 tweets for the query that you are searching for at the top of Google search results. Today I have created an Extension for Google Chrome...</summary>
    <author>
      <name>Mark</name>
      <url>http://www.markcarey.com/</url>
      <email>mark@markcarey.com</email>
    </author>
    <dc:subject>Non-MT Hacks</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mt-hacks.com/">
      <![CDATA[<p>A year ago, I created a <a href="http://mt-hacks.com/20090302-realtime-twitter-search-results-on-google.html">Greasemonkey user script</a> that displays the most recent 5 tweets for the query that you are searching for at the top of Google search results.</p>

<p>Today I have created an Extension for Google Chrome that does the same:</p>

<p><img src="http://mt-hacks.com/images/twitter-google-apple-event.png" width="595" height="400" /></p>

<p>Get realtime Twitter results on your Google searches using Google Chrome:</p>

<ol>
	<li>Install the Google Chrome Extension from the Extensions Gallery: <a href="https://chrome.google.com/extensions/detail/fjmfdejainbihhlfocmlenjdbpnjkmkc/">Twitter Search Results on Google Chrome Extension</a>.</li>

<p>	<li>Click the "Install" button on the above page.</li><br />
</ol></p>

<p><img src="http://mt-hacks.com/mtos-static/plugins/TwitterCommenters/images/twitter_logo.png" style="border: 0; padding: 0; margin: 0;" /> <a href="http://twitter.com/home?status=Twitter%20Search%20on%20Google%20Chrome%20Extension%20http%3A%2F%2Fmt-hacks.com%2FbkAB">If you like this, please tweet it by clicking here!</a> (short url for this page is <a href="http://mt-hacks.com/bkAB">http://mt-hacks.com/bkAB</a>)</p>

<p>Feedback and suggestions are welcome, via comments on this entry, or <a href="http://twitter.com/mthacks/status/9983888750">via Twitter reply</a>, <a href="http://www.google.com/buzz/mcarey/FaPvv256k7W/A-year-ago-I-created-a-GreaseMonkey-user-script">Google Buzz</a>, etc. </p>

<p><script type="text/javascript">digg_url = 'http://mt-hacks.com/20100304-twitter-search-results-on-google-chrome-extension.html';digg_bgcolor = '#ffffff';digg_skin = 'compact';</script><script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></p>]]>
      
    </content>
  </entry>

  <entry>
    <title>Google Wave Plugin for Movable Type?</title>
    <link rel="alternate" type="text/html" href="http://mt-hacks.com/20091016-google-wave-plugin-for-movable-type.html" />
    <modified>2009-10-16T17:39:49Z</modified>
    <issued>2009-10-16T08:26:55-05:00</issued>
    <id>tag:mt-hacks.com,2009://22.133095</id>
    <created>2009-10-16T12:26:55Z</created>
    <summary type="text/plain">What about a Google Wave plugin for Movable Type, as a way to engage in real-time conversations about blog entries. What do think? Below is just a test, you should see an embedded Wave. If you have a Google Wave...</summary>
    <author>
      <name>Mark</name>
      <url>http://www.markcarey.com/</url>
      <email>mark@markcarey.com</email>
    </author>
    <dc:subject>Home</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mt-hacks.com/">
      <![CDATA[<p>What about a Google Wave plugin for Movable Type, as a way to engage in real-time conversations about blog entries.  What do think?  Below is just a test, you should see an embedded Wave.  If you have a Google Wave account, please join the wave and share your thoughts. (I don't have any Google Wave invites, sorry).

One of the interesting things about using a Wave for blog comments is that after you join a wave on a blog site, that Wave will show up in your Google Wave inbox going forward.  This enables you rejoin the conversation later directly from within Wave.  Some bloggers may worry that this may mean less return traffic to their sites, which could be true, but it certainly could boost the amount of discussion around blog entries.

<div id="wave" style="width: 600px; height: 800px; overflow:auto;"></div>

<script  type="text/javascript" src="http://wave-api.appspot.com/public/embed.js">
</script>
<script type="text/javascript">
  var wave =  new WavePanel('https://wave.google.com/wave/');
  wave.setUIConfig('white', 'black', 'Arial', '13px');
  wave.loadWave('googlewave.com!w+D1dg_sqwB');
  wave.init(document.getElementById('wave'));
</script>


]]>
      
    </content>
  </entry>

  <entry>
    <title>Twitter Commenters v2.1 - OAuth Bug Fixed</title>
    <link rel="alternate" type="text/html" href="http://mt-hacks.com/20090713-twitter-commenters-v21-oauth-bug-fixed.html" />
    <modified>2009-07-14T14:31:43Z</modified>
    <issued>2009-07-13T20:31:16-05:00</issued>
    <id>tag:mt-hacks.com,2009://22.131391</id>
    <created>2009-07-14T00:31:16Z</created>
    <summary type="text/plain">Twitter Commenters is a plugin for Movable Type that enables commenters to sign-in and comment on your blog using their Twitter account. Versions 2+ includes support for Twitter&apos;s OAuth authorization system and enables commenters to automatically share their comments to...</summary>
    <author>
      <name>Mark</name>
      <url>http://www.markcarey.com/</url>
      <email>mark@markcarey.com</email>
    </author>
    <dc:subject>Home</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mt-hacks.com/">
      <![CDATA[<p>Twitter Commenters is a plugin for Movable Type that enables commenters to sign-in and comment on your blog using their Twitter account.  <strong>Versions 2+</strong> includes support for Twitter's OAuth authorization system and enables commenters to automatically share their comments to their Twitter stream.</p>

<p><strong>Note: Version 2.1 fixes a serious bug when using OAuth, users would get a Comment Submission Error, saying that Name and Email are required.  All sites running v2.0 should upgrade to v2.1 using the download link below.  Simply upload the new files, no need to adjust settings or templates</strong></p>

<p><em>Basic Auth (default):</em><br />
<img src="http://mt-hacks.com/images/twitter-commenters.png" width="311" height="351" /></p>

<p><em>OAuth:</em><br />
<img src="http://mt-hacks.com/images/twitter-commenters-oauth.png" width="235" height="85" /><br />
<img src="http://mt-hacks.com/images/twitter-commenters-oauth-allow.png" width="535" height="365" /></p>

<p>Twitter comment authentication works like other auth methods in MT -- once you have installed the plugin you can enable Twitter as one of the auth options, as shown in the image above.</p>

<p><strong>How It Works - Basic Auth</strong></p>

<p>When the user enters their Twitter username and password in the form (shown above), the plugin submits those to the Twitter API to verfiy the credentials.  If verified, the user can then post comments using their Twitter account.  Their Twitter 'display name' will be shown beside their comments, and their Twitter avatar (profile photo) will be imported and shown beside their comments (if userpics are enabled in your templates).</p>

<p>Note that users' Twitter passwords are <em>not</em> stored in the MT database.  An upcoming version of this plugin will enable Twitter's new <strong>OAuth</strong> support, in which case passwords would never be sent to MT at all.  That version will like have an option for commenters to cc. their comments to their Twitter account.  <a href="http://twitter.com/mthacks">Stay tuned</a>.</p>

<p><strong>How It Works - OAuth</strong></p>

<p>New in Version 2.0, you can optionally enable Twitter's new OAuth authorization system.  With OAuth, user never have to submit their password info to your server.  Instead, they click a "sign in with Twitter" button and they are taken to a page on Twitter.com asking them to authorize the application (see image above).  One they click "Allow" they are returned to your site and they then post comments using their Twitter account.  As with basic auth, their Twitter 'display name ' will be used as well as their Twitter avatar (profile photo).</p>

<p><strong>Share Comments on Twitter</strong></p>

<p>A new feature in version 2.0, <em>only supported via OAuth</em>, enables commenters to optionally share their comment to their Twitter stream.  All they have to do is click a checkbox, no need to re-authorize or enter Twitter account info.</p>

<p><strong>Try it Now</strong></p>

<p>MT Hacks has the new OAuth method enabled. Try it now:</p>

<p><strong><a href="http://mt-hacks.com/cgi-bin/mt/reply.fcgi?__mode=login&blog_id=22&entry_id=131391">Click here to login with your Twitter account</a>.</strong>  After logging in, you will be returned to this entry, and you can leave a comment below.</p>

<p><strong>Requirements</strong></p>

<ul>	<li>Net::Twitter 2.07 perl module (included with plugin) (note: <strong>do not</strong> upgrade to version 2.9+ of this module)</li>
<li>Net::Twitter::OAuth perl module (included with plugin)</li>
<li>Net::OAuth perl module (included with plugin)</li>
<li>Net::OAuth::Simple perl module (included with plugin)</li>
<li>JSON::Any perl (included with plugin)</li></ul>

<p>Note:  Net::Twitter requires <em>newer</em> versions of the <a href="http://search.cpan.org/dist/libwww-perl/">libwww-perl</a> collection of Perl modules.  I am not sure what the minimum version required is, but on my server, I had to upgrade in order to get Net::Twitter to work.  So if you get strange errors, try installing the latest version in your 'extlib' directory of your MT.  Update:  A common error message is: "Can't locate object method "default_header" via package "LWP::UserAgent" -- if you see this error, this the problem.</p>

<p><strong>Download Twitter Commenters</strong></p>

<p><a href="/downloads/TwitterCommenters.zip" target="_blank" title="Download Now" onclick="pushRating('twittercommentersdownloads',1,1,22,<$MTAjaxRatingTotalScore type="twittercommentersdownloads" id="1"$>,<$MTAjaxRatingVoteCount type="twittercommentersdownloads" id="1"$>,0);"><img src="/images/download.gif" alt="Download Now"/></a> <br />
<span class="downloads">Downloads: <$MTAjaxRatingVoteCount id="1" type="twittercommentersdownloads"$></span></p>

<p><strong>Installation</strong></p>

<ol>	<li>Upload the contents of the 'plugins' folder to the 'plugins' directory for your MT install.</li>
	<li>Upload the contents of the 'mt-static' folder to your 'mt-static' directory.</li>
	<li>For each blog you want to enable, go to Preferences > Registration and check the box for 'Twitter'.</li></ol>

<p><strong>Enabling Twitter OAuth</strong></p>

<p>Unfortunately, this is not as easy as it could be, maybe Twitter will make it easier in future.  To set this up you need to create an Application on Twitter:</p>

<ol>
	<li>While logged in to your Twitter account, go to <a href="http://twitter.com/oauth_clients/new">http://twitter.com/oauth_clients/new</a>.</li>
	<li>Fill out the form on that page:
<ul>
	<li>Give it a unique name and description.  </li>
	<li>For 'Application Website', enter http://mt-hacks.com/twittercommenters.html.  For 'Organization', enter MT Hacks. </li>
	<li>For 'Website' enter http://mt-hacks.com.</li>
	<li>For 'Application Type' choose 'Browser'.</li>
	<li>For 'Callback URL' enter the full URL to your comments script followed by '?__mode=login_external&key=Twitter'.  Example: <em>http://www.domain.com/cgi-bin/mt/mt-comments.cgi?__mode=login_external&key=Twitter</em></li>
	<li>For 'Default Access type' choose 'Read & Write'.</li>
	<li>Check the box for 'Yes, use Twitter for login'</li>
	<li>Hit the 'Save' button.</li>
</ul></li>
<li>After saving the application, you should now see a screen with a 'Consumer key' and 'Consumer secret'.  Copy those to the <em>system</em> plugin Settings (System Overview > Plugins > Twitter Commenters > Settings). and save the plugin settings.</li>
<li>To enable the share comment on Twitter option, add the &lt;mt:TwitterShareCommentOption> tag below the comment text part of your comment form.  This will display a checkbox option to people logged in via Twitter OAuth.</li>
<li>Rebuild your entry pages and test it out</li>
</ol>

<p>As always, feedback is appreciated.</p>

<p><img src="http://mt-hacks.com/mtos-static/plugins/TwitterCommenters/images/twitter_logo.png" style="border: 0; padding: 0; margin: 0;" /> <strong>Follow <a href="http://twitter.com/mthacks">@mthacks</a> on Twitter for updates and other MT and Twitter hacks.</strong><br />
</p>]]>
      
    </content>
  </entry>

  <entry>
    <title>Open Melody: Movable Type Forked</title>
    <link rel="alternate" type="text/html" href="http://mt-hacks.com/20090623-open-melody-movable-type-forked.html" />
    <modified>2009-06-23T16:43:53Z</modified>
    <issued>2009-06-23T08:42:38-05:00</issued>
    <id>tag:mt-hacks.com,2009://22.130979</id>
    <created>2009-06-23T12:42:38Z</created>
    <summary type="text/plain">A new Open Source project has been launched today called Open Melody, which is a fork of Movable Type Open Source. Open Melody has been created by the MT developer community in order to take the product to the next...</summary>
    <author>
      <name>Mark</name>
      <url>http://www.markcarey.com/</url>
      <email>mark@markcarey.com</email>
    </author>
    <dc:subject>Home</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mt-hacks.com/">
      <![CDATA[<p>A new Open Source project has been <a href="http://openmelody.org/blog/2009/06/introducing-melody">launched today</a> called <a href="http://openmelody.org">Open Melody</a>, which is a fork of <a href="http://movabletype.org">Movable Type Open Source</a>.  Open Melody has been created by the MT developer community in order to take the product to the next level.</p>

<p><em>Why fork Movable Type?</em>  The Open Melody FAQs explain, "The community created Melody out a shared passion for Movable Type and a shared desire to see it flourish as a platform. We felt that the best and quickest way to achieve that goal was to create a product in which the community was inherently entrusted with a greater degree of control over its direction, communication channels and roadmap, and rewarded with more transparency and a greater sense of belonging."</p>

<p>In the spirit of being driven by the community, the current state of Open Melody is very similar to the latest version of MT.  Going forward, features will be added and changes will be made in accordance with the community collaboration.  So its too early to say what Melody will look like, and how it will be different from MT.  Time will tell.</p>

<p><strong>Why This is a Good Thing</strong></p>

<p>Over two years ago, Six Apart, the creator of Movable Type open sourced the code for the core Movable Type application.  While its was an exciting and bold move, the announcement and product naming choices were confusing to many -- the differences between Movable Type Open Source and the Movable Type Commercial product and closed source add-ons sold by Six Apart weren't easy to grasp, and some even disputed the newly open source nature of core application.  </p>

<p>Bottom line is that the core of MT has been open source for 2 years, so what are the reasons and potential benefits of a separate branch of the application, why do we need Melody?  In my opinion, the key benefit is that Melody will be developed completely by the community, with no direct ties to a commercial for-profit enterprise.  While core MT has been open source licensed, the product planning process and much (but not all) of the discussion, prioritization, and release planning and scheduling were closed to those outside of Six Apart.  Six Apart also acted as a gatekeeper to code contributions, with final say over what made into the final product.  Both of these may be common for open source projects lead by commercial entities, and are fair enough -- Six Apart is a business and like any business they can and <em>should</em> make decisions based on the commercial interests of the company.  But for the community of developers, consultants, and users, this didn't feel very open, at least in my opinion.  The feature roadmap was being driven internally at Six Apart, not in a collaborative way with the community at large.  [This is not to say that Six Apart did not listen to feature suggestions of the community -- many of the features added to the product were in response to community requests]  The reality, I think, is that the internal business objectives that informed the development and product planning process are not fully aligned with the objectives of the broader community.  This is an unavoidable reality, there is no right or wrong here, only different contexts and thus different perspectives and goals.  For these reasons, I think many developers and end-users shied away from Movable Type -- despite the open source license, the product was controlled by a single for-profit company, and the ability of the external community to contribute and collaborate was limited.</p>

<p>Open Melody changes that dynamic.  The core code becomes freed from the business concerns and objectives, thus enabling it to evolve in a way that is fully aligned with objectives and desires of the community.  This means that roadmap planning, feature discussions, and development will all be completely open and collaborative.  I hope that this will help attract more developers to the project and lead to faster release cycles and richer features that users want to see.  With Open Melody, everyone wins: users, developers, community, the product, and even <a href="http://www.movabletype.org/2009/06/meet_melody.html">Movable Type and Six Apart</a>.  Its going to exciting to see how Melody evolves.</p>

<p><strong>Current User of Movable Type?</strong></p>

<p>If you are a current user of MT, you may be wondering what this means for you, should you switch when the time comes, or stay with MT?  Today, there is a single, easy answer: <em>wait and see</em>.  Melody is just getting started and it will probably be at least 6 months before a stable release is ready.  So sit back and wtach how it evolves -- or better yet, <a href="http://openmelody.org/join">contribute</a>!  Even if you are not a programmer, you can contribute by offering feature suggestions, etc.  Another important thing to keep in mind is that a goal of Melody is to maintain compatibility with MT, so you should be able to switch back and forth, and use the same plugins and themes with either.</p>

<p><strong>Melody and MT Hacks</strong></p>

<p>I believe in the goals behind Melody and I hope it will be successful.  I plan to contribute however I can, while at the same continuing to support the Movable Type platform. My goal is that plugins from MT Hacks will be supported on <em>both</em> platforms, which is aligned with Melody's objective of compatibility with MT. So if you use plugins by MT Hacks and you decide to move to Melody in future, you can continue to use the same plugins, and if you continue with MT, you can also keep using the same plugins.  Of course, like any core MT upgrade, sometimes plugin updates are required, but those should work on both platforms.</p>]]>
      
    </content>
  </entry>

  <entry>
    <title>Share Blog Comments on Twitter (plus OAuth Support)</title>
    <link rel="alternate" type="text/html" href="http://mt-hacks.com/20090531-share-blog-comments-on-twitter-plus-oauth-support.html" />
    <modified>2009-07-07T12:12:54Z</modified>
    <issued>2009-05-31T21:28:25-05:00</issued>
    <id>tag:mt-hacks.com,2009://22.130427</id>
    <created>2009-06-01T01:28:25Z</created>
    <summary type="text/plain">Twitter Commenters is a plugin for Movable Type that enables commenters to sign-in and comment on your blog using their Twitter account. Versions 2 includes support for Twitter&apos;s OAuth authorization system and enables commenters to automatically share their comments to...</summary>
    <author>
      <name>Mark</name>
      <url>http://www.markcarey.com/</url>
      <email>mark@markcarey.com</email>
    </author>
    <dc:subject>TwitterCommenters</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mt-hacks.com/">
      <![CDATA[<p>Twitter Commenters is a plugin for Movable Type that enables commenters to sign-in and comment on your blog using their Twitter account.  <strong>Versions 2</strong> includes support for Twitter's OAuth authorization system and enables commenters to automatically share their comments to their Twitter stream.</p>

<p><em>Basic Auth (default):</em><br />
<img src="http://mt-hacks.com/images/twitter-commenters.png" width="311" height="351" /></p>

<p><em>OAuth:</em><br />
<img src="http://mt-hacks.com/images/twitter-commenters-oauth.png" width="235" height="85" /><br />
<img src="http://mt-hacks.com/images/twitter-commenters-oauth-allow.png" width="535" height="365" /></p>

<p>Twitter comment authentication works like other auth methods in MT -- once you have installed the plugin you can enable Twitter as one of the auth options, as shown in the image above.</p>

<p><strong>How It Works - Basic Auth</strong></p>

<p>When the user enters their Twitter username and password in the form (shown above), the plugin submits those to the Twitter API to verfiy the credentials.  If verified, the user can then post comments using their Twitter account.  Their Twitter 'display name' will be shown beside their comments, and their Twitter avatar (profile photo) will be imported and shown beside their comments (if userpics are enabled in your templates).</p>

<p>Note that users' Twitter passwords are <em>not</em> stored in the MT database.  An upcoming version of this plugin will enable Twitter's new <strong>OAuth</strong> support, in which case passwords would never be sent to MT at all.  That version will like have an option for commenters to cc. their comments to their Twitter account.  <a href="http://twitter.com/mthacks">Stay tuned</a>.</p>

<p><strong>How It Works - OAuth</strong></p>

<p>New in Version 2.0, you can optionally enable Twitter's new OAuth authorization system.  With OAuth, user never have to submit their password info to your server.  Instead, they click a "sign in with Twitter" button and they are taken to a page on Twitter.com asking them to authorize the application (see image above).  One they click "Allow" they are returned to your site and they then post comments using their Twitter account.  As with basic auth, their Twitter 'display name ' will be used as well as their Twitter avatar (profile photo).</p>

<p><strong>Share Comments on Twitter</strong></p>

<p>A new feature in version 2.0, <em>only supported via OAuth</em>, enables commenters to optionally share their comment to their Twitter stream.  All they have to do is click a checkbox, no need to re-authorize or enter Twitter account info.</p>

<p><strong>Try it Now</strong></p>

<p>MT Hacks has the new OAuth method enabled. Try it now:</p>

<p><strong><a href="http://mt-hacks.com/cgi-bin/mt/reply.fcgi?__mode=login&blog_id=22&entry_id=130427">Click here to login with your Twitter account</a>.</strong>  After logging in, you will be returned to this entry, and you can leave a comment below.</p>

<p><strong>Requirements</strong></p>

<ul>	<li>Net::Twitter 2.07 perl module (included with plugin) (note: <strong>do not</strong> upgrade to version 2.9+ of this module)</li>
<li>Net::Twitter::OAuth perl module (included with plugin)</li>
<li>Net::OAuth perl module (included with plugin)</li>
<li>Net::OAuth::Simple perl module (included with plugin)</li>
<li>JSON::Any perl (included with plugin)</li></ul>

<p>Note:  Net::Twitter requires <em>newer</em> versions of the <a href="http://search.cpan.org/dist/libwww-perl/">libwww-perl</a> collection of Perl modules.  I am not sure what the minimum version required is, but on my server, I had to upgrade in order to get Net::Twitter to work.  So if you get strange errors, try installing the latest version in your 'extlib' directory of your MT.  Update:  A common error message is: "Can't locate object method "default_header" via package "LWP::UserAgent" -- if you see this error, this the problem.</p>

<p><strong>Download Twitter Commenters</strong></p>

<p><a href="/downloads/TwitterCommenters.zip" target="_blank" title="Download Now" onclick="pushRating('twittercommentersdownloads',1,1,22,<$MTAjaxRatingTotalScore type="twittercommentersdownloads" id="1"$>,<$MTAjaxRatingVoteCount type="twittercommentersdownloads" id="1"$>,0);"><img src="/images/download.gif" alt="Download Now"/></a> <br />
<span class="downloads">Downloads: <$MTAjaxRatingVoteCount id="1" type="twittercommentersdownloads"$></span></p>

<p><strong>Installation</strong></p>

<ol>	<li>Upload the contents of the 'plugins' folder to the 'plugins' directory for your MT install.</li>
	<li>Upload the contents of the 'mt-static' folder to your 'mt-static' directory.</li>
	<li>For each blog you want to enable, go to Preferences > Registration and check the box for 'Twitter'.</li></ol>

<p><strong>Enabling Twitter OAuth</strong></p>

<p>Unfortunately, this is not as easy as it could be, maybe Twitter will make it easier in future.  To set this up you need to create an Application on Twitter:</p>

<ol>
	<li>While logged in to your Twitter account, go to <a href="http://twitter.com/oauth_clients/new">http://twitter.com/oauth_clients/new</a>.</li>
	<li>Fill out the form on that page:
<ul>
	<li>Give it a unique name and description.  </li>
	<li>For 'Application Website', enter http://mt-hacks.com/twittercommenters.html.  For 'Organization', enter MT Hacks. </li>
	<li>For 'Website' enter http://mt-hacks.com.</li>
	<li>For 'Application Type' choose 'Browser'.</li>
	<li>For 'Callback URL' enter the full URL to your comments script followed by '?__mode=login_external&key=Twitter'.  Example: <em>http://www.domain.com/cgi-bin/mt/mt-comments.cgi?__mode=login_external&key=Twitter</em></li>
	<li>For 'Default Access type' choose 'Read & Write'.</li>
	<li>Check the box for 'Yes, use Twitter for login'</li>
	<li>Hit the 'Save' button.</li>
</ul></li>
<li>After saving the application, you should now see a screen with a 'Consumer key' and 'Consumer secret'.  Copy those to the <em>system</em> plugin Settings (System Overview > Plugins > Twitter Commenters > Settings). and save the plugin settings.</li>
<li>To enable the share comment on Twitter option, add the &lt;mt:TwitterShareCommentOption> tag below the comment text part of your comment form.  This will display a checkbox option to people logged in via Twitter OAuth.</li>
<li>Rebuild your entry pages and test it out</li>
</ol>

<p>As always, feedback is appreciated.</p>

<p><img src="http://mt-hacks.com/mtos-static/plugins/TwitterCommenters/images/twitter_logo.png" style="border: 0; padding: 0; margin: 0;" /> <strong>Follow <a href="http://twitter.com/mthacks">@mthacks</a> on Twitter for updates and other MT and Twitter hacks.</strong><br />
</p>]]>
      
    </content>
  </entry>

  <entry>
    <title>Comment on Blogs with your Twitter Account</title>
    <link rel="alternate" type="text/html" href="http://mt-hacks.com/20090410-comment-on-blogs-with-your-twitter-account.html" />
    <modified>2009-04-28T13:17:08Z</modified>
    <issued>2009-04-10T17:02:24-05:00</issued>
    <id>tag:mt-hacks.com,2009://22.128144</id>
    <created>2009-04-10T21:02:24Z</created>
    <summary type="text/plain">Twitter Commenters is a plugin for Movable Type that enables commenters to sign-in and comment on your blog using their Twitter account. Twitter comment authentication works like other auth methods in MT -- once you have installed the plugin you...</summary>
    <author>
      <name>Mark</name>
      <url>http://www.markcarey.com/</url>
      <email>mark@markcarey.com</email>
    </author>
    <dc:subject>TwitterCommenters</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mt-hacks.com/">
      <![CDATA[<p>Twitter Commenters is a plugin for Movable Type that enables commenters to sign-in and comment on your blog using their Twitter account.</p>

<p><img src="http://mt-hacks.com/images/twitter-commenters.png" width="311" height="351" /></p>

<p>Twitter comment authentication works like other auth methods in MT -- once you have installed the plugin you can enable Twitter as one of the auth options, as shown in the image above.</p>

<p><strong>How It Works</strong></p>

<p>When the user enters their Twitter username and password in the form (shown above), the plugin submits those to the Twitter API to verfiy the credentials.  If verified, the user can then post comments using their Twitter account.  Their Twitter 'display name' will be shown beside their comments, and their Twitter avatar (profile photo) will be imported and shown beside their comments (if userpics are enabled in your templates).</p>

<p>Note that users' Twitter passwords are <em>not</em> stored in the MT database.  An upcoming version of this plugin will enable Twitter's new <strong>OAuth</strong> support, in which case passwords would never be sent to MT at all.  That version will like have an option for commenters to cc. their comments to their Twitter account.  <a href="http://twitter.com/mthacks">Stay tuned</a>.</p>

<p><strong>Try it Now</strong></p>

<p><strong><a href="http://mt-hacks.com/cgi-bin/mt/reply.fcgi?__mode=login&blog_id=22&entry_id=128144">Click here to login with your Twitter account</a>.</strong>  After logging in, you will be returned to this entry, and you can leave a comment below.</p>

<p><strong>Requirements</strong></p>

<ul>	<li>Net::Twitter perl module (included with plugin)</li>
	<li>JSON::Any perl (included with plugin)</li></ul>

<p>Note:  Net::Twitter requires <em>newer</em> versions of the <a href="http://search.cpan.org/dist/libwww-perl/">libwww-perl</a> collection of Perl modules.  I am not sure what the minimum version required is, but on my server, I had to upgrade in order to get Net::Twitter to work.  So if you get strange errors, try installing the latest version in your 'extlib' directory of your MT.</p>

<p><strong>Download Twitter Commenters</strong></p>

<p><a href="/downloads/TwitterCommenters.zip" target="_blank" title="Download Now" onclick="pushRating('twittercommentersdownloads',1,1,22,<$MTAjaxRatingTotalScore type="twittercommentersdownloads" id="1"$>,<$MTAjaxRatingVoteCount type="twittercommentersdownloads" id="1"$>,0);"><img src="/images/download.gif" alt="Download Now"/></a> <br />
<span class="downloads">Downloads: <$MTAjaxRatingVoteCount id="1" type="twittercommentersdownloads"$></span></p>

<p><strong>Installation</strong></p>

<ol>	<li>Upload the contents of the 'plugins' folder to the 'plugins' directory for your MT install.</li>
	<li>Upload the contents of the 'mt-static' folder to your 'mt-static' directory.</li>
	<li>For each blog you want to enable, go to Preferences > Registration and check the box for 'Twitter'.</li></ol>

<p>As always, feedback is appreciated.</p>

<p><img src="http://mt-hacks.com/mtos-static/plugins/TwitterCommenters/images/twitter_logo.png" style="border: 0; padding: 0; margin: 0;" /> <strong>Follow <a href="http://twitter.com/mthacks">@mthacks</a> on Twitter for updates and other MT and Twitter hacks.</strong><br />
</p>]]>
      
    </content>
  </entry>

  <entry>
    <title>New Twitter Bookmarklet</title>
    <link rel="alternate" type="text/html" href="http://mt-hacks.com/20090409-new-twitter-bookmarklet.html" />
    <modified>2009-04-09T20:20:28Z</modified>
    <issued>2009-04-09T16:11:42-05:00</issued>
    <id>tag:mt-hacks.com,2009://22.128074</id>
    <created>2009-04-09T20:11:42Z</created>
    <summary type="text/plain">Over at my Moopz site, I have just released a new Twitter Bookmarklet that make it easy to submit the link of the page you are reading. A pop up appears with a Twitter-like interface, enabling you to quickly tweet...</summary>
    <author>
      <name>Mark</name>
      <url>http://www.markcarey.com/</url>
      <email>mark@markcarey.com</email>
    </author>
    <dc:subject>Non-MT Hacks</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mt-hacks.com/">
      <![CDATA[<p>Over at my <a href="http://moopz.com">Moopz</a> site, I have just released a new Twitter Bookmarklet that make it easy to submit the link of the page you are reading. A pop up appears with a Twitter-like interface, enabling you to quickly tweet the page you are reading.  It is designed to be clean and easy to use, a few seconds and you are done.  The Twitter Bookmarklet looks like this:</p>

<p><img src="http://mt-hacks.com/images/2009-04-09_1150.png"></p>

<p><strong><a href="http://moopz.com/2009/04/twitter-bookmarklet-and-tweet-button.html">Click here to head over to Moopz to get the Bookmarklet or to try it now.</a></strong><br />
</p>]]>
      
    </content>
  </entry>

  <entry>
    <title>Realtime Twitter Search Results on Google</title>
    <link rel="alternate" type="text/html" href="http://mt-hacks.com/20090302-realtime-twitter-search-results-on-google.html" />
    <modified>2009-06-26T17:25:22Z</modified>
    <issued>2009-03-02T08:50:04-05:00</issued>
    <id>tag:mt-hacks.com,2009://22.126555</id>
    <created>2009-03-02T13:50:04Z</created>
    <summary type="text/plain">During the past few weeks, there has been a lot of discussion about whether Twitter&apos;s &quot;real time search&quot; could pose a threat to Google. While I am not sure if Twitter poses a threat to Google, I think it is...</summary>
    <author>
      <name>Mark</name>
      <url>http://www.markcarey.com/</url>
      <email>mark@markcarey.com</email>
    </author>
    <dc:subject>Non-MT Hacks</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mt-hacks.com/">
      <![CDATA[<p>During the past few weeks, there has <a href="http://gesterling.wordpress.com/2009/03/01/google-the-twitter-threat/">been</a> <a href="http://www.librarystuff.net/2009/02/25/how-twitter-could-be-a-threat-to-google/">a</a> <a href="http://battellemedia.com/archives/004832.php">lot</a> <a href="http://lewmoorman.com/googles-first-real-threat-twit">of</a> <a href="http://www.blogstorm.co.uk/if-google-did-twitter-search/1978/">discussion</a> <a href="http://www.businessinsider.com/2009/2/google-next-victim-of-creative-destruction-goog">about</a> whether Twitter's "real time search" could pose a threat to Google.</p>

<p>While I am not sure if Twitter poses a threat to Google, I think it is clear that real-time search is increasingly important.  And you can be sure that Google knows it.  Will Google try to acquire Twitter, or take some other approach? Time will tell, but rather that wait, I decided to get <strong>realtime twitter search results on Google</strong> <em>today</em>.  I created a Greasemonkey user script that does exactly this.  It displays the most recent 5 tweets for the query that you are search for, giving both real-time Twitter search results and Google results on the same page:</p>

<p><img src="http://mt-hacks.com/images/twitter-google-apple-event.png" width="595" height="400" /></p>

<p>I have been using it for a few days now and I think it really adds some freshness to Google search results pages.  Not only do you get the web pages that have been indexed by Google, but also relevant twitter conversations that are happening <em>right now</em>.  One day I think we may see Google release something like this, but until then there is the <strong>Twitter Search Results on Google</strong> Greasemonkey script.</p>

<p>Get realtime Twitter results on your Google searches:</p>

<ol>
	<li>If you don't already have it, install the <a href="https://addons.mozilla.org/en-US/firefox/addon/748">Greasemonkey add-on for Firefox</a>.</li>

<p>	<li>Click the "Install" button on the <a href="http://userscripts.org/scripts/show/43451">"Twitter Search Results on Google" page on userscripts.org</a>.</li><br />
</ol></p>

<p><img src="http://mt-hacks.com/mtos-static/plugins/TwitterCommenters/images/twitter_logo.png" style="border: 0; padding: 0; margin: 0;" /> <a href="http://twitter.com/home?status=Realtime%20Twitter%20Search%20on%20Google%20http%3A%2F%2Fmoopz.com%2F9ZDS">If you like this, please tweet it by clicking here!</a> (short url for this page is <a href="http://moopz.com/9ZDS">http://moopz.com/9ZDS</a>)</p>

<p><strong>Update:</strong> <a href="http://moopz.com/2009/04/twitter-bookmarklet-and-tweet-button.html">Also see my new Twitter Bookmarklet and Tweet This Page Link tool</a>.</p>

<p>Feedback and suggestions are welcome, via comments on this entry, or <a href="http://twitter.com/mthacks/status/1269805814">via Twitter reply</a>, <a href="http://friendfeed.com/e/7e1bf579-1e42-ad91-df2f-5ffc12d07822/Realtime-Twitter-Search-on-Google-http-moopz-com/">FriendFeed</a>, etc. </p>

<p><script type="text/javascript">digg_url = 'http://mt-hacks.com/20090302-realtime-twitter-search-results-on-google.html';digg_bgcolor = '#ffffff';digg_skin = 'compact';</script><script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></p>]]>
      
    </content>
  </entry>

  <entry>
    <title>Clone Blogs Without Entries and Comments</title>
    <link rel="alternate" type="text/html" href="http://mt-hacks.com/20081022-clone-blogs-without-entries-and-comments.html" />
    <modified>2009-02-14T19:05:51Z</modified>
    <issued>2008-10-22T13:58:35-05:00</issued>
    <id>tag:mt-hacks.com,2008://22.78657</id>
    <created>2008-10-22T17:58:35Z</created>
    <summary type="text/plain">Selective Cloner is plugin for Movable Type that enables administrators to clone (copy) existing blogs. Unlike the blog cloning tool that comes with MT, Selective Cloner only clones Blog Settings, Permissions, and Templates. This plugin enables you to quickly create...</summary>
    <author>
      <name>Mark</name>
      <url>http://www.markcarey.com/</url>
      <email>mark@markcarey.com</email>
    </author>
    <dc:subject>SelectiveCloner</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mt-hacks.com/">
      <![CDATA[<p>Selective Cloner is plugin for Movable Type that enables administrators to clone (copy) existing blogs.   Unlike the blog cloning tool that comes with MT, Selective Cloner <em>only clones Blog Settings, Permissions, and Templates</em>.  This plugin enables you to quickly create new blog with all of the same settings and templates as an existing blog -- in seconds you can have a new blog up and running, with the same look and feel.  This is handy for blog networks or organizations who have more than one blog with the same templates.</p>

<p><strong>Installation</strong></p>

<p>Upload the contents of the 'plugins' directory to the 'plugins' directory of your MT install.<br />
Go to "Manage Blogs" at the system level, click the checkbox beside the blog you want to clone, and choose "<strong>Clone Blog (Perms,Settings,Templates)</strong>".</p>

<p><strong>License:</strong> GPL</p>

<p><strong>Download Selective Cloner</strong></p>

<p><a href="/downloads/SelectiveCloner.zip" target="_blank" title="Download Now" onclick="pushRating('selectiveclonerdownloads',1,1,22,<$MTAjaxRatingTotalScore type="selectiveclonerdownloads" id="1"$>,<$MTAjaxRatingVoteCount type="selectiveclonerdownloads" id="1"$>,0);"><img src="/images/download.gif" alt="Download Now"/></a> <br />
<span class="downloads">Downloads: <$MTAjaxRatingVoteCount id="1" type="selectiveclonerdownloads"$></span></p>]]>
      
    </content>
  </entry>

  <entry>
    <title>Pagination 1.5 - Create Multi-Page Entries</title>
    <link rel="alternate" type="text/html" href="http://mt-hacks.com/20080911-pagination-15-create-multipage-entries.html" />
    <modified>2009-02-15T22:34:36Z</modified>
    <issued>2008-09-11T08:59:09-05:00</issued>
    <id>tag:mt-hacks.com,2008://22.75938</id>
    <created>2008-09-11T12:59:09Z</created>
    <summary type="text/plain">Pagination is plugin for Movable Type that enables you to paginate lists of entries. For example, at the bottom of your home page, you could add a &quot;Next&quot; link so your readers can go to &quot;Page 2&quot; and read previous...</summary>
    <author>
      <name>Mark</name>
      <url>http://www.markcarey.com/</url>
      <email>mark@markcarey.com</email>
    </author>
    <dc:subject>Pagination</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mt-hacks.com/">
      <![CDATA[<p>Pagination is plugin for Movable Type that enables you to paginate lists of entries.  For example, at the bottom of your home page, you could add a "Next" link so your readers can go to "Page 2" and read previous entries.  You can display a list of linked page numbers to enable visitors to jump to any page number they want.</p>

<p>With Pagination Pro, you can also paginate your Category, Author, and date-based archives, and even paginate your Entry archives, displaying only a small number of comments on each page. <strong>New in version 1.5:</strong> You can also paginate long entries by splitting them up into multiple pages.</p>

<p><strong>New Features in Pagination 1.5</strong></p>

<ul><li>Support for MT 4.2 (minor bug fixes that may affect some sites running MT 4.2+)</li>
<li>New template tags for next / previous page numbers</li>
<li>Split long entries into multiple pages by easily inserting page breaks (Pro only)</li></ul>

<p><strong>Try it Now - Live Demo</strong></p>

<p><a href="http://mt-hacks.com/mt41/">The MT4 Test Blog</a> has the Pagination Pro plugin enabled.  Scroll to the bottom of the <a href="http://mt-hacks.com/mt41/">home page</a> to see the list of pages and follow the links.  Also take a look at an example of a <a href="http://mt-hacks.com/mt41/movable_type/">paginated Category archive here</a>.  Finally, take a look at a paginated version of a 300+ comment entry <a href="http://mt-hacks.com/mt41/2007/09/ajax_comments_test_entry.php">here</a>.</p>

<p><strong>New: Paginated Entry Example - ReadWriteWeb</strong></p>

<p>The latest version of the Pagination plugin is used by the popular technology blog <a href="http://www.readwriteweb.com">ReadWriteWeb</a>.  (Disclosure: I provide consulting services to RWW)  In additional, using Pagination to paginate the home page, category, and monthly archives, you can <a href="http://www.readwriteweb.com/archives/government_20.php">click here for an example of a long entry that has been split into 2 pages</a>.</p>

<p><strong>How it Works</strong></p>

<p>My goal here was to create a pagination plugin with high performance.  I didn't want it to slow down rebuilds, and I wanted pages to display for readers without delay.  With these goals in mind, I decided to dynamically render pages 2, 3, 4, and so on.  This means that unlike the default for most pages in Movable Type, pages 2+ are not static files that get published to your blog directories.  They dynamically rendered by the plugin's page viewer script.  Note that this viewer script is <strong>Perl-based</strong> and <em>does not use MT's built-in PHP-based dynamic publishing system</em>.  The benefit of this is that you can virtually any plugin template tags in your paginated templates, and you don't need to use PHP.  So when someone views page 2, the script goes into action and builds the page and displays it.</p>

<p>Paginated URLs are clean, ending in index.html?page=2 (or similar).  Pagination makes use of mod_rewrite for Apache to keep these URLs clean (most MT sites run on Apache, but there may be some alternative approaches for other web servers).</p>

<p><strong>Page-Level Caching</strong></p>

<p>To speed up dynamic page views and reduce CPU/memory/database usage, Pagination supports (optional) page-level caching, powered by the <a href="http://mt-hacks.com/cacheblock.html">Cache Block</a> plugin.  This means that once the plugins generates the HTML for "page 2", it will store that in the cache for next time.  And next time someone wants to see "page 2", it can be quickly fetched from the cache.  In my tests, dynamic page views from the cache took about 0.04 seconds, so this is very fast.  In the plugin settings you can specify how long to cache pages before refreshing the cache.</p>

<p><strong>Template Tags</strong></p>

<p>Pagination comes with a template module that makes it easy to implement -- in most cases you can simply include the module in your existing templates and it will 'just work'.  So you may not need to learn or use the template tags below.  But if you want to customize the appearance of your Pagniation links, you can use/edit the following tags:</p>

<ul><li><strong>&lt;mt:PaginationPages></strong> - This is a container tag for displaying linked page numbers, previous / next page links, etc.  This tag should only be placed inside the following containers: &lt;mt:EntriesFooter>, &lt;mt:EntriesHeader>, &lt;mt:CommentsFooter>, and &lt;mt:CommentsHeader>. There are several arguments:
<ul><li><em>max_pages</em> - (Required) The maximum number of page numbers to display at one time.  Note that page numbers will roll forward as readers view higher page numbers, just like Google paginated search results.</li>
<li><em>glue</em> - (Optional) This should contain some text or symbols that you to display bewteen each page number.  For example, if you want 1 - 2 - 3, then use glue=" - ".</li>
<li><em>lastn</em> - (Required) The number of items shown on each page.  This must match the lastn argument of the parent &lt;mt:Entries> or &lt;mt:PaginatedComments> tag.</li>
<li><em>archive_type</em> - (Optional)  For advanced use, you can use this tag to override the archive_type used to calculate the page numbers and links.  If omitted, the plugin will use the archive_type of the page being built.</li>
<li><em>class_type</em> - (Optional) For advanced use, this tag will override the type of MT object being counted to determine the number of pages.</li></ul></li>
<li><strong>&lt;mt:PaginationPageNumber></strong> - Used inside a &lt;mt:PaginationPages> container, this tag will display the page number being processed in the loop (not the current page number that is being published/viewed).</li>
<li><strong>&lt;mt:PaginationPageLink></strong> - Used inside a &lt;mt:PaginationPages> container, this tag will display the URL to page number being processed in the loop.</li>
<li><strong>&lt;mt:IfPreviousPage></strong> - Conditional tag that is true if the page being displayed is 2 or higher.</li>
<li><strong>&lt;mt:PaginationPreviousPageLink></strong> - The URL to the previous page.</li>
<li><strong>&lt;mt:IfNextPage></strong> - Conditional tag that is true if the currently viewed page is not the last page.</li>
<li><strong>&lt;mt:IfNotLastPage></strong> - Conditional tag that is relative to the page being processed, <em>not</em> the page being viewed - returns true if the page being processed is not the final page.</li>
<li><strong>&lt;mt:LastPageLink></strong> - The URL to the last page.</li>
<li><strong>&lt;mt:LastPageNumber></strong> - The number of the last page.</li>
<li><strong>&lt;mt:NextPageNumber></strong> - The number of the next page.</li>
<li><strong>&lt;mt:PreviousPageNumber></strong> - The number of the previous page.</li>
<li><strong>&lt;mt:PaginatedComments></strong> - (Pro only) This is replacement container tag for &lt;mt:Comments>.  If you want to paginate the list of comments on an Entry archive, you should use &lt;mt:PaginatedComments> instead of &lt;mt:Comments>.  You can use all the same &lt;mt:Comment_____> tags inside the container.  Arguments include:
<ul><li><em>show</em> - The number of comments to show per page. (Note that you can also use 'lastn' for this argument)</li>
<li><em>offset</em> - The offset for the page of comments.  This should always be set to "$pagination_offset".</li></ul></li></ul>

<p><strong>Template Tags for Entry Pagination</strong></p>

<p>A new feature in Pagination Pro enables you to split long entries into multiple pages by adding &lt;!--nextpage--> (on a line by iteself) when writing the entry, in either the main "Body" or "Extended" fields.  Then, using the following template tag modifer or tags, you display only the current "part" of the entry, along with pagination links.  Note:  in order to differentiate this type of pagination, the term "part" is used instead of "page" -- think of it as splitting an entry into multiple <em>parts</em>.</p>

<p><em>(Note that using &lt;!--nextpage--> for page breaks is consistent with the built-in <a href="http://codex.wordpress.org/Styling_Page-Links" target="_blank">feature of Wordpress</a>.  This consistency may come in handy for sites migrating from WP to MT, as the existing page breaks should "just work".)</em></p>

<p>The easy way to use this feature is to use a new <em>modifier</em> called <strong>paginate</strong> on the tag that you want to split into parts for example:</p>

<p>&lt;mt:EntryBody paginate="1"></p>

<p>or </p>

<p>&lt;mt:EntryMore paginate="1">  (if your page breaks are added to the "Extended" field)</p>

<p>Simply add the <em>paginate="1"</em> argument to your existing tags in your Entry archives and MT will display only the relevant part of the field, along with pagination links at the bottom.</p>

<p>If you want more flexibility, instead of using the modifier described above, you can use the following template tags to control the display of the parts and page numbers:</p>

<ul><li><strong>&lt;mt:PaginatedTag></strong> - This container is designed to container the part(s) and page links for a paginated Entry Field.  There is one required argument:
<ul><li><em>tag</em> - The tag with the page breaks, without the "mt:" prefix.  Valid values are 'EntryBody' and 'EntryMore'.  Example: &lt;mt:PaginatedTag tag="EntryBody"></li></ul></li>
<li><strong>&lt;mt:CurrentPart></strong> - This tag displays the current part of the tag (part 1 on page 1, part 2 on page 2, etc.).  This tag must be used inside a &lt;mt:PaginatedTag> container.</li>
<li><strong>&lt;mt:Parts></strong> - This container tag list the pages and page links for each part, if page breaks exist in the specified tag.  This tag must be used inside an &lt;mt:PaginatedTag> container.  There is one optional argument:
<ul><li><em>glue</em> - the value of glue will act as a separator between each part number.  Example: &lt;mt:Parts glue=" | "></li></ul></li>
<li><strong>&lt;mt:PartNumber></strong> - Displays the part number.</li>
<li><strong>&lt;mt:PartLink></strong> - Displays the URL that links to page for the part.</li>
<li><strong>&lt;mt:IfPreviousPart></strong> - Conditional tag that is true if the part being displayed is 2 or higher.</li>
<li><strong>&lt;mt:PreviousPartLink></strong> - The URL to the previous part.</li>
<li><strong>&lt;mt:IfNextPart></strong> - Conditional tag that is true if the currently viewed part is not the last part.</li></li>
<li><strong>&lt;mt:NextPartLink></strong> - The URL to the next part.</li></ul>

<p><strong>Variables:</strong> For advanced usage, several variables are set by the plugin. A global variable called 'current_part_number' will be assigned to the value of currently displayed part on pages 2+, but remains undefined on page 1.  Within an &lt;mt:Parts> container, a local variable called 'current_part' is assigned to a value of 1 if the part being processed is the currently displayed part.  Finally, standard loop variables such as __first__, __last__, etc. are assigned and can be used inside &lt;mt:Parts></p>

<p><em>Complete Example:</em></p>

<p>&lt;mt:PaginatedTag tag="EntryMore"></p>

<p>  &lt;mt:CurrentPart></p>

<p>  &lt;mt:Parts glue=" &amp;nbsp;"><br />
    &lt;mt:If name="__first__"><br />
      &lt;div class="partination">&lt;p>&lt;strong>Page: &amp;nbsp;<br />
      &lt;mt:IfPreviousPart><br />
        &lt;a href="&lt;mt:PreviousPartLink>">&amp;laquo;&amp;nbsp; Prev&lt;/a><br />
      &lt;/mt:IfPreviousPart><br />
    &lt;/mt:If><br />
    &lt;mt:If name="current_part"><br />
      &lt;mt:PartNumber><br />
    &lt;mt:Else><br />
      &lt;a href="&lt;mt:PartURL>">&lt;mt:PartNumber>&lt;/a><br />
    &lt;/mt:If><br />
    &lt;mt:If name="__last__"><br />
      &lt;mt:IfNextPart><br />
        &lt;a href="&lt;mt:NextPartLink>">&amp;nbsp;Next &amp;nbsp;&amp;raquo;&lt;/a><br />
      &lt;/mt:IfNextPart><br />
      &lt;/strong>&lt;/p>&lt;/div><br />
    &lt;/mt:If><br />
 &lt;/mt:Parts></p>

<p>&lt;/mt:PaginatedTag></p>

<p><strong>Note:</strong> the template tags above will only work on templates published using MT's default "static" publishing system.  The tags will generate an error if used on dynamically published templates.</p>

<p><strong>Templates Set</strong></p>

<p>Pagination comes with two templates:</p>

<ul><li><strong>Pagination</strong> - A template module that can be included in other templates to display page links.</li>
<li><strong>HTACCESS for Pagination</strong> - An index template that builds the required mod_rewrite rules.  <strong>Important</strong>: The output file for this template has been set to "htaccess.txt" on purpose.  Some sites have already have a ".htaccess" file and you want to be careful not to overwrite the existing one (for example, if you use MT's PHP dynamic publishing, with my Fast Search plugin or otherwise).  Check to see if you already have an .htaccess file and if you do, you may want build this template as "htaccess.txt" and then copy and paste the rules into the appropriate place in your .htaccess file (if using MT's dynamic publishing, paste <em>before the existing rules</em>.) If you want to use this template to build your .htaccess file, you will need to change the output file to ".htaccess".</li></ul>

<p><strong>Requirements</strong></p>

<ul><li>MT4+</li>
<li>Apache mod_rewrite (for clean URLs)</li>
<li><a href="http://mt-hacks.com/templateinstaller.html">Template Installer</a> plugin</li></ul>

<p>Note: while not required, the <a href="http://mt-hacks.com/cacheblock.html">Cache Block</a> plugin is needed if you want to use the Pagination caching features (highly recommended).</p>

<p><strong>Installation</strong></p>

<ol><li>Download the zip file and upload the contents of the 'plugins' folder to the 'plugins' directory of your MT installation.</li>
<li>Change the permissions of the /plugins/Pagination/pages.cgi script to 755 (CHMOD 755).</li>
<li>Go to the blog you want and then to Preferences > Plugins and then open the settings for the Pagination plugin.  Enable the caching settings if desired, then Save.</li>
<li>Return to the settings and click the "Install Templates" button.  This will install the templates mentioned above.</li>
<li>Setup your .htaccess file with the Pagination rules, as described above.</li>
<li>Edit your Main Index template and add the following before the &lt;/MTEntries> tag:

<p>&lt;mt:EntriesFooter><br />
  &lt;mt:Include module="Pagination"><br />
&lt;/mt:EntriesFooter></li></p>

<p><li>Modify your &lt;MTEntries tag to include the argument offset="$pagination_offset".  This is important.  Example:  &lt;MTEntries lastn="10" offset="$pagination_offset"></li><br />
<li>(Pro only) Do the same for your "Entry Listing" archive template, for both MTEntries containers.</li><br />
<li>(Pro only) If you want to paginate your comment listings on your Entry archives, edit the "Comments" template module to replace the &lt;MTComments> container with the MTPaginatedComments container, as discussed above.  Be sure to include show="10 offset="$pagination_offset".</li><br />
<li>(Pro only) If you want to paginate long entries on your Entry archives, edit your Entry archive (or relevant template module) to replace or modify the EntryBody or EntryMore tags, as described above.</li></ol></p>

<p><strong>Get Pagination Pro</strong></p>

<div class="module"><em><strong>Commercial License for 1 to 10 blogs - $97</strong></em>

<p><a href="<$MTPaymentURL id="37"$>"><img src="https://www.paypal.com/en_US/i/btn/x-click-but23.gif" /></a></div></p>

<div class="module"><em><strong>Blog Network License for 10+ blogs - $249</strong></em>

<p><a href="<$MTPaymentURL id="38"$>"><img src="https://www.paypal.com/en_US/i/btn/x-click-but23.gif" /></a></div></p>

<div class="module"><em><strong>Personal License for 1 to 4 blogs - $33</strong></em>

<p><a href="<$MTPaymentURL id="39"$>"><img src="https://www.paypal.com/en_US/i/btn/x-click-but23.gif" /></a></div></p>

<p><strong>Get Pagination</strong></p>

<p>Pagination is free for personal or commercial use, but you must leave the "powered by" link, which is added automatically below the paginations links. </p>

<p><strong>Download Now</strong></p>

<p><MTIfMemberLoggedIn><a href="/downloads/Pagination.zip" target="_blank" title="Download Now" onclick="pushRating('paginationdownloads',1,1,22,<$MTAjaxRatingTotalScore type="paginationdownloads" id="1"$>,<$MTAjaxRatingVoteCount type="paginationdownloads" id="1"$>,0);"><img src="/images/download.gif" alt="Download Now"/></a> <br />
<span class="downloads">Downloads: <$MTAjaxRatingVoteCount id="1" type="paginationdownloads"$></span></MTIfMemberLoggedIn></p>

<p>As always, comments, questions, and suggestions are welcome.</p>]]>
      
    </content>
  </entry>

</feed>
