Blog Post Styling

This theme component will allow you to designate a blog category and will alter the look and feel of all topics within that category to appear more like a traditional blog post. This is essentially a theme component adaptation of the Blog post plugin.

Usage tips:

  • The image code of your featured image should be the first line of the post. The component will “move” that image above the topic title to produce the effect shown in the above example image. Please be sure to include a blank line between the image code of the featured image and the subsequent content.

  • You can use <big></big> tags around the first letter of a word to create an initial effect

  • You may wish to enable the category setting Navigate to first post after topics are read to always highlight the blog post when first entering a topic.

  • The main image is centered within the available space. You may need to edit your photo for it to display the way you’d like.

    Additional details

    The height of the blog image container is 440px and the width is 100% of the main container. The image is centered within the available space, so if your image has 500px height, 30px will be cropped from the top, and 30px from the bottom. Horizontal cropping starts at 1100px (the max-width of the main content on a Discourse site) and will increase as the window narrows. The ideal scenario is to use an image that either has a centralized subject, or one that has a generalized subject such as a pattern or a nature shot like the one I show in my example.

  • You can apply the styling to multiple categories. This can be accomplished by comma separating the category slugs, making sure to omit any spaces before of after the commas. Sub-categories can be added by following these steps:

    1. Get the link to the subcategory and isolate the part after /c/

      https://meta.discourse.org/c/support/wordpress

    2. Replace the / with a - so that you get support-wordpress

    3. Add the result to the theme setting

  • When you first create the blog post topic, you will need to refresh the page to see the main image appear above the content. This only happens right after it is posted and only for the author of the topic.

Suggestions on how the component can be improved are welcome. I can’t promise I’ll be able to add the feature, or make the change, but it will certainly be considered :slight_smile:

Current to-do/feature request list

  • Make sure the component plays nice with DiscoToC (especially with RTL)
  • Allow tags to be used as a way to apply the styling to a post
  • Allow videos to be used in addition to images

Special thanks to @simon and @awesomerobot for the heavy inspiration their prior work provided in creating this.

Install this theme component

97 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.


2 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!

15 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:

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

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 Theme Component

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