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.

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. New in version 1.5: You can also paginate long entries by splitting them up into multiple pages.

New Features in Pagination 1.5

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

Try it Now - Live Demo

The MT4 Test Blog has the Pagination Pro plugin enabled. Scroll to the bottom of the home page to see the list of pages and follow the links. Also take a look at an example of a paginated Category archive here. Finally, take a look at a paginated version of a 300+ comment entry here.

New: Paginated Entry Example - ReadWriteWeb

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

How it Works

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 Perl-based and does not use MT's built-in PHP-based dynamic publishing system. 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.

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).

Page-Level Caching

To speed up dynamic page views and reduce CPU/memory/database usage, Pagination supports (optional) page-level caching, powered by the Cache Block 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.

Template Tags

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:

  • <mt:PaginationPages> - 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: <mt:EntriesFooter>, <mt:EntriesHeader>, <mt:CommentsFooter>, and <mt:CommentsHeader>. There are several arguments:
    • max_pages - (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.
    • glue - (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=" - ".
    • lastn - (Required) The number of items shown on each page. This must match the lastn argument of the parent <mt:Entries> or <mt:PaginatedComments> tag.
    • archive_type - (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.
    • class_type - (Optional) For advanced use, this tag will override the type of MT object being counted to determine the number of pages.
  • <mt:PaginationPageNumber> - Used inside a <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).
  • <mt:PaginationPageLink> - Used inside a <mt:PaginationPages> container, this tag will display the URL to page number being processed in the loop.
  • <mt:IfPreviousPage> - Conditional tag that is true if the page being displayed is 2 or higher.
  • <mt:PaginationPreviousPageLink> - The URL to the previous page.
  • <mt:IfNextPage> - Conditional tag that is true if the currently viewed page is not the last page.
  • <mt:IfNotLastPage> - Conditional tag that is relative to the page being processed, not the page being viewed - returns true if the page being processed is not the final page.
  • <mt:LastPageLink> - The URL to the last page.
  • <mt:LastPageNumber> - The number of the last page.
  • <mt:NextPageNumber> - The number of the next page.
  • <mt:PreviousPageNumber> - The number of the previous page.
  • <mt:PaginatedComments> - (Pro only) This is replacement container tag for <mt:Comments>. If you want to paginate the list of comments on an Entry archive, you should use <mt:PaginatedComments> instead of <mt:Comments>. You can use all the same <mt:Comment_____> tags inside the container. Arguments include:
    • show - The number of comments to show per page. (Note that you can also use 'lastn' for this argument)
    • offset - The offset for the page of comments. This should always be set to "$pagination_offset".

Template Tags for Entry Pagination

A new feature in Pagination Pro enables you to split long entries into multiple pages by adding <!--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 parts.

(Note that using <!--nextpage--> for page breaks is consistent with the built-in feature of Wordpress. This consistency may come in handy for sites migrating from WP to MT, as the existing page breaks should "just work".)

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

<mt:EntryBody paginate="1">


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

Simply add the paginate="1" 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.

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:

  • <mt:PaginatedTag> - This container is designed to container the part(s) and page links for a paginated Entry Field. There is one required argument:
    • tag - The tag with the page breaks, without the "mt:" prefix. Valid values are 'EntryBody' and 'EntryMore'. Example: <mt:PaginatedTag tag="EntryBody">
  • <mt:CurrentPart> - 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 <mt:PaginatedTag> container.
  • <mt:Parts> - 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 <mt:PaginatedTag> container. There is one optional argument:
    • glue - the value of glue will act as a separator between each part number. Example: <mt:Parts glue=" | ">
  • <mt:PartNumber> - Displays the part number.
  • <mt:PartLink> - Displays the URL that links to page for the part.
  • <mt:IfPreviousPart> - Conditional tag that is true if the part being displayed is 2 or higher.
  • <mt:PreviousPartLink> - The URL to the previous part.
  • <mt:IfNextPart> - Conditional tag that is true if the currently viewed part is not the last part.
  • <mt:NextPartLink> - The URL to the next part.

Variables: 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 <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 <mt:Parts>

Complete Example:

<mt:PaginatedTag tag="EntryMore">


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


Note: 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.

Templates Set

Pagination comes with two templates:

  • Pagination - A template module that can be included in other templates to display page links.
  • HTACCESS for Pagination - An index template that builds the required mod_rewrite rules. Important: 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 before the existing rules.) If you want to use this template to build your .htaccess file, you will need to change the output file to ".htaccess".


Note: while not required, the Cache Block plugin is needed if you want to use the Pagination caching features (highly recommended).


  1. Download the zip file and upload the contents of the 'plugins' folder to the 'plugins' directory of your MT installation.
  2. Change the permissions of the /plugins/Pagination/pages.cgi script to 755 (CHMOD 755).
  3. 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.
  4. Return to the settings and click the "Install Templates" button. This will install the templates mentioned above.
  5. Setup your .htaccess file with the Pagination rules, as described above.
  6. Edit your Main Index template and add the following before the </MTEntries> tag:

    <mt:Include module="Pagination">

  7. Modify your <MTEntries tag to include the argument offset="$pagination_offset". This is important. Example: <MTEntries lastn="10" offset="$pagination_offset">

  8. (Pro only) Do the same for your "Entry Listing" archive template, for both MTEntries containers.

  9. (Pro only) If you want to paginate your comment listings on your Entry archives, edit the "Comments" template module to replace the <MTComments> container with the MTPaginatedComments container, as discussed above. Be sure to include show="10 offset="$pagination_offset".

  10. (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.

Get Pagination Pro

Commercial License for 1 to 10 blogs - $97


Blog Network License for 10+ blogs - $249


Personal License for 1 to 4 blogs - $33


Get Pagination

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

Download Now

,<$MTAjaxRatingVoteCount type="paginationdownloads" id="1"$>,0);">Download Now
Downloads: <$MTAjaxRatingVoteCount id="1" type="paginationdownloads"$>

As always, comments, questions, and suggestions are welcome.

FriendFeed Comments is a plugin for Movable Type that enables you to import and display comments made using FriendFeed on your entries. You can also use the plugin to enable your blog commenter to "Cc." their comments to FriendFeed (if they have a FriendFeed account).

Background: FriendFeed Comments

FriendFeed is service that enables you aggregate and share your stuff from many other web sites, all in one place. Your feed can pull in your blog RSS feeds, photos from Flickr, videos from YouTube, tweets from Twitter, and many more.

Each item in your feed -- whether it is a blog entry or tweet -- can be commented on by other FriendFeed users.

Some great discussions about blog entries can happen on FriendFeed. The only problem is that those conversations are off-site and separated from the entry published on your blog. One of the goals of the FriendFeed Comments plugin is to bring those comments back to your published blog entry, displaying them with on-site blog comments.


Version 1.0 of the FriendFeed Comments plugins includes the following features:

  • Checks all types of FriendFeed items for comments on your entries. Usually, comments on FriendFeed happen on the RSS item from your entry. Some comments, however, happen on the Twitter message you posted to announce the entry. The plugin aggregates these all these comments by checking all items in the feed.
  • Imports the comments as real MT comments. After importing, comments appear in the admin area just like other comments. Comments are displayed interspersed with on-site comments, displayed in chronological order.
  • New template tags can be used to highlight FriendFeed comments (more info below)
  • High perfomance, does not slow publishing. FriendFeed comments are imported via an MT scheduled task, running every 15 minutes in the background.
  • Check multiple FriendFeed user's feeds for comments. Useful for multi-author blogs and other advanced uses.
  • On-blog commenters can optionally Cc. their comments to FriendFeed. In addition to posting the comment on your blog, the comment will also be posted to item in your FriendFeed. Also, the comment will be posted as an item in the commenter's feed, so they can share the comment (and link) with followers of their feed.

Working Example: ReadWriteWeb

This plugin was suggested by Richard McManus and Marshall Kirkpatrick of ReadWriteWeb, and inspired by the FriendFeed Comments plugin for Wordpress, by Glenn Slaven. I have installed the plugin for ReadWriteWeb and it is now running, importing comments from FriendFeed and enabling commenter to Cc. FriendFeed. Check out the entries at Please don't post "test" comments there, you can use the live demo for that...

Live Demo

If you have a FriendFeed account, you can try out the plugin right now:

Click here to access the live demo for FriendFeed Comments.


  • MT4+
  • JSON 2.x Perl module (included)
  • Net::FriendFeed Perl module (included)
  • Remote Comments Schema plugin (included)

Get FriendFeed Comments

This plugin is free to members of MT Hacks.

Download Now

,<$MTAjaxRatingVoteCount type="ffcommentsdownloads" id="1"$>,0);">Download Now
Downloads: <$MTAjaxRatingVoteCount id="1" type="ffcommentsdownloads"$>


  1. Download and expand the zip file.
  2. Upload the contents of the 'plugins' folder to the 'plugins' directory of your MT.
  3. Upload the contents of the 'extlib' folder to the 'extlib' directory of your MT.
  4. Upload the contents of the 'mt-static' folder to the 'mt-static' directory of your MT.
  5. Login to MT and go to the blog you want. Go to Tools > Plugins and choose FriendFeed Comments and then Settings. Enter the FriendFeed username(s) of the feed(s) that contain links to your blog entries. Save the settings.
  6. Ensure that scheduled tasks are running, ideally via cron job. Click here for more info. Comments will only be imported if scheduled tasks are running.
  7. (Optional) Modify your templates using the new template tags described below. If you are using the new MT4-style templates, you probably want to edit the "Comment Detail" template module.
  8. (Optional) Modify your comment form to enable on-site commenters to Cc. their comments to FriendFeed. You need to add two fields named friendfeed_user and friendfeed_remote_key. If you want to use the code shown on the demo entry, you can download this template module and include it.

