Tag: Mephisto

How I converted Mephisto to WordPress

I got a comment the other day asking how I converted to WordPress from Mephisto while keeping my comments and everything intact. If you are familiar with Ruby on Rails, this response will make sense. If you are not, I recommend learning it…then this response will make sense.

In a nutshell, I used Mephisto for the conversion. First I spent about a week mapping Mephisto’s DB to WordPress’ DB. I went straight into the Mephisto Rails project and created a new model that pointed to my newly created WordPress database. I then created a controller in Mephisto that looked exactly like this:

(note: if this is a pain to read, you can also view it here)

class MephistoController < ApplicationController
    def index
        start_time = Time.now
        logger.info 'querying mephisto articles'
        @articles = Content.find(:all, :conditions=>"article_id IS NULL")
                logger.info 'querying mephisto comments'
                @comments = Content.find(
			:all, :conditions=>"article_id IS NOT NULL")
        logger.info 'querying mephisto taggings'
        @taggings = Tagging.find(:all)
        logger.info 'querying mephisto tags'
        @tags = Tag.find(:all)
        logger.info 'processing terms'
        for tag in @tags
            @wp_term = WpTerm.new
            @wp_term.term_id = tag.id
            @wp_term.name = tag.name
            @wp_term.slug = tag.name.downcase.gsub(" ","_")
            @wp_term.term_group = 0
            @wp_term.save
        end
        logger.info 'processing term relationships'
        for tagging in @taggings
            @wp_tr = WpTermRelationships.new
            @wp_tr.term_taxonomy_id = tagging.tag_id
            @wp_tr.object_id = tagging.taggable_id
            @wp_tr.save
        end
        logger.info 'processing term taxonomy'
        for tag in @tags
            c = Tagging.count(:all, :conditions=>"tag_id = #{tag.id}")
            @wp_tt = WpTermTaxonomy.new
            @wp_tt.term_taxonomy_id = tag.id
            @wp_tt.term_id = tag.id
            @wp_tt.taxonomy = "post_tag"
            @wp_tt.parent = 0
            @wp_tt.count = c
            @wp_tt.save
        end
        logger.info 'processing posts'
        for article in @articles
            c = Content.count(:all, :conditions=>"article_id = #{article.id}")
            @wp_post = WpPost.new
            @wp_post.ID = article.id
            @wp_post.post_author = 1
            @wp_post.post_date = article.published_at-7.hours
            @wp_post.post_date_gmt = article.published_at
            @wp_post.post_content = article.body
            @wp_post.post_title = article.title
            @wp_post.post_category = 39
            @wp_post.post_status = "publish"
            @wp_post.post_status = "open"
            @wp_post.ping_status = "closed"
            @wp_post.post_name = article.permalink
            @wp_post.post_modified = article.updated_at-7.hours
            @wp_post.post_modified_gmt = article.updated_at
            @wp_post.post_parent = 0
            @wp_post.guid = article.published_at.strftime("http://blog.gillumiante.com/%Y/%m/%d/")+article.permalink
            @wp_post.menu_order = 0
            @wp_post.post_type = "post"
            @wp_post.comment_count = c
            @wp_post.save
        end
        logger.info 'processing comments'
                for comment in @comments
            @wp_com = WpComment.new
            @wp_com.comment_ID = comment.id
            @wp_com.comment_post_ID = comment.article_id
            @wp_com.comment_author = comment.author
            @wp_com.comment_author_email = comment.author_email
            if comment.author_url == nil
                comment.author_url = ""
            end
            @wp_com.comment_author_url = comment.author_url
            @wp_com.comment_author_IP = comment.author_ip
            @wp_com.comment_date = comment.published_at-7.hours
            @wp_com.comment_date_gmt = comment.published_at
            @wp_com.comment_content = comment.body
            @wp_com.comment_karma = 0
            @wp_com.comment_approved = '1'
            @wp_com.comment_parent = 0
            @wp_com.user_id = 0
            @wp_com.save
                end
        logger.info 'finished!'
        end_time = Time.now
        @lapsed = end_time-start_time
        render :layout=>false
    end
