Skip to content

Multi-layout templates with dynamic themes

Let's consider two examples: a product launch site campaign and a regional email campaign for seasonal allergy medication.

Product launch site campaign

This example demonstrates a multi-layout template for launching a new medication GlucoBalance with different versions for healthcare providers and patients.

Directory structure

bash
glucobalance-launch/
├─.ewizard/
  └─settings.json
├─common/
  ├─assets/
  ├─images/
  ├─product-photo.png
  ├─clinical-graph.svg
  └─patient-lifestyle.jpg
  └─fonts/
  └─blocks-library/
     ├─blocks.json
     ├─blocks-themes.json
     ├─header-block/
     ├─hero-block/
     ├─features-block/
     ├─dosing-block/
     └─footer-block/
├─layouts/
  ├─hcp/
  ├─.ewizard/
  ├─common/
  └─blocks-library/
     ├─blocks.json
     └─blocks-themes.json
  ├─themes/
  ├─medical-blue/
  ├─blocks-icons/
  ├─scss/
  ├─_variables.scss
  └─main.scss
  └─assets/
  └─themes.json
  ├─App.vue
  └─settings.json
  └─patient/
     ├─.ewizard/
     ├─common/
  └─blocks-library/
     ├─blocks.json
     └─blocks-themes.json
     ├─themes/
  ├─friendly-teal/
  ├─blocks-icons/
  ├─scss/
  ├─_variables.scss
  └─main.scss
  └─assets/
  └─themes.json
     ├─App.vue
     └─settings.json
├─themes/
  ├─medical-blue/
  ├─friendly-teal/
  └─themes.json
├─App.vue
├─package.json
└─settings.json

Configuration files

Master template settings:

json
// settings.json (root)
{
  "name": "GlucoBalance Launch Campaign",
  "version": "1.0.0",
  "theme": {
    "current": "medical-blue"
  },
  "path": {
    "layouts": "layouts"
  }
}
  • Layout configuration
json
// layouts/hcp/settings.json
{
  "name": "GlucoBalance HCP Materials",
  "theme": {
    "current": "medical-blue"
  }
}
  • Available blocks
json
// layouts/hcp/common/blocks-library/blocks.json
{
  "components": [
    { "id": "header-block" },
    { "id": "hero-block" },
    { "id": "clinical-evidence-block" },
    { "id": "dosing-block" },
    { "id": "safety-block" },
    { "id": "footer-block" }
  ]
}
  • Theme structure
json
// layouts/hcp/common/blocks-library/blocks-themes.json
{
  "themes": {
    "medical-blue": {
      "blocks": [
        {
          "id": "header-block",
          "name": "Header with HCP Portal",
          "icon": {
            "icon": "themes/medical-blue/blocks-icons/header-block/icon.png"
          }
        },
        {
          "id": "hero-block",
          "name": "Clinical Overview",
          "icon": {
            "icon": "themes/medical-blue/blocks-icons/hero-block/icon.png"
          }
        },
        {
          "id": "clinical-evidence-block",
          "name": "Clinical Evidence",
          "icon": {
            "icon": "themes/medical-blue/blocks-icons/clinical-evidence-block/icon.png"
          }
        },
        {
          "id": "dosing-block",
          "name": "Dosing Guide",
          "icon": {
            "icon": "themes/medical-blue/blocks-icons/dosing-block/icon.png"
          }
        },
        {
          "id": "safety-block",
          "name": "Safety Information",
          "icon": {
            "icon": "themes/medical-blue/blocks-icons/safety-block/icon.png"
          }
        },
        {
          "id": "footer-block",
          "name": "Medical References Footer",
          "icon": {
            "icon": "themes/medical-blue/blocks-icons/footer-block/icon.png"
          }
        }
      ]
    }
  }
}
  • Theme dependencies
json
// layouts/hcp/themes/themes.json
{
  "themes": [
    {
      "id": "medical-blue",
      "name": "Medical Professional",
      "dependencies": {
        "brand": ["medipharm"]
      }
    }
  ]
}

Build the project

shell
wiz dev --layout hcp # Build the HCP site
wiz dev --layout patient # Build the patient site
wiz archive --layout hcp patient # Package both layouts for eWizard Library

Regional email campaign for seasonal allergy medication

This example demonstrates a multi-layout email template for the AllerClear seasonal allergy medication with variations for different regions and seasons.

Directory structure

bash
allerclear-email-campaign/
├─.ewizard/
  └─settings.json