Template Tags

FriendFeed Comments adds the following new template tags:

  • <MTIfFriendFeedComment> - A conditional tag that is true if the comment exists on FriendFeed.
  • <MTIfFriendFeedEntry> - A conditional tag that is true if the entry in context has been found on FriendFeed.
  • <MTFriendFeedEntryLink> - A URL to the item for the entry on FriendFeed.
  • <MTFriendFeedIconURL> - A URL to the small FriendFeed icon.

Example usage, place before the commenter's name:

<MTIfFriendFeedComment><a href="<MTFriendFeedEntryLink>" target="_blank" title="Posted on FriendFeed">
<img src="<MTFriendFeedIconURL>" align="left" alt="Posted on FriendFeed" /></a>  </MTIfFriendFeedComment>

As always, feedback is welcome.

This template includes a single template module called "FriendFeed Login". This module is designed to be used with the FriendFeed Comments plugin and can be included within your comment form.



Install is easy, using the Template Installer plugin:

  1. Download and expand the zip file.
  2. Upload the 'friendfeed_login' folder to the /plugins/TemplateInstaller/template_sets/ directory of your MT4 install. (Make sure to upload both the folder and its contents).
  3. Browse to the blog you want, then go to Design > Templates then click the "Install Templates" link on the lower right.
  4. From the dropdown, choose the "FriendFeed Login" set and click "continue".
