Beesbot

Middleman Permalinks in Frontmatter

Jan 25, 2017

There are a lot of reasons to want descriptive, clean and specific urls for your middleman pages. Sometimes the filename wont match and you'd like to just define the url in frontmatter.

Here is a simple extension I wrote to allow this.

# lib/extensions/permalink.rb
class Permalink < Middleman::Extension
    def manipulate_resource_list(resources)
        resources.each do |resource|
            if resource.respond_to?(:data) and resource.data[:permalink]
                resource.destination_path = resource.data[:permalink] + '/index.html'
            end
        end
    end
end

::Middleman::Extensions.register(:permalink, Permalink)

This will apply a destination_path to any middleman page with the following frontmatter

---
permalink: beautiful-url-goes-here
---

To enable it you add the following to your config.rb

# extensions
require 'lib/extensions/permalink.rb'
activate :permalink