Control other cards

Create a card named __config (two underscores) into a list named __root (two underscores). Like this:

Special config card

The __config card is a bit sophisticated but not so complicated.

__config will allow two things: add global properties for the whole site and set default properties to other cards.

Nothing to be scared of: whatever you put into the __config card works like other cards, the only thing is that conceptually, the content of __config is for the whole site and not for one specific page. That's it.

"Whaaaat ???!" you might say... Let's rephrase quickly: the __config card will be sent to your back-end flagged as THE SPECIAL CONFIG CARD. That being said, developers will be able to rely on it to find central/global information like logo, menus, social icons and everything one doesn't want to repeat over and over again into each cards.

In addition to classic card properties, this special card can take two other properties: cards and list.

These properties are extremely powerful: cards will take any classic card properties and propagate them to each cards, while list will propagate properties to each cards in a list.

So let's take an example. If we create a __config card in a list named __root, with this config in the description part:

[ cards ]
type = post

+++

it means that from now on, all cards of the board will see their type defined as post. Even without defining it at card level. In fact, defining it within the card itself would override this default property.

This is handy if most cards should be of type = post except one or two exceptions, and will prevent repeating the same property in each and every cards.

The list property acts exactly the same as cards, but targeting a specific list!

[ list.posts ]
type = post

+++

here we define that all cards in the Trello list named posts should now take the property type set to post. Isn't that cool ?

Remember: the more specific you are when defining properties, the more weight it has.

So a property defined in the [cards] section of the __config card will be overridden if the same property is defined in the [ list.name ] section because it is more specific. With that concept in mind, it should make sense that properties defined within the card itself are always overriding everything because there is no way to be more specific !

Let's take a simple example, with this __config:

[ cards ]
type = page
permalink = /:list/:title

[ list.posts ]
type = post

[ list.projects ]
type = project

[ list.others ]
permalink = /:title

+++

Ok let's see what's going on here. First, [cards] defines that all cards in the board should get a type of page and an URL of the form /:list/:title (see permalink docs). Right after, [ list.name ] defines that all cards in the lists named posts and projects should get types of respectively post and project. Finally, all cards in the list others already have their type of page inherited from the first [cards] property (type = page) but we want their URL to look like /:title.

And here is how you get superpowers !

But more seriously, it allows to forget about some settings within a card: take time to define how you want to organize your content in the board, then define it in the __config card. Then write with peace of mind and without polluting cards with the same type, the same permalink, the same template... over and over again.

__config ideas

Here is a cool application of the whole theory above, to implement an editorial workflow of your content within Trello:

Editorial workflow

[ cards ]
  type = blog

[ list.ideas ]
  publish = no

[ list.reviewing ]
  publish = yes
  permalink = /in-review/dygsjegvkug7r6gfyi7fs8fgy/:title

[ list.published ]
  publish = yes
  permalink = /blog/:title

+++

In this example there would be 3 lists ideas, reviewing and published, each list name being self explanatory. They all get a type = blog. And the workflow is quite straightforward: put ideas into the list ideas without much overthinking. Then drag it to the reviewing list when we find the content to be ok. Each cards in the reviewing list gets an url of the form /in-review/dygsjegvkug7r6gfyi7fs8fgy/my-post-title-here which is handy to share a live page for external people to see without it being publicly accessible (actually it is technically public and accessible, but if changed once in a while, it is fairly hard to guess even for robots. So if you have top secret James Bond style content, this is not recommended but honestly... just change the secret part once in a while, it should be more than sufficient for 99% of humans). Once reviewing is passed, just drag the card into the published list where it will receive a cleaner permalink along with being published. Neat !!