Note that your existing versions of this template, if one exists, will be automatically backed up during the template installation process.

Get FriendFeed Login Template Module

Download Now:

,<$MTAjaxRatingVoteCount type="friendfeedlogindownloads" id="1"$>,0);">Download Now
Downloads: <$MTAjaxRatingVoteCount id="1" type="friendfeedlogindownloads"$>

Remote Comments Schema is plugin for Movable Type developers. The plugin is very simple and provides no new "features". As the name suggests, the plugin provides a database schema for remote comments. Specifically, this plugin extended the MT::Comment object by adding two new (real, not meta) columns:

  • remote_service
  • remote_id

These fields can be used to link MT comments to comments stored/created/imported/synced on remote service.

License: GPL

Download Remote Comments Schema

,<$MTAjaxRatingVoteCount type="remotecommentsdownloads" id="1"$>,0);">Download Now
Downloads: <$MTAjaxRatingVoteCount id="1" type="remotecommentsdownloads"$>

A new version of the Fast Search plugin for Movable Type is available.

The new version is a very important security update, and I recommend that all sites install the new version as soon as possible.

The primary issue that has been fixed was a security bug in which a malicious person could insert HTML or javascript into your search results pages by modifying the query string. Please note that this does not affect regular user searches or tag searches, but rather search results pages that spammers have linked to from external web sites.

Other fixes include a pagination issue that was affecting certain users (in which the page numbers were inaccurate), and a fix for the tag_dir argument when the blog was not at the root off the domain.

You can download the new version from the links below:

Download Now

