Blog Post Styling

:discourse: Summary Blog Post Styling lets you designate a blog category, which alters the look of topics within the category to look more like traditional blog posts.
:eyeglasses: Preview Preview on theme-creator.discourse.org
:hammer_and_wrench: Repository github.com/discourse/discourse-blog-post-styling
:open_book: New to Discourse Themes? Beginner’s guide to using Discourse Themes

Install this theme component

The Blog Post Styling theme component transforms Discourse topics into a traditional blog-post layout. When applied to a category, the first image in each topic is promoted to a full-width hero above the title, and the content is styled with blog-appropriate typography and metadata display.

Settings

Here are the various settings associated with this theme component:

  • Blog category: The category slug of the category that should use blog post styling. To add to more than one category, use a comma-separated list without spaces (e.g., blog,announcements). To find the slug:

    • For categories, take the URL path after the /c/ — so for /c/blog/, the slug is blog.
    • For subcategories, take the URL path after /c/ and replace any / with -. For example, a category at /c/blog/tutorials becomes blog-tutorials.
  • Blog tag: Choose one or more tags that, when applied to a topic, will give it blog post styling.

  • Image size: Decide how the featured hero image fills the header area:

    • No image: Hide the featured image.
    • Full width (default): Image spans the entire content area.
    • Centered: Image maintains aspect ratio and is centered in the content area.
  • Image position: Decide where to show the image relative to the title:

    • Above title (default): Show image above the topic title.
    • Below title: Show image below the topic title. When selected, you can also include a summary that displays between the title and the image.Below, you can see what the image looks like when the image position setting is configured to above title and below title:

Writing a Blog Post

Once you have set up your blog category (or applied your blog post tag), there are a few special things to note about how the blog post topic will work.

Featured image

Place the image you want as the hero image on the very first line of the post, followed by a blank line before your content starts:

![image description|1100x440](upload://your-image-hash.jpg)

Your post content begins here...

The component automatically positions this image based on the image position setting (see above). If any other content — including blank lines — appears before the image, it will not be promoted to the hero position.

After first publishing a post, refresh the page to see the image appear in the designated position. (This only affects the post author on initial publish; members accessing the post should see the image in the right place right away.)

Image sizing tips

The image container is 440px tall and 100% wide. For best results when the image size setting is set to full width:

  • Use or crop images to 1100x400px before uploading to avoid cropping, or
  • Choose images with a centralized subject or non-specific content (landscapes, patterns) so cropping doesn’t remove important detail.

Summaries

When the image position setting is set to below title, you can add an optional summary to your blog post, which will appear between the title and the featured image.

To do this, wrap the content that you want to appear in your summary as follows:

[summary] Here is the content that will be your summary. [/summary]

Stylized blockquotes

When creating topics in a blog category, blockquotes get special styling. You can create blockquotes in the composer with the > symbol or using the “ composer toolbar button.

Recommended category setting

In the settings for your blog category, consider enabling the Navigate to first post after topics are read category setting. This sends returning readers directly to the blog post content rather than their last-read position.

Blog Post Styling + Topic List Thumbnails

This component is compatible with Topic List Thumbnails, which highlights the featured image of your blog post in the topic list:

Note: The Topic List Thumbnails component is not compatible with the Horizon theme. The above screenshot is using the Foundation theme.

103 Likes

We just have been able to verify that by bumping the original markup materialized after upload by just injecting a zoom level of 101% at the appropriate place like

![image|690x458,101%](upload://4BWmapYzkwTQrWlm1JkeUwefYrC.jpeg)

after the respective image had been uploaded beforehand as

![image|690x458](upload://4BWmapYzkwTQrWlm1JkeUwefYrC.jpeg)

This is cute and makes us happy.


3 Likes

Hello, and thank you very much for dedicating the time to create this and release it for free.

I was just wondering if it would be at all possible to change this somehow to use a specific tag instead of a particular category?

I just setup a new discourse website but I’ve been writing a lot of “blog posts” but I would still like these to show up in the appropriate other categories in order to make it seem a little more integrated.

Currently I have been posting them in their own blog-posts category, which I limited to just me being able to post in there, but I just setup a tag group and made that only accessible to staff.

Thanks again!

3 Likes

Thanks very much @tshenry. Your theme components have all been spot on.And to @sam and @codinghorror for sharing an incredible app!! Your generosity including the support in meta is heartfelt. Discourse is indeed made for the more caring internet of the future.

6 Likes

Is there a way to make this work with a video as the featured content rather than the image? I would delete my wordpress site if I could just post the YouTube/Vimeo etc. and have that be the top content. Any ideas?

6 Likes

Totally! Great suggestion @LoganRTW. It’s got my vote @tshenry. Can it be done?

4 Likes

Update :tada:

If you can believe it :sweat_smile:

I have started refactoring/cleaning up the component to use the plugin-style file structure and make use of the new topic thumbnails.

https://github.com/discourse/discourse/pull/9215

I’ve added a couple new features as well:

  • New settings
    • image_display_style - there are two options with this. The default should be the behavior the component has had all along. The alternative will ensure there is no cropping and the full image is displayed. It’s hard to say which one is “better” so you’ll want to do some experimentation and see what works best for your workflow and blog images.

    • mobile_enabled - this is a first pass on the mobile blog post style. I’m interested to hear any bug reports or ideas for improvements on this!

I still want to continue refactoring and cleaning up the code, but this should be a good start.

https://github.com/tshenry/discourse-blog-post-styling/commit/eba3c52fc1f9b273d34e9d673567410e4566372e


No plans at this point, I’m afraid!

16 Likes

Thank you for a really inspiring and nice component @tshenry :pray:

In my evaluation I have identified two issues;

  1. No blog image in sub categories - after quite extensive troubleshooting with different themes and enabling/disabling both plugins and other components, I think I can state with near certainty that blog images won’t render for sub categories. The first image/the intended blog image is however still hidden.

  2. First image not hidden inline with DiscoTOC - When Blog Post Styling is used together with DiscoTOC, the blog image get rendered above the title correctly - however, it is rendered twice as it is still rendered in its original position as well.

4 Likes

Thanks so much for the feedback @torstensson! Both points were indeed bugs and should now be fixed:

Please let me know if you continue to have any issues.


To everyone using this component:

:warning: If you are not currently including a featured image at the top of all blog posts, this is for you!

This component was created with the intention of having an image display above every blog post topic. With that said, it was possible to create a blog post without displaying a featured image by simply not including an image on the first line of the post. This behavior has changed.

The newer implementation greatly improves performance, but it uses a predefined value rather than looking at the post contents itself. The predefined value is generated from the first image found in the post. Unlike before, it is not necessarily limited to an image appearing as the first line of the post. This means if you create a post without an image on the first line, but you include a single image at the bottom of the post, that image at the bottom will now also be displayed above the topic.

I have included an all-or-nothing setting that can toggle on/off the “featured image,” allowing you to have all of the styling except for the featured image if that is your preference.

I am going to update the OP with all of the new considerations and recommendations, but the short of it is to make sure to include an image on the first line of the post (this positioning is still used to make sure the image is not repeated). You may find it is helpful to use a placeholder image in the category’s topic template that can be used as a default if no image is provided.

6 Likes

Awesome, thank you @tshenry :awthanks: I can gladly confirm that both issues have been resolved with the update :slightly_smiling_face: and again - thank you for a really great component, not only in function but inspiration as well :+1: :+1:

3 Likes

A recently announced feature may work as an alternative to this theme-component. Leaving it here for those interested.

2 Likes

@tshenry Thanks so much for this component! :heart: We are using it along side the Topic List Previews plugin to create an Articles section for students in the Dataquest Community.

I have a feature request for you to consider in future iterations of this component - Can you please add the ability to add Canonical URLs to the articles?

Search engines use canonical links to determine and prioritize the ultimate source of content, removing confusion when there are multiple copies of the same document in different locations.

Thanks!

3 Likes

So I think this is a great component. In fact I am now trying it out on a live Discourse and I am playing around with it. Without any kind of order, I want to provide my initial thoughts and feedback, hope it helps - forgive me if some of them might be more of a question:

  • The way the author is displayed is a bit out of place and could maybe be solved more space-efficient, to tie it in closer with the title, or category tag etc… there is also rather much white space between the line that ends the author info and the beginning of the text
  • It is hard for a vistor sent directly to a blog post to realize where you are, as there is no clear breadcrumb or anything. The main reason is, that the title bar seems to be turned inactive, whereas on normal topics they transform and include the title, category etc.
  • Would be great if the category view could have more of a blog look, with small preview images and such, would that be hard to do?
  • I don’t see a category description in the category view?
2 Likes

wow what theme component is used for that category view? Looks cool

2 Likes

Thanks for the feedback :slight_smile:

I do agree there is a lot of white space around the author/title area. I’ll keep this feedback in mind next time I work on the component and see if I can come up with something.

I’m not 100% sure what you mean here. The header will switch to include the title/breadcrumbs once you scroll down past the image and blog title. You are correct that at the top of the page, it’s not especially obvious, though. I’ll keep this in mind as well.

These would be out of scope for this component. For the category view, you might want to take a look at: Topic List Thumbnails

2 Likes

Thanks for the feedback :slight_smile: I think most of it is cleared up, and I also do see the category description now, not sure why it wasn’t visible earlier, I thought it had something to do with the component. I will keep trying this out and post more feedback later. Excellent work!

3 Likes

I think the excess space at the top comes from space remaining after the picture is “moved” to the header of the blogpost, resulting not in space below gained, but being empty.

But I noticed an actual problem: If I post links to such a blog post in other topics, there is no thumbnail, see here

1 Like

Here is a screenshot of what I mean:

2 Likes

I’m fairly sure this is due to you excluding a line break between the image upload link and the first paragraph. Can you try editing it to match the following:

![spagh|690x390](upload://nVi42gGIwt03DAYSzVEc4RvwS6h.jpeg) 

<big>While</big> there is ample space around the web to post and blog and share and tweet and all that, my favorite place to exchange ideas with all of you on the spaghetti western is this forum. Some of you might remember an effort dating back several years ago, it was called "Planet Spaghetti Western", and the idea was to have a blog, that would automatically aggregate posts from all the spaghetti western blogs around the internet, and present them sort of as a digest. It was rather complicated from a technical perspective and in the end more work than it was worth so I had to shut that down.

If that works, I’ll add a note in the OP about that requirement.

3 Likes

Hi. That reduces the margin a bit, indeed, thank you. I had done the exact opposite in the editor: leave as little space between the image and the beginning of the text

1 Like