Appearance
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.jsonConfiguration 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 LibraryRegional 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.jsonConfiguration 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