168 lines
4.5 KiB
Markdown
168 lines
4.5 KiB
Markdown
|
|
# CMS Content Model
|
|||
|
|
|
|||
|
|
Selected platform: Payload CMS.
|
|||
|
|
|
|||
|
|
## Locales
|
|||
|
|
- `en` (English)
|
|||
|
|
- `zh` (简体中文)
|
|||
|
|
|
|||
|
|
Every content type supports both locales. Editors can publish locales independently.
|
|||
|
|
|
|||
|
|
## Content Types
|
|||
|
|
|
|||
|
|
### 1. Product
|
|||
|
|
- `slug` (unique per locale)
|
|||
|
|
- `model` (text)
|
|||
|
|
- `template` (select; options sourced from valid directories under `webroot/Products/`)
|
|||
|
|
- `tagline` (short text)
|
|||
|
|
- `summary` (rich text)
|
|||
|
|
- `heroImage` (media)
|
|||
|
|
- `gallery` (media list)
|
|||
|
|
- `keyFeatures` (list of { title, description, icon / image })
|
|||
|
|
- `technologyHighlights` (rich text blocks)
|
|||
|
|
- `specifications` (grouped list: group name + items)
|
|||
|
|
- `firmware` (group)
|
|||
|
|
- `showOnProductPage` (boolean; controls visibility on the product detail page)
|
|||
|
|
- `showInDownloadsCenter` (boolean; controls visibility in the site-wide Downloads center)
|
|||
|
|
- `items` (reference list: Download restricted to `type = firmware`)
|
|||
|
|
- `displayLabel` (optional text override)
|
|||
|
|
- `downloads` (reference: Download)
|
|||
|
|
- `videos` (reference: ProductVideo)
|
|||
|
|
- `externalReviews` (reference: ProductReview)
|
|||
|
|
- `relatedProducts` (reference list: Product)
|
|||
|
|
- `seo` (title, description, OG image)
|
|||
|
|
|
|||
|
|
Frontend rule:
|
|||
|
|
- Product detail pages must render related downloads, videos, and reviews below the template-owned middle content region.
|
|||
|
|
|
|||
|
|
### 2. Product Category
|
|||
|
|
- `slug`
|
|||
|
|
- `name`
|
|||
|
|
- `description`
|
|||
|
|
- `order`
|
|||
|
|
- `heroImage`
|
|||
|
|
|
|||
|
|
### 3. Homepage
|
|||
|
|
Singleton.
|
|||
|
|
- `heroScene` (image or video, headline, supporting line, primary CTA, secondary CTA)
|
|||
|
|
- `featuredProducts` (exactly 4 references to Product)
|
|||
|
|
- `statement` (short rich text)
|
|||
|
|
- `supportShortcuts` (list of 3–4 links)
|
|||
|
|
- `newsHighlights` (optional list of up to 3 news references)
|
|||
|
|
- `seo`
|
|||
|
|
|
|||
|
|
### 4. Support Page
|
|||
|
|
Singleton.
|
|||
|
|
- `intro`
|
|||
|
|
- `primaryEntries` (FAQ, Warranty, Contact — each with short blurb)
|
|||
|
|
- `secondaryEntries` (Downloads, Manuals, Firmware — each with short blurb)
|
|||
|
|
- `seo`
|
|||
|
|
|
|||
|
|
### 5. FAQ
|
|||
|
|
- `group` (e.g., Setup, Streaming, Hardware)
|
|||
|
|
- `question`
|
|||
|
|
- `answer` (rich text)
|
|||
|
|
- `relatedProducts` (optional references)
|
|||
|
|
- `order`
|
|||
|
|
|
|||
|
|
### 6. Warranty
|
|||
|
|
Singleton.
|
|||
|
|
- `intro`
|
|||
|
|
- `policyBody` (rich text)
|
|||
|
|
- `registrationCta` (optional link)
|
|||
|
|
- `regionalNotes` (optional blocks per region)
|
|||
|
|
- `seo`
|
|||
|
|
|
|||
|
|
### 7. Contact
|
|||
|
|
Singleton.
|
|||
|
|
- `intro`
|
|||
|
|
- `regions` (list of { region, email, phone, address, hours })
|
|||
|
|
- `formEnabled` (boolean)
|
|||
|
|
- `seo`
|
|||
|
|
|
|||
|
|
### 8. Download
|
|||
|
|
- `title`
|
|||
|
|
- `type` (firmware | manual | software | other)
|
|||
|
|
- `product` (reference)
|
|||
|
|
- `version`
|
|||
|
|
- `releaseDate`
|
|||
|
|
- `file` (media)
|
|||
|
|
- `notes` (rich text)
|
|||
|
|
|
|||
|
|
### 8a. Product Video
|
|||
|
|
- `title`
|
|||
|
|
- `product` (reference)
|
|||
|
|
- `provider` (youtube | vimeo | bilibili | other)
|
|||
|
|
- `videoUrl`
|
|||
|
|
- `thumbnail` (optional media)
|
|||
|
|
- `description` (rich text)
|
|||
|
|
|
|||
|
|
### 8b. Product Review
|
|||
|
|
- `title`
|
|||
|
|
- `product` (reference)
|
|||
|
|
- `sourceName`
|
|||
|
|
- `reviewUrl`
|
|||
|
|
- `thumbnail` (optional media)
|
|||
|
|
- `excerpt`
|
|||
|
|
|
|||
|
|
### 9. About
|
|||
|
|
Singleton.
|
|||
|
|
- `intro`
|
|||
|
|
- `brandStory` (rich text)
|
|||
|
|
- `philosophy` (rich text)
|
|||
|
|
- `milestones` (list)
|
|||
|
|
- `seo`
|
|||
|
|
|
|||
|
|
### 10. Dealer
|
|||
|
|
- `region`
|
|||
|
|
- `country`
|
|||
|
|
- `name`
|
|||
|
|
- `website`
|
|||
|
|
- `email`
|
|||
|
|
- `phone`
|
|||
|
|
- `address`
|
|||
|
|
|
|||
|
|
### 11. News Article
|
|||
|
|
- `slug`
|
|||
|
|
- `category` (announcement | press | review | event)
|
|||
|
|
- `title`
|
|||
|
|
- `excerpt`
|
|||
|
|
- `body` (rich text)
|
|||
|
|
- `coverImage`
|
|||
|
|
- `publishedAt`
|
|||
|
|
- `relatedProducts` (optional)
|
|||
|
|
- `seo`
|
|||
|
|
|
|||
|
|
### 12. Global Settings
|
|||
|
|
Singleton.
|
|||
|
|
- `siteName`
|
|||
|
|
- `logo`
|
|||
|
|
- `navigation` (structured)
|
|||
|
|
- `footer` (structured)
|
|||
|
|
- `socialLinks`
|
|||
|
|
- `defaultSeo`
|
|||
|
|
- `redirects` (list of { from, to, statusCode })
|
|||
|
|
|
|||
|
|
## Editorial Workflow
|
|||
|
|
- Draft → Review → Published
|
|||
|
|
- Preview URLs for each content type
|
|||
|
|
- Scheduled publishing for News
|
|||
|
|
- Role-based access for editors, reviewers, and admins
|
|||
|
|
|
|||
|
|
## Payload Implementation Notes
|
|||
|
|
- Use Payload `globals` for Homepage, Support, Warranty, Contact, About, and Global Settings.
|
|||
|
|
- Use Payload `collections` for Products, Product Categories, FAQ, Downloads, Product Videos, Product Reviews, Dealers, and News Articles.
|
|||
|
|
- Enable localization at the field level where content differs by locale.
|
|||
|
|
- Store redirect rules in Global Settings or a dedicated Redirect collection.
|
|||
|
|
- Use upload collections for image, video, and file assets.
|
|||
|
|
- The Product `firmware.showOnProductPage` and `firmware.showInDownloadsCenter` toggles are independent. Each controls visibility in its surface only; editors can enable either, both, or neither.
|
|||
|
|
|
|||
|
|
## Localization Rules
|
|||
|
|
- Each localized field is edited independently.
|
|||
|
|
- Missing translations are allowed and fall back gracefully in the UI.
|
|||
|
|
- Structured references (products, downloads) resolve per current locale.
|
|||
|
|
|
|||
|
|
## Media
|
|||
|
|
- All images uploaded once, cropped per aspect ratio in CMS.
|
|||
|
|
- Video uploads capped; prefer external CDN or provider integration for hero video.
|