end

I then proceeded to visit the /mephisto/index page on my mephisto blog, which fired this baby off. It took all of about 9 seconds to complete.

I realize the irony of using Mephisto in order to abandon it. But in the end, I wasn’t switching from the Rails based app because of Rails, but because of the app. I am still in love with rails and as you can see, this project would have taken me a lot longer to accomplish had I attempted to write it in PHP, the language of WordPress.

4 Responses  |  add yours »

My Blog is Now Running on WordPress

Well, it’s my second migration. First I built this blog on my own using php. Then I decided to venture out and stop re-inventing the wheel and use a real blogging software tool. I chose Mephisto at the time (about a year ago), but I eventually regretted that and am now completely content with WordPress. I doubt I will ever switch again. I have researched it well this time and talked to professional bloggers who have researched it well. WordPress is king.

2 Responses  |  add yours »

Mephisto to Typo migration?

This blog you are reading is powered by Mephisto. I originally created this blog using my own code in PHP and was so tired of re-inventing the wheel that I went out and researched what I thought would be the best blogging software for my needs. I’m in love with Ruby on Rails, so one of my requirements was that it had to be using that technology. In my research I narrowed it down to Typo and Mephisto, but there wasn’t much activity over in the Typo camp and there were plenty of people blogging about their switch from Mephisto to Typo. So, I chose Mephisto thinking it was the better of the two.

I’ve since realized that Typo’s development activity has gone way up, and Mephisto’s has gone way down. I have been using Typo on another blog venture of mine and am in love with it. Actually, I’m loving it much more than Mephisto these days for several reasons, most of which pertain to user friendliness. I did run into an issue with trackback spam on Typo, which I’ve read as a big complaint about it. But trackbacks aren’t even an option on Mephisto, so what’s the big deal?

The point I’m trying to make here is this. If there’s anyone out there with experience migrating from Mephisto to Typo I’d like to hear from you. There’s plenty of google hits about going from Typo to Mephisto, but nothing in the opposite direction. I’m interested in converting this blog, Tongue and Groove (once again).

2 Responses  |  add yours »

Google Sitemap for Mephisto

I was getting frustrated with the idea of updating my sitemap.xml every time I created a new article on this blog. So I started mulling through the Mephisto Wiki and found a Mephisto Google Sitemap Plugin from Stephen Caudill which works great! I would have left a comment on his site, but it appears that comments have been turned off. So I’m leaving an endorsement here.

No Response  |  add yours »

Mephisto’s Lucid theme displaying incorrect timestamp

I don’t know if it’s because the Lucid theme for Mephisto was ported from Typo, but it was displaying the timestamp on my entries as UTC instead of MST, which is what I told Mephisto my time zone is in the Settings. Apparently Lucid uses JavaScript to convert the timestamp into a more descriptive time (“about an hour ago”) if the timestamp is less than a week old and otherwise displays the date.

Without having enough time to really look into it, I believe Mephisto is using TZinfo Gem to convert the database timestamp to whatever you set your timezone to be in the Settings and Lucid is reading that as UTC anyway and attempting to convert it to the users current time.

So rather that fudging the JavaScript, I decided to reformat the date that Lucid sees and let it do it’s thing. In other words, I plugged the following into the home.liquid, index.liquid, and single.liquid templates:

from

<p class="auth">Posted 
<span class="typo_date" title="{{ article.published_at }}">
{{ article.published_at }}
</span></p>

to

<p class="auth">Posted
<span class="typo_date" title="{{ article.published_at | date: "%a %b %d %H:%M:%S MST %Y" }}">
{{ article.published_at | date: "%a %b %d %H:%M:%S MST %Y" }}
</span></p>

where MST is my own time zone.

Hope this helps others, as I wasn’t able to find any other info about it.

1 Response  |  add yours »

Search