├─common/
  ├─assets/
  ├─images/
  ├─product-bottle.png
  ├─spring-pollen.jpg
  ├─fall-pollen.jpg
  └─logo.svg
  └─fonts/
  └─blocks-library/
     ├─blocks.json
     ├─blocks-themes.json
     ├─email-header/
     ├─hero-banner/
     ├─product-info/
     ├─testimonial/
     ├─dosage-info/
     ├─cta-button/
     └─email-footer/
├─layouts/
  ├─spring-northeast/
  ├─common/
  └─blocks-library/
     ├─blocks.json
     └─blocks-themes.json
  ├─themes/
  ├─spring-theme/
  ├─blocks-icons/
  ├─scss/
  └─assets/
  └─themes.json
  ├─App.vue
  └─settings.json
  ├─spring-southwest/
  ├─common/
  └─blocks-library/
     ├─blocks.json
     └─blocks-themes.json
  ├─themes/
  ├─spring-theme/
  └─themes.json
  ├─App.vue
  └─settings.json
  ├─fall-northeast/
  ├─common/
  └─blocks-library/
     ├─blocks.json
     └─blocks-themes.json
  ├─themes/
  ├─fall-theme/
  └─themes.json
  ├─App.vue
  └─settings.json
  └─fall-southwest/
     ├─common/
  └─blocks-library/
     ├─blocks.json
     └─blocks-themes.json
     ├─themes/
  ├─fall-theme/
  └─themes.json
     ├─App.vue
     └─settings.json
├─themes/
  ├─spring-theme/
  ├─fall-theme/
  └─themes.json
├─App.vue
├─package.json
└─settings.json

Configuration files

Master template settings:

json
// settings.json (root)
{
  "name": "AllerClear Seasonal Email Campaign",
  "version": "1.0.0",
  "theme": {
    "current": "spring-theme"
  },
  "path": {
    "layouts": "layouts"
  }
}
  • Layout configuration
json
// layouts/spring-northeast/settings.json
{
  "name": "AllerClear Northeast Spring Campaign",
  "theme": {
    "current": "spring-theme"
  }
}
  • Available blocks
json
// layouts/spring-northeast/common/blocks-library/blocks.json
{
  "components": [
    { "id": "email-header" },
    { "id": "hero-banner" },
    { "id": "northeast-allergens-block" },
    { "id": "product-info" },
    { "id": "dosage-info" },
    { "id": "cta-button" },
    { "id": "email-footer" }
  ]
}
  • Theme structure
json
// layouts/spring-northeast/common/blocks-library/blocks-themes.json
{
  "themes": {
    "spring-theme": {
      "blocks": [
        {
          "id": "email-header",
          "name": "AllerClear Header",
          "icon": {
            "icon": "themes/spring-theme/blocks-icons/email-header/icon.png"
          }
        },
        {
          "id": "hero-banner",
          "name": "Spring NE Hero",
          "icon": {
            "icon": "themes/spring-theme/blocks-icons/hero-banner/icon.png"
          }
        },
        {
          "id": "northeast-allergens-block",
          "name": "Northeast Allergens",
          "icon": {
            "icon": "themes/spring-theme/blocks-icons/northeast-allergens-block/icon.png"
          }
        },
        {
          "id": "product-info",
          "name": "Product Benefits",
          "icon": {
            "icon": "themes/spring-theme/blocks-icons/product-info/icon.png"
          }
        },
        {
          "id": "dosage-info",
          "name": "Dosage Information",
          "icon": {
            "icon": "themes/spring-theme/blocks-icons/dosage-info/icon.png"
          }
        },
        {
          "id": "cta-button",
          "name": "Spring Offer Button",
          "icon": {
            "icon": "themes/spring-theme/blocks-icons/cta-button/icon.png"
          }
        },
        {
          "id": "email-footer",
          "name": "Northeast Pharmacy Footer",
          "icon": {
            "icon": "themes/spring-theme/blocks-icons/email-footer/icon.png"
          }
        }
      ]
    }
  }
}
  • Theme dependencies
json
// layouts/spring-northeast/themes/themes.json
{
  "themes": [
    {
      "id": "spring-theme",
      "name": "Spring Allergy Season",
      "dependencies": {
        "brand": ["novapharm"]
      }
    }
  ]
}

Build project

shell
wiz dev --layout spring-northeast # Build the spring northwest theme
wiz dev --layout spring-southwest # Build the spring southwest theme
wiz dev --layout fall-northeast # Build the fall northeast theme
wiz dev --layout fall-southwest # Build the fall southwest theme
wiz archive --layout spring-northeast fall-northeast spring-southwest fall southwest # Package layouts for eWizard Library