Mastering Missing Images: How to Add Placeholder Images & Fix Product Titles in Shopify's Dawn Theme

Hey there, fellow store owners! It's your Shopify expert here, diving into a really common and sometimes frustrating challenge that pops up in our community discussions: what do you do when a product doesn't have an image yet? You know, those moments when you're still building out a collection, or maybe a supplier hasn't sent over the final product shots. Leaving a blank space can look a bit… well, blank! And sometimes, the theme's default behavior isn't quite what you want.

I recently stumbled upon a great thread started by gladfulspirit in the Shopify community, titled "In Dawn theme use a placeholder image for the StandardCardNoMedia." It really hit home for a lot of us using the popular Dawn theme. The core of the issue was twofold: first, how to display a nice 'coming soon' or placeholder image instead of just nothing, and second, how to make sure the product title shows up below that image, just like a normal product card, rather than being awkwardly placed on top or obscured.

It's a fantastic example of the community coming together, with folks like Moeed and suyash1 jumping in to help iron out the kinks. Let's break down how you can implement a robust solution for your own Dawn theme store.

Adding Your 'Coming Soon' Placeholder Image

The first step, and honestly, the most straightforward one, is getting that placeholder image to appear. The Dawn theme has a file called card-product.liquid which dictates how your product cards look across your store – on collection pages, featured product sections, and so on.

Here's how Moeed laid out the initial fix:

  1. Upload Your Placeholder Image: First things first, you need to add your 'coming soon' or placeholder image to your theme's assets.
    • Go to your Shopify Admin > Online Store > Themes.
    • Find your Dawn theme and click "Actions" > "Edit code."
    • Under the "Assets" folder, click "Add a new asset" and upload your image.
    • Pro Tip from the Thread: gladfulspirit found that a hyphen in the filename (e.g., coming-soon.png) caused an issue, while removing it (comingsoon.png) worked perfectly. So, I'd recommend naming your file something like comingsoon.png or placeholder.jpg to be safe!
  2. Modify card-product.liquid: Now, let's tell Dawn to use this image when a product has no media.
    • In the "Edit code" section, open the file sections/card-product.liquid (or it might be in snippets/card-product.liquid depending on your theme version, but usually it's a section).
    • You're looking for the block that handles media. Dawn wraps the primary image display in an {%- if card_product.featured_media -%} statement. We need to add an {%- else -%} branch to this.
    • Find this general structure (the exact lines might vary slightly, but the logic is the same):
      {%- if card_product.featured_media -%}
        {%- comment -%} existing Dawn featured_media image code stays here {%- endcomment -%}
      {%- else -%}
        
      {{ card_product.title | escape }}
      {%- endif -%}
    • The critical part here is src="{{ 'comingsoon.png' | asset_url }}", which dynamically pulls your uploaded image. Make sure the filename matches what you uploaded!

This modification ensures that any product without a primary image will now proudly display your chosen placeholder.

Untangling the Product Title & Link Placement

This is where things got a little trickier for gladfulspirit, and it's a common stumbling block. After adding the placeholder, the product title and its link were still appearing inside the image block, obscuring the new placeholder image. suyash1 initially suggested looking at CSS, which is often a good first guess, but the real culprit here was the HTML structure itself.

The problem, as highlighted by the code snippets in the thread, is that the card__heading (which contains the product title and link) was being rendered within the card__media div when there was no featured media. This is a specific behavior for the StandardCardNoMedia style in Dawn. We want that title to be part of the standard card__information section, which usually sits below the image.

Here's how to fix that:

  1. Identify the Problematic Code: In your card-product.liquid file, locate the {%- else -%} block you just added (or modified) for the placeholder image. Inside this else block, you'll likely find a section similar to this, which is responsible for displaying the title and link within the media area when no image is present:
            

    {{ card_product.title | escape }} {%- if card_product.available == false -%} {{- 'products.product.sold_out' | t -}} {%- elsif card_product.compare_at_price > card_product.price and card_product.available -%} {{- 'products.product.on_sale' | t -}} {%- endif -%}

  2. Move/Comment Out the Title Code: The goal is to move this

    block (and its contents, including the tag and any badges) out of the card__media div and into the card__information div. The simplest approach is to comment out or remove this entire

    ...

    section from within the {%- else -%} block of the media.

  3. Place it in the card__information Section: Now, find the
  4. Test Thoroughly: After making these changes, always, always, always preview your theme and check various product cards: those with images, those without, and across different collection pages. This ensures you haven't inadvertently broken anything!

The image provided by gladfulspirit in the thread clearly showed the title overlapping the placeholder, which is exactly what these steps aim to resolve. Getting the structure right is paramount.

It's amazing how a seemingly small detail like a missing product image can impact the overall professional look of your store. Thanks to dedicated community members, we can tackle these challenges head-on and make our Shopify stores shine, no matter what stage our product listings are in. Don't let those blank spots or misplaced titles detract from your brand – a little code adjustment goes a long way!

Share:

Use cases

Explore use cases

Agencies, store owners, enterprise — find the migration path that fits.

Explore use cases