Tips and tricks I wish I had known when I started using Movable Type.
- Understanding (Page-Level) Templates
- Understanding File/Directory Name Templates
- Understanding Template Modules (Chunks of Code)
- Making Archive Pages Look Like Your Home Page
- Making Comments and Trackback Pages Look Like Your Home Page (And Tripling Your Content In Google)
- Using CSS Style Sheets To Create A Three-Column Layout
- Designing For All/Older Browsers
- Using Bookmarklets To Post Content
- Creating A Separate CGI Directory
- References
Understanding (Page-Level) Templates
Movable Type is a template-driven weblog management application. There are about a dozen page-level templates (Index Templates, Archive-Related Templates, and Miscellaneous Templates) that output pages of code (HTML or other code). There are also Template Modules that output chunks of code (HTML or other code). Template Modules are typically included in page-level templates so that standard elements (headers, footers, etc.) can be included in multiple places in page-level templates.
Movable Type does an OK job at explaining all of this, but not such a good job of providing examples. In the table below, I’ve included all of my current templates and sample output files for each. If I had this table when I was starting out (for a demo website, for example), it would have been easier to understand what each template does. As is the case with nearly all software, all of this is easier to demonstrate than describe.
Name | Template File | Output File |
Index Templates | ||
*Main Index | index-main.html | index.html |
*Master Archive Index | archives.html | archives.html |
RSD | rsd.xml | rsd.xml | *RSS 1.0 Index | index.rdf | index.rdf |
RSS 2.0 Index | index.xml | index.xml |
*Stylesheet | styles-site.css | styles-site.css |
Archive-Related Templates | ||
*Category Archive | archives-category.html | example |
*Date-Based Archive | archives-date.html | example |
*Individual Entry Archive | archives-individual.html | example |
*RSS 1.0 Category-Specific | archives-category.rdf | example |
*RSS 2.0 Category-Specific | archives-category.xml | example |
Miscellaneous Templates | ||
*Comment Listing Template | comment-listing.html | example |
*Comment Preview Template | comment-preview.html | example |
Comment Error Template | comment-error.html | no example |
*Trackback Listing Template | trackback-listing.html | example |
Uploaded Image Popup Template | uploaded-image-popup.html | no example |
*Indicates that I’ve modified the default settings.
Understanding File/Directory Name Templates
The templates for configuring filenames and directory names (which is not what Movable Type calls them) are not located with the rest of the templates. Instead, they are in the “Weblog Config” section (click the “Weblog Config” button from the editing menu) under “Archiving.” Movable Type calls these “Archive File Templates,” but what they really do is control how filenames and directory names are created for various archives. Here’s how mine are configured:
Archive Type | Template | Archive File Template (On One Line) |
Individual | Individual Entry Archive | <$MTEntryDate format=””$> <MTIfEmpty var=”EntryKeywords”> <$MTEntryID pad=”1″$>.html</MTIfEmpty> <MTIfNotEmpty var=”EntryKeywords”> <$MTEntryKeywords$></MTIfNotEmpty> |
Monthly | Date-Based Archive | <$MTArchiveDate format=”%Y/%m/index.html”$> |
Category | Category Archive | <$MTArchiveCategory dirify=”1″$>/index.html |
Category | RSS 1.0 Category-Specific | <$MTArchiveCategory dirify=”1″$>/index.rdf |
Category | RSS 2.0 Category-Specific | <$MTArchiveCategory dirify=”1″$>/index.xml |
I have configured my filename/directory name templates to output non-numeric filenames when I include a (better) filename in the “Keywords” field. For example, I included “movable-type-brain-dump.html” in the Keyword field for this entry, so the URL is “https://www.giantpeople.com/427.html”. See Cruft-free URLs in Movable Type [dive into mark] for more information.
I don’t use the “Daily” and “Weekly” archive types, which are also available.
Understanding Template Modules (Chunks of Code)
Template Modules are chunks of code that are included in other templates. Template Modules can also be included in other template modules. For example, the following table shows which Template Modules are included in the page-based templates on my website.
my-meta | ||
my-javascript | ||
my-header | ||
my-subscribe | Template-specific stuff goes here … | my-in-print |
my-toptech | … and here. | my-toplaw |
my-categories | my-comments (for archive + comment templates) |
my-blogroll |
my-archives | my-links (for archive + TrackBack templates) |
my-subscribe |
my-about | my-post-a-comment (for archive + comment + TrackBack templates) |
my-copyright |
To be accurate, I have a module called “my-left-menu” that includes the Template Modules shown in the left column, and a module called “my-right-menu” that includes the Template Modules shown in the right column. Again, since these things are easier to demonstrate than describe, here are the contents of both.
my-left-menu:
<!-- begin my-left-menu --> <div id="left-menu"> <$MTInclude module="my-subscribe"$> <$MTInclude module="my-toptech"$> <$MTInclude module="my-categories"$> <$MTInclude module="my-archives"$> <$MTInclude module="my-about"$> </div id="left-menu"> <!-- end my-left-menu -->
my-right-menu:
<!-- begin my-right-menu --> <div id="right-menu"> <$MTInclude module="my-in-print"$> <$MTInclude module="my-toplaw"$> <$MTInclude module="my-blogroll"$> <$MTInclude module="my-recent-entries"$> <$MTInclude module="my-copyright"$> </div id="right-menu"> <!-- end my-right-menu -->
The center section changes depending on the template. As do parts of the header section, such as the title of each page. But for the most part, each page on the site includes the same elements (and, as a result, looks the same). So if I want to change my meta tags (for example), I simply change the “my-meta” Template Module, rebuild the site, and the changes appear on every page on my website.
Making Archive Pages Look Like Your Home Page
By default, Movable Type includes navigation elements on the home page only.
To fix this, I added the navigational elements (i.e. the left and right menus) from the Main Index Template to each of the Archive-Related Templates. I also display comments and Trackback entries (which I prefer to call “Links”) inline with the body of each entry (as opposed to hidden in popup windows, which is the default).
I prefer having the navigational elements on each page of my site. This gives my site a consistent look-and-feel. For example, the “Recent Entries” Template Module (more on this below) appears on each page of the site and shows the recent entries as of the date of the entry. So my very first post shows only one recent entry.
Making Comments and Trackback Pages Look Like Your Home Page (And Tripling Your Content In Google)
By default, Movable Type includes only a few elements in the Comments Listing Template and the Trackback Listing Template. An unintended side-effect of this is that there are a lot of less-than-useful (to be generous) entries in Google’s database. By making the Comments Listing Template and the Trackback Listing Template mirror the Main Index Template, I can now have more meaningful data associated with these URLs. Put another way, this can (theoretically) triple the content you have in Google. For example:
- My Main Index Template includes the entry, comments, and Trackbacks.
- My Comments Listing Template includes the entry and comments.
- My Trackback Listing Template includes the entry and Trackbacks.
Using CSS Style Sheets To Create A Three-Column Layout
Movable Type comes with default templates and default CSS style sheets. My website is based on the default “Trendy” style sheet. It took me a while to get used to CSS, but now I can change the look-and-feel of my entire site by simply changing one file: the CSS style sheet (styles-site.css). Movable Style is a website that has ready-to-use style sheets for the default Movable Type templates. See also scriptygoddess’s description of the difference between “class” and “ID” in CSS style sheets.
I changed the names of the default styles because I found the names confusing. One of the default styles is called “blog,” but the entire site is a blog, not just one style. So I renamed “blog” to “content” and divided it into subparts with the style name “content-chunk.” Makes more sense to me. The downside is that I can’t use Movable Style’s style sheets out of the box; I’d have to customize them. But, then again, that’s what this article is about: how to customize Movable Type.
My weblog uses a three-column layout, and the columns each resize — while retaining their relative size — when you resize the browser window. There are many tutorials on the web that describe how to do this:
- Three Columns – Flanking Menus
- 3 Column Blog
- 3 Column Complex Layout demo
- 3 columns with Header and Footer
- A tableless, CSS-based, liquid, three-column layout
I prefer — and use — the method described by saila.com. It is, by far, the most elegant of the above solutions. Here are snippets of the relevant sections from my style sheet:
#content { background:#FFFFFF; left:20%; margin:2px 2px 2px 2px; min-width:360px; position:absolute; top:100px; width:60%; } #left-menu { background:#FFFFFF; color:#333333; left:0; margin:0px 2px 2px 2px; padding-left:2px; position:absolute; top:102px; width:19%; } #right-menu { background:#FFFFFF; color:#333333; left:80%; margin:2px 2px 2px 2px; padding-left:2px; position:absolute; top:102px; width:19%; }
Designing For All/Older Browsers
In all of your page-based templates, you should place the body elements first, then the left and right menu elements. This makes the website render properly in older or text-based browsers (i.e. it puts the body of the post before the menus). Also, many browsers (and some aggregators) do not properly render the <blockquote>
tag, so I generally include quotes around blockquoted text to make it clear that it is quoted text.
Using Bookmarklets To Post Content
A Bookmarklet is a chunk of JavaScript code that allows you to quickly and easily post to your Movable Type weblog. Bookmarklets are an under-documented and under-appreciated feature of Movable Type. You can create a Bookmarklet by going to the Movable Type main menu and selecting “Set Up Bookmarklets.” Or you can just copy, edit, and bookmark this Bookmarklet.
Then, add the Bookmarklet as a bookmark to your Personal Toolbar in Mozilla (or the equivalent in whatever browser you use). In order to use the Bookmarklet to post content to your site, go to the URL of the page you want to post, select the text you want to include, and then click on the Bookmarklet bookmark.
Creating A Separate CGI Directory
I have installed Movable Type CGI in a directory (erikjheels.com/mt/mt-bin) that is separate from my other CGI scripts (erikjheels.com/cgi-bin/). This way, I can temporarily disable Movable Type by password-protecting the MT CGI directory without interfering with my other CGI scripts, such as my search engine.
- My Related Posts About Movable Type
- More Movable Type Info
- Movable Type Plugins. You should at least install MT Blacklist for cleaning up comment and Trackback spam. I use FilterCategories in “my-categories” and elsewhere. I use IfEmpty for creating nifty filenames.
- Developing Movable Type Plug-ins.
- CSS Rollover Nav Bar. I haven’t gotten around to this yet.
- Unordered List Item Marker Styles in CSS. I implemented this then un-implemented it because it didn’t render consistently in the several browsers that I use.
- Content Management Systems (CMS)
- Remember PointCast? PointCast helped define “push” technology. Blogs and RSS aggregators do (and do better) a lot of what PointCast was trying to do.
- opensourceCMS. Content Management Systems are for people who want more than weblogs (such as community or portal sites). This website allows you to try out PHP/MySQL-based CMS software including AngelineCMS, AWF, Back-End, bes-cms, Drupal, E-Xoops, e107, eNvolution, eZ Publish, ezContents, Geeklog, Jetbox One, LDU, Mambo, MD-Pro, myPHPNuke, OpenPHPNuke, Ovidentia MP, PHP-Nuke, phpwcms, phpWebSite, PHPX, Postnuke, Props, Renegade, Sitellite, Spip, Tiki, Typo3, vPortal, Xaraya, and XOOPS.
- Slashcode is the open source software that powers Slashdot.
- phpMyAdmin is a tool written in PHP intended to handle the administration of MySQL over the web. If you run MySQL on the back-end of your Movable Type installation — and you are adventurous — you can manage the backbend database directly with phhMyAdmin. Another option is the MySQL module in Webmin.
- Gallery is a PHP-based CMS for photo albums.
- Zope is an open source platform for building content management systems.
- Weblog And RSS Info
- Google’s directory of weblog software. If you’re just starting out, try TypePad.
- Yahoo’s directory of weblog software.
- RSS Feed Validator. Useful for testing that your MT installation is producing correct XML in its RSS feeds.
- RSS Info From WebReference.com
- A list of some of the best RSS readers (RSS aggregators).
- Jeremy Zawodny on Integrating RSS, E-Mail, and Usenet. There’s no good solution — yet.
- A great overview on the capabilities and limitations of weblogs from Paul English.