Shopify Dawn Theme: Effortlessly Add Placeholder Images & Position Product Titles Like a Pro
Hey there, fellow store owners! Let's dive into a common challenge that recently sparked a great discussion in the Shopify community: how to elegantly handle products in your Dawn theme that don't yet have an image. You know, those blank spots on your collection pages that just don't quite cut it?
The core problem, as highlighted by @gladfulspirit, was twofold: first, displaying a custom 'Coming Soon' placeholder image for these products, and second, ensuring the product title appears below that image, not awkwardly on top of it. This is a classic customization need for any growing store.
The 'No Image' Dilemma in Dawn Theme: Overlapping Titles
The Dawn theme is powerful, but its default behavior for products without a featured image (what it often refers to as StandardCardNoMedia) can be a bit tricky. Instead of a clean placeholder, you might get a blank area, or worse, the product title can render directly over where an image should be. When you add a placeholder, this creates an unsightly overlap.
Here's a visual of what @gladfulspirit was seeing – the product title inside the image area:

Let's break down the solution, combining insights from @Moeed and @suyash1 from the community thread.
Step 1: Adding Your Placeholder Image
The first part is to tell card-product.liquid to display your custom image when a product lacks featured_media.
- Upload Your Placeholder: Go to Online Store > Themes > Actions > Edit code. In the Assets folder, click Add a new asset and upload your 'Coming Soon' image (e.g.,
comingsoon.png). -
Modify
Sections/card-product.liquid: OpenSections/card-product.liquid. Find the main{%- if card_product.featured_media -%}block that handles image display. You'll add an{%- else -%}branch to render your placeholder:{%- if card_product.featured_media -%} {%- comment -%} existing Dawn featured_media image code stays here {%- endcomment -%} {%- else -%}{%- endif -%}
Quick Tip: @gladfulspirit discovered that asset names with hyphens (like
coming-soon.png) can cause errors. Stick to names without hyphens, likecomingsoon.png, for smoother sailing.
Step 2: Correcting the Product Title Position
Now that your placeholder is visible, let's move that title. The issue stems from Dawn's default behavior for StandardCardNoMedia, which places the title within the media's visual space. We want it consistently in the card__information section, below the image.
-
Comment Out the Misplaced Title: In
Sections/card-product.liquid, locate theblock that specifically renders the product title whencard_product.featured_mediaisnull. This is the block causing the overlap:{{ card_product.title | escape }}
Comment out this entire block:
{%- comment -%}{{ card_product.title | escape }}
{%- endcomment -%} -
Ensure Universal Title Display in
card__information: Next, find thesection further down incard-product.liquid. This is where titles should be. You'll likely see anblock for the product title here, but it might be wrapped in a condition like{%- if card_product.featured_media -%}. Remove this condition to make the title display universally:{{ card_product.title | escape }}
{# ... other card info like price, vendor ... #}By removing that
ifcondition, your product title will now consistently appear in the correctcard__informationsection, whether it has a featured image or uses your placeholder.A Quick Note on CSS
@suyash1 wisely mentioned that CSS could also influence title positioning. While the Liquid changes address the structural placement, if you encounter any stubborn visual quirks, a quick check with your browser's developer tools can help pinpoint any overriding CSS rules. But for most cases, the Liquid adjustments above will get you where you need to be.
And there you have it – a clean, professional look for all your product cards, regardless of image availability! It's these kinds of community-driven solutions that make the Shopify ecosystem so great. Just remember to always duplicate your theme before diving into code edits. Happy selling!