Malachyte Portal/Product Listing Pages

Banners & Content

How to inject promotional banners and inline content into Product Listing Pages

The Banner & Inline Content Injection system allows non-engineering teams to inject promotional or informational banners into the PLP grid without code changes or theme redeploys.

Banners are managed through Shopify MetaObjects, providing merchant self-serve control with declarative configuration.


MetaObject Schema: plp_banner

Banners are defined using the plp_banner MetaObject type in Shopify.

FieldTypeDescription
namestringInternal identifier for the banner
image_urlstringBanner visual asset URL
positionintegerGrid or row index for placement
collection_handlestring / referenceGoverning collection association
whole_rowbooleanSpan behavior (full row vs single slot)

[!NOTE] MetaObjects are created and managed in Shopify. Users cannot edit MetaObjects directly in the Malachyte Portal. The Portal associates existing MetaObjects with collections.


Single Card Banner

When whole_row = false:

  • Occupies one product slot in the grid
  • Treated as a pseudo-product
  • Grid alignment remains unchanged
  • Useful for promotional cards that blend with products

Full Row Banner

When whole_row = true:

  • Spans entire grid width
  • Injected between product rows
  • Useful for campaign messaging, category headers, or promotional strips

Position Alignment

[!IMPORTANT] Positions reference the absolute dataset index of the collection, not the visible page index. This ensures consistent positioning regardless of pagination or infinite scroll state.

Position Examples

Position ValuePlacement
1Before the first product
5After the fourth product
13After the twelfth product

Creating Banners

Step 1: Create the MetaObject in Shopify

  1. Navigate to Settings > Custom Data > MetaObjects in Shopify Admin
  2. Create a new MetaObject using the plp_banner schema
  3. Fill in the required fields:
    • name — A recognizable internal identifier
    • image_url — URL to your banner asset
    • position — Where the banner should appear
    • collection_handle — Which collection this banner belongs to
    • whole_row — Whether to span the full grid width

Step 2: Associate in the Portal

  1. Navigate to the PLP section in the Malachyte Portal
  2. Select the target collection
  3. View associated banners in the configuration page
  4. Banners automatically appear based on their collection_handle value

Why MetaObjects?

Using Shopify MetaObjects for banner management provides several advantages:

BenefitDescription
Merchant self-serveMarketing teams can create banners without developer involvement
No theme redeploysBanner changes take effect without code deployments
Multiple formatsSupport for various banner sizes and layouts
Scales across collectionsOne system works for all PLPs
Declarative configurationClear, structured data model

Frontend Integration

When returning a collection to the frontend, an API call joins MetaObjects and collections by ID so that banners can be rendered alongside products.

The rendering flow:

  1. Fetch collection products with merchandising rules applied
  2. Query associated plp_banner MetaObjects by collection_handle
  3. Inject banners at their designated positions
  4. Render the combined product + banner grid

Best Practices

  • Keep banners visually consistent with your product grid styling
  • Use high-quality images that scale well across devices
  • Consider mobile viewports — full-row banners should be responsive

Positioning Strategy

  • Early positions (1-5) for high-priority campaign content
  • Mid-grid positions for category storytelling
  • Strategic spacing — avoid clustering multiple banners together

Content Guidelines

  • Clear call-to-action if the banner is clickable
  • Seasonal relevance — update banners for campaigns and promotions
  • Performance tracking — use the Attribution module to measure banner effectiveness