Adding custom pages for specific kinds of entries
I'm currently using the diary template and would like to make a few adjustments to the structure of the website.
Filtering content on certain pages
Right now, all the posts (or entries
) appear in the home page.
I'd like to create a kind
metadata for each entry with either blog
or work
as possible values. So that only the entries with kind = work
would appear on the home page, and the entries with kind = blog
would be on a dedicated page called (drumroll...) "Blog".
Note that I don't want to use the tags to achieve this result. Entries in
blog
andwork
could share some common tags. Hence the need for an additionalkind
metadata.
Different page rendering depending on the kind of entry
Last but not least, I was wondering if there was an easy way to differentiate the layout of each entry page. For instance, all kind = blog
entries could have a dark background or a "Subscribe to newsletter" button at the bottom. Things like that.
Preliminary note: I broke out one of your questions, How to create a new template view? into a separate page. Hope you can understand
I would recommend using custom metadata to accomplish this. For example, to mark a post as a 'blog' post, I'd do this:
Blog: yes
And to mark a post as a 'work' post, I'd do this:
Work: yes
After you've added this metadata to a few posts, you can then adjust your template. For example, consider the list of entries on your site's homepage, located in entries.html:
{{#entries}}
{{#metadata.blog}}
Shows when `Blog: yes` metadata is set.
{{/metadata.blog}}
{{^metadata.blog}}
Shows when `Blog: yes` metadata is NOT set.
{{/metadata.blog}}
...
{{/entries}}
You can use this strategy to inject work-or-blog-specific CSS, or JavaScript, or HTML. You can also use this to filter your list of posts. Here's an example which will render a list of the titles of your posts with Blog: yes
metadata:
{{#all_entries}}
{{#metadata.blog}}
- {{title}} <br>
{{/metadata.blog}}
{{/all_entries}}
Answered 3 years ago ·
Edit answer