Fast Search 2.22 for MT4+:
,<$MTAjaxRatingVoteCount type="fastsearchdownloads" id="1"$>,0);">Download Now
Downloads: <$MTAjaxRatingVoteCount id="1" type="fastsearchdownloads"$> (since 3/6/07)

Fast Search 2.092 for MT3.2 and 3.3:
,<$MTAjaxRatingVoteCount type="fastsearchdownloads" id="1"$>,0);">Download Now
Downloads: <$MTAjaxRatingVoteCount id="1" type="fastsearchdownloads"$> (since 3/6/07)

If you have previously purchased the Pro version, you should have by now received an email with a download link. If not, please contact me.

MT Forum is a forum plugin for Movable Type 4.1+. Using MT Forum you can add forums to existing MT blogs, or create new blogs that act as dedicated forums. MT Forum is completely integrated with Movable Type and supports posting topics and replies by MT-authenticated users as well as OpenID-authenticated users.


MT Forum Features

MT Forum provides basic forum functionality in a way that is completely integrated with Movable Type. Features include:

  • Add forums to existing MT blogs/sites, or create a new site dedicated to the forum.
  • Create forums and subforums to organize discussions.
  • Forum posters can use their existing MT commenter accounts to post new topics and replies.
  • Forum posters can use OpenID, Vox, Livejournal, AOL, TypeKey and any other authentication method supported by MT, to post both topics and replies.
  • Topics and replies can also be posted by unauthenticated users (if configured by admin)
  • Familiar forum and topic layout promotes active forum participation.
  • Most recently active discussion topics are always listed at the top of forum listings (topic listings are sorted by most recent "post", whether it be a new topic or reply)
  • Static forum and topic pages are SEO-friendly (no long query strings).
  • New forum topics can be tagged by posters (if enabled by admin)
  • Default templates do not use HTML <table> tags for forum/topic layout.
  • Recent Forum Topics widget displays recent topics in your sidebar.
  • New topics can be scanned by MT's junk filters
  • Topic and Reply forms are spam-protected against spambots
  • Forum and Topic templates are completely customizable via MT templates.
  • Supports the integration with other MT plugins via template customization.

Live Demo

You can try MT Forum on the MT4.1 Test Blog. Browse around, post a new topic, reply to existing topics. Click here to for the live demo.

Note that some features shown in the live demo (and in the screensnaps above) require other plugins. These include topic view stats, topic signatures, reply (comment) titles, user profile pages, join dates and post counts.

Template Set

MT Forum comes with a set of templates that can be installed in a single click, making it very easy to setup. The templates control the display of the main forum home page, the forum listing pages, topic listing pages, and the new topic submission page.

Forum Themes

MT Forum comes with two themes (styles), the red one shown above, and a blue one shown here:

These themes are based on themes from the open source phpBB (version 3) forum application. With a bit of effort, other phpBB styles could be converted for use with MT Forum.


Get MT Forum

After purchasing a license below, you will be taken directly to a download page.

Buy MT Forum and Entry Post Together

Note that the new topic posting feature of MT Forum is powered by the Entry Post plugin from MT Hacks. Use the links below to purchase licenses for both plugins together. Click here to buy a license for only MT Forum.

Commercial License - (up to 5 blogs) - $194.00


Blog Network License - (more than 5 blogs) - $346.00


Non-Commercial License - (up to 5 blogs) - $66.00



  1. Extract the zip file and upload the contents of the 'plugins' folder to the 'plugins' directory of you MT Installation.

  2. Upload the contents of the 'mt-static' directory to the 'mt-static' directory of your MT install

  3. The next time you access MT, you should see a "Time to Upgrade" screen that will update the database for MT Forum

  4. If you have not already done so, enable Entry Post for the blog(s) where you want to install a forum (details here)

  5. Go to the blog you want then choose Preferences > Plugins from the menu, then click on MT Forum then Settings. Click the "Install Templates" button to install the templates.

  6. Choose Design > Templates from the Menu and choose "Template Modules" from the right side of the page. Open the "Header" module. Look for the </head> tag. Immediately before that tag there should be a <mt:var name="html_head"> tag. If this is not present, then add it bebefore the &t;/head> tag and save the template.

  7. Choose to Manage > Forums from the menu and create one or more forums.

  8. Rebuild all files and view your forum at

  9. (Optional) Use Widget Manager to add the "Recent Forum Topics" widget to the sidebar of your blog. You may also want to add a navigation link to forum.html so people can find the main forum page.

As always, feedback is appreciated, please reply to this entry.

User Profiles is a plugin for Movable Type 4.1+ that extends the user profiles in MT. Version 1.6 adds support for MT 4.1.

In the Pro version, extended profiles can be edited from the admin interface, or by commenters:

New features

Version 1.6 primarily adds support for MT 4.1. In the latest version of MT, user profile images are a core feature, called "userpics". If you previously installed the User Profiles plugin on MT4, version 1.6 will automatically migrate your users' profile photos to use the new core Userpic system.

Note that while Userpics are a core feature in MT 4.1, there is no core feature for enabling commenters to upload their userpics -- you will need the User Profiles plugin to enable that.

Features in User Profiles 1.6

  • Commenters can upload a profile image (any authenticated commenter, including Vox, OpenID, etc.)
  • Authenticated commenters can edit basic profile info

Features in User Profiles Pro

User Profiles Pro includes the following additional features:

  • Authors and commenters have extended profiles. Extended profiles come with 22 built-in fields (such as City, Country, Birthdate, About Me, etc.).
  • Custom fields for extended profiles can be defined by system administrators
  • Publish profile pages for each author and commenter, including profile images, basic and extended profile info, recent entries, and recent comments.
  • Automatically import profile images (avatars) for all your existing users from Gravatar, MyBlogLog, Vox, Livejournal, and BlogCatalog.
  • AJAX function auto-imports avatars in the background after new commenters login.

How it Works

Authenticated commenters can edit their profiles and upload a profile image:

Finally, the <MTAuthorImageURL> and <MTCommenterImageURL> tags can be used to display the user's profile image on your published blog pages (or use the core "userpic" tags in 4.1)

Profile images are stored as Assets within Movable Type. This means that these images can also be used in other ways, such as inserting them into entries. Movable Type will keep the full size image (cropped to square, if necessary) and create thumbnails when using the tags described below. Each profile image is tagged with '@userpic'.

With User Profiles Pro, extended profiles can be edited, either from the admin interface, or by commenter via the "edit profile" link after they login. User Profile pages are published automatically as static pages, which boosts performance for high traffic sites.

Live Demo - Try User Profiles Pro Now

User Profiles Pro has been enabled on the MT Test Blog. Start from this entry and read the instructions. Sign in, edit your profile, upload a photo, view your published profile. Try it now!

Template Tags

Version 1.6 of User Profiles includes the following template tags:

  • <MTAuthorImageURL> - This displays the url to a thumbnail of the author's profile image. There is one optional argument:
    • size - the size in pixels of square thumbnail, default is 50 pixels (each side)
  • <IfMTAuthorImage> - This conditional tag displays its contents if the author has uploaded a profile image.
  • <MTAuthorImageURL> - This displays the url to a thumbnail of the commenter's profile image. There is one optional argument:
    • size - the size in pixels of square thumbnail, default is 50 pixels (each side)
  • <IfMTCommenterImage> - This conditional tag displays its contents if the commenter has a profile image. Note: if you posted a comment on your own blog (while signed in), your profile image will be displayed using this tag.

Example: In your "Entry Metadata" template module, your could add the following:

<MTIfAuthorImage><img src="<MTAuthorImageURL size="50">" align="left" /> </MTIfAuthorImage>

This would display the author's profile image, if they have one in their profile.

Similarly, in your "Comment Detail" module, you could add:

<MTIfCommenterImage><img src="<MTCommenterImageURL size="50">" align="left" /> </MTIfCommenterImage>

Both example above can be seen in action on the MT4 Test Blog.

User Profiles Pro Template Tags

User Profiles Pro includes the following additional tags:

  • <MTAuthorProfileURL> - This displays the url to the author's published profile page.
  • <MTCommenterProfileURL> - This displays the url to the commenter's published profile page.
  • <MTEntryAuthorLink> - This replaces the core tag of the same name. Instead of linking to the author's URL, it will link to the author's profile page.
  • <MTCommentAuthorLink> - This replaces the core tag of the same name. Instead of linking to the commenter's URL, it will link to the commenter's profile page. If the commenter was not authenticated, it will link to the URL provided.
  • <MTUserProfile> - This tag is used to display extended profile information. There is one required argument:
    • field - the name of the field that you wish to display. For built-in fields, valid values are birthdate, first_name, last_name, address, city, state, country, mobile_phone, land_phone, sex, marital_status, occupation, company, signature, about_me, activities, interests, music, tv_shows, movies, books, or quotes. For custom-defined fields, use the defined name of the field (more on custom fields below). Note that for the built-in "birthdate" field, you can also specify a "date_format" argument that follows MT's date formats.
  • <MTAuthorComments> - This container tag, which is used on the default "User Profile" template, displays the comments from the author in context. On the published User Profile page, this is used to display a list of recent comments by the user.

User Profiles Template Set

User Profiles comes with several default templates that are easy to install with the Template Installer plugin. The User Profile template set includes the following templates:

  • Javascript - This a replacement for the core "Javascript" index template. If you have customized your existing template, it will be backed up during the installation process. The new version includes some new features for User Profiles.
  • Edit User Profile - This template module is used to display the "edit profile" page that commenter's see when they click the "Edit Profile" link. Note that this template also displays the image upload and the "edit extended profile" pages. You can customize the user profile experience (and extended profile fields) bu editing this module. Note: you should not rename this template module.
  • User Profile (Pro only) - This template module is used to publish the User Profile pages. Customize this template to change the way user profiles are displayed. A special note about this template -- when you save it, it will automatically republish all user profile pages (no need to republish your site). Note: you should not rename this template module.
  • YUI Javascript (Pro only) - This template module includes reference links to several Yahoo Javascript libraries. This template should be included in the Header template for all feedback templates (Entry archives). The auto-image-import AJAX function uses these libraries. Note: if you are already using the Ajax Comments plugin, then you already have this module, so you don't need to include it again.



  1. Download the zip file and upload the contents of the 'plugins' folder to the 'plugins' directory of your MT installation.
  2. You should now see an Upgrade Screen for User Profiles. For User Profiles Pro, the upgrade will add a new table for extended profiles and import profile images for existing users in your system
  3. Go to System Overview, then to Preferences > Plugins. Then choose User Profiles, then Settings. Entry the blog_id for profile images and templates, and the path for uploading profile images, then save.
  4. Return to the User Profiles settings and click the "Install Templates" button. The templates will be installed into the blog you chose in the previous step.
  5. In your "Header" template, add the following before the </head> tag:

    <MTIf name="include_javascript">
    <script type="text/javascript" src="<$MTLink template="javascript"$>"></script>

    And (Pro only) after the line that reads <MTIf name="entry_template">, add:

    <MTInclude module="YUI Javascript">

    Then save your "Header" template.

  6. Republish your Javascript template and Entry archives for the chosen blog

  7. Upload a profile image from your profile. (Tip: the quickest way to get to your profile is to click the "Hi Username!" link in the very top right of the page.) Click the link to add a profile image and follow the steps as shown above.

  8. Edit your extended profile by clicking "Extended Profile" from your profile page

  9. Edit your templates to display profile images, as described in the Template Tags section above.

Customizing Extended Profiles and Adding Custom Fields

User of User Profiles Pro may want to customized the display of the fields or add custom fields to the profiles. Click to read an in-depth article on how to customize Extended Profiles.

Get User Profiles Pro

Commercial License for 1 to 10 blogs - $97


Blog Network License for 10+ blogs - $249


Personal License for 1 to 4 blogs - $33


Get User Profiles

User Profiles v1.6 is free for both commercial and non-commercial use. Note that User Profiles does no include the "Pro" features mentioned above.

Download Now

,<$MTAjaxRatingVoteCount type="userprofilesdownloads" id="1"$>,0);">Download Now
Downloads: <$MTAjaxRatingVoteCount id="1" type="userprofilesdownloads"$>

As always, comments, questions, and suggestions are welcome.

IfAvailable is a plugin for Movable Type, designed primary for use by plugin or template developers. It provides a single template tag, <MTIfAvailable>, that can be use to check for the availability of other plugins or for specific Perl modules:


Only one of the following arguments must be used:

  • perl_module - A perl module name. Example: <MTIfAvailable perl_module="XML::Parser">
  • plugin_id - The registered "id" of a specific plugin. Example: <MTIfAvailable plugin_id="userprofiles">
  • plugin_sig - The plugin "sig" of a specific plugin. Example: <MTIfAvailable plugin_sig="CommentTitles/">. Useful when a plugin does not have a registered "id".

This plugin is especially useful for template developers who want to design template sets that contain template tags from one or more plugins, but the templates sets do not require those plugins. By using IfAvailable conditional blocks you can provide a template set that provides different output (read: extra features) to sites that have certain plugins/modules, and a more limited output if they do not. In other words, you don't have to create multiple versions of the template set. My MT Forum plugin uses this approach to provide a set of forum templates -- if sites have plugins such as Visitor Stats, User Profiles Pro, and Comment Titles, the forum templates will include things like topic views, post signatures, and user post counts.


  • GPL v2

Download Now

,<$MTAjaxRatingVoteCount type="ifavailabledownloads" id="1"$>,0);">Download Now
Downloads: <$MTAjaxRatingVoteCount id="1" type="ifavailabledownloads"$>

The Navigation Breadcrumbs plugin for Movable Type 4.1 adds navigation "breadcrumbs" to administration interface. These are links at the top of each screen that helps show you where you are in the interface, and provides links to go up one or more levels. Previous versions of Movable Type includes these handy links, but MT4+ does not. So if you like those navigation links, use this plugin.


Changes in Version 1.1

Version 1.1 fixes display issues when running under MT 4.1. You should only upgrade to the new version if you are are using MT 4.1.


  • Movable Type 4.1+

Download Now

,<$MTAjaxRatingVoteCount type="breadcrumbsdownloads" id="1"$>,0);">Download Now
Downloads: <$MTAjaxRatingVoteCount id="1" type="breadcrumbsdownloads"$>


  1. Download the zip file and upload the contents of the 'plugins' directory to the 'plugins' directory of your MT installation.
  2. You are done. The navigation breadcrumbs should start appearing immediately.

WP Interface is a plugin for Movable Type that provides a user interface very similar to Wordpress.

Yes, the above image is Movable Type, not Wordpress. ;)

More Screensnaps


You may be asking yourself why I would create a Wordpress Interface for Movable Type. Partly, I did it as a bit of a joke (but it is real and is does work). Partly as a proof of concept, demonstrating that alternative user interfaces can be created for Movable Type, without a huge effort. Partly to provide a simpler user interface that may be suited to some users. While Movable Type has always (and will remain) my preferred platform, I have always admired the clean intuitive interface of Wordpress. Finally, I did it as a fun way to show that Movable Type and Wordpress can work together (at least in some ways), despite the "rivalry" between the two platforms.

I suspect that the Wordpress Interface for Movable Type will elicit mixed reactions, and that is okay. Please share your thoughts in reply to this entry!

How it Works

Loosely based on the iPhone interface for MT, this plugin provides a simple interface to some of the functions of MT. The interface is definitely a beta, but it is functional for creating and managing entries and comments in a single blog. Other features could be added in future. The interface looks like the Wordpress Interface, but behind the scenes is the same Movable Type Open Source 4.1 that powers the MT interface.

Live Demo

Click here to try it out now (username: demo password: demo).


  • Open Source (GPL)

I am not an expert when it comes to Open Sources licensing, but since both Wordpress and Movable Type are open source, so is this plugin. I hope the community can help take it to the next level.


  1. Extract the files from the zip file and upload the contents of the 'plugins' folder to the 'plugins' directory of your MT instalation.
  2. Upload the contents of the 'mt-static' folder to the 'mt-static' folder of your MT install.
  3. To enable the interface, open your mt-config.cgi file and add:

    WPInterface 1

  4. Then login to MT.

Another way to enable the plugin is to make an exact copy of your mt.cgi file. Name the duplicate "mt-wp.cgi" and upload it to same directory as mt.cgi. The access MT via the mt-wp.cgi script and it will use the WordPress interaface. This option is useful if you wnat to user both interfaces, or if there are multiple users who will use each interface.

Get WP Interface

This plugin is free to members of MT Hacks.

Download Now

,<$MTAjaxRatingVoteCount type="wpinterfacedownloads" id="1"$>,0);">Download Now
Downloads: <$MTAjaxRatingVoteCount id="1" type="wpinterfacedownloads"$>

As always, feedback is welcome, please reply to this entry.