Files
homaroma/ADMIN_MCP_SECTION_GUIDE.md
T
2026-06-18 18:42:39 -04:00

6.1 KiB

HomAroma Admin Section Guide

This guide explains the dynamic page blocks available in the Page Builder and what each block contains.

Field Shape Legend

  • localized string = plain text or { th, en, ja, zh, vi, ko }
  • plain string = one string only
  • optional = can be omitted

Available Blocks

HERO

  • Purpose: Main hero banner for a page
  • Contains:
    • tagline localized string
    • title localized string
    • description localized string
    • imageUrl plain string
    • buttonText localized string
    • buttonLink plain string
  • Best for: Landing pages, featured campaigns, page introductions

BANNER

  • Purpose: Image banner with optional CTA
  • Contains:
    • imageUrl plain string
    • linkUrl plain string
    • title localized string optional
    • description localized string optional
    • buttonText localized string optional

TEXT

  • Purpose: Simple content block
  • Contains:
    • title localized string optional
    • content localized string
    • textAlign plain string optional: left, center, right

ANNOUNCEMENT_BAR

  • Purpose: Rotating announcement strip
  • Contains:
    • slides array of localized strings
    • backgroundColor plain string optional
    • textColor plain string optional
    • speed number optional

NEWSLETTER

  • Purpose: Newsletter signup panel
  • Contains:
    • title localized string
    • description localized string
    • buttonText localized string
    • placeholderText plain string optional
    • showPrivacyCheckbox boolean
    • privacyText plain string optional

EDITORIAL_TILE

  • Purpose: Side-by-side editorial story tile
  • Contains:
    • title localized string
    • description localized string
    • imageUrl plain string
    • imagePosition plain string: left or right
    • buttonText plain string optional
    • buttonLink plain string optional
    • backgroundColor plain string optional
    • textColor plain string optional
  • Purpose: Multi-slide editorial storytelling block
  • Contains:
    • title localized string
    • slides array of:
      • category localized string
      • title localized string
      • description localized string
      • imageUrl plain string
      • buttonText plain string optional
      • buttonLink plain string optional

PRODUCTS

  • Purpose: Product list/grid section
  • Contains:
    • title localized string
    • subtitle localized string optional
    • type plain string: featured, scent, or custom
    • scentId number optional
    • productIds number array optional
    • limit number optional
    • layout plain string optional: grid or carousel
    • enableQuickShop boolean optional

CATEGORIES

  • Purpose: Category showcase block
  • Contains:
    • title localized string
    • subtitle localized string optional
    • categoryIds number array optional

HERO_ARTICLE

  • Purpose: Editorial hero/article header
  • Contains:
    • title localized string
    • subtitle localized string optional
    • author localized string optional
    • category localized string optional
    • publishDate plain string optional
    • date plain string optional
    • imageUrl plain string
    • backgroundImageUrl plain string optional
    • overlayColor plain string optional
  • Notes:
    • The image is set by entering an image URL in imageUrl
    • In the Admin UI, the image picker stores the URL for you

RICH_TEXT

  • Purpose: Flexible HTML/text content block
  • Contains:
    • title localized string optional
    • content localized string required
  • Notes:
    • HTML is allowed
    • Use language tabs to translate each version

SCENT_NOTES_BREAKDOWN

  • Purpose: Fragrance layer breakdown
  • Contains:
    • title localized string optional
    • description localized string optional
    • topNotes array of strings or localized string objects
    • heartNotes array of strings or localized string objects
    • middleNotes array of strings or localized string objects
    • baseNotes array of strings or localized string objects
  • Notes:
    • heartNotes and middleNotes are mirrored together by the backend

QUOTE_CALLOUT

  • Purpose: Highlighted quote block
  • Contains:
    • quote localized string required
    • author localized string optional
    • role localized string optional
  • Purpose: Featured product carousel
  • Contains:
    • title localized string optional
    • description localized string optional
    • collectionId plain string optional
    • limit number optional
    • showPrice boolean optional
    • showAddToCart boolean optional
    • products optional explicit product list
  • Notes:
    • If products is omitted, the backend can auto-populate products on read-back

ACCORDION

  • Purpose: FAQ-style expandable block
  • Contains:
    • title localized string optional
    • categories required array
      • each category has:
        • name localized string
        • icon plain string optional
        • questions required array
          • each question has:
            • q localized string
            • a localized string

CONTACT_INFO

  • Purpose: Contact details block
  • Contains:
    • title localized string optional
    • address localized string required
    • email plain string required
    • line plain string required
    • hours localized string required

CONTACT_FORM

  • Purpose: Contact form header block
  • Contains:
    • title localized string optional
    • subtitle localized string optional
  • Notes:
    • This block has no extra fields beyond title and subtitle
  1. Create or open a page.
  2. Add blocks in the order you want them rendered.
  3. Fill localized fields per language.
  4. Use the media picker or image URL fields for image-based blocks.
  5. Save the block, then verify the rendered page.

Quick Tips

  • Use HERO_ARTICLE for editorial-style stories.
  • Use RICH_TEXT for long-form content.
  • Use SCENT_NOTES_BREAKDOWN for fragrance layer storytelling.
  • Use PRODUCT_CAROUSEL when you want featured products without manually listing each one.
  • Use ACCORDION for FAQ content.
  • Use CONTACT_INFO and CONTACT_FORM together for contact pages.