Files
orion/docs/getting-started/cms-quick-start.md
Samir Boulahtit e9253fbd84 refactor: rename Wizamart to Orion across entire codebase
Replace all ~1,086 occurrences of Wizamart/wizamart/WIZAMART/WizaMart
with Orion/orion/ORION across 184 files. This includes database
identifiers, email addresses, domain references, R2 bucket names,
DNS prefixes, encryption salt, Celery app name, config defaults,
Docker configs, CI configs, documentation, seed data, and templates.

Renames homepage-wizamart.html template to homepage-orion.html.
Fixes duplicate file_pattern key in api.yaml architecture rule.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 16:46:56 +01:00

217 lines
4.8 KiB
Markdown

# CMS Quick Start Guide
A quick reference for setting up and using the Content Management System.
## What is the CMS?
The CMS allows you to manage static content pages (About, Contact, FAQ, etc.) with:
- **Platform defaults** - Base content for all stores
- **Store overrides** - Custom content per store
- **Automatic fallback** - Stores inherit platform defaults unless overridden
## Quick Setup
### 1. Create Default Content Pages
After running migrations, create the default CMS pages:
```bash
make create-cms-defaults
```
This creates 7 platform default pages:
- About Us (`/about`)
- Contact Us (`/contact`)
- FAQ (`/faq`)
- Shipping Policy (`/shipping`)
- Return & Refund Policy (`/returns`)
- Privacy Policy (`/privacy`)
- Terms of Service (`/terms`)
### 2. Full Database Setup
For a complete setup including CMS:
```bash
make db-setup
# Runs: migrations → admin user → CMS pages → demo data
```
## Accessing Pages
All CMS pages are accessible on your shop frontend:
```
# For domain/subdomain access
https://orion.shop/about
https://fashionhub.store/contact
# For path-based access
http://localhost:8000/store/orion/faq
http://localhost:8000/stores/fashionhub/shipping
```
## Managing Content
### Via Admin Panel
1. Log in to admin panel: `/admin/login`
2. Navigate to **Content Pages** section
3. Create/edit platform defaults (visible to all stores)
### Via Store Dashboard
1. Log in to store dashboard: `/store/{code}/login`
2. Navigate to **Content Pages** section
3. View platform defaults
4. Create store-specific overrides
### Via API
**Admin - Create Platform Default:**
```bash
POST /api/v1/admin/content-pages/platform
{
"slug": "about",
"title": "About Us",
"content": "<p>...</p>",
"is_published": true,
"show_in_footer": true
}
```
**Store - Create Override:**
```bash
POST /api/v1/store/{store_code}/content-pages
{
"slug": "about",
"title": "About Our Store",
"content": "<p>Custom content...</p>",
"is_published": true
}
```
**Public - Retrieve Page:**
```bash
GET /api/v1/shop/content-pages/{slug}
```
## How the Two-Tier System Works
### Lookup Priority
When a customer visits `/about`:
1. **Check store override** - Does this store have a custom "about" page?
2. **Fallback to platform** - If not, use the platform default "about" page
3. **404 if neither** - Return 404 if no page exists
### Example Scenario
**Platform Default:**
- Slug: `about`
- Title: "About Our Platform"
- Content: Generic platform description
**Orion Override:**
- Slug: `about`
- Title: "About Orion"
- Content: Orion-specific content
**Result:**
- `orion.shop/about` → Shows Orion custom version
- `fashionhub.store/about` → Shows platform default (no override)
## Footer Navigation
Pages marked with `show_in_footer: true` automatically appear in the shop footer:
```html
<!-- Footer automatically loads from database -->
<footer>
<div>Quick Links</div>
<ul>
<li><a href="/products">Products</a></li>
<li><a href="/about">About Us</a></li> <!-- From CMS -->
<li><a href="/contact">Contact</a></li> <!-- From CMS -->
</ul>
</footer>
```
## Common Tasks
### Add a New Default Page
```bash
python -c "
from app.core.database import SessionLocal
from app.services.content_page_service import content_page_service
db = SessionLocal()
content_page_service.create_page(
db,
slug='careers',
title='Careers',
content='<h1>Join Our Team</h1>...',
is_published=True,
show_in_footer=True
)
db.close()
"
```
### Create Store Override
Via store API or dashboard - stores can override any platform default by creating a page with the same slug.
### Update Platform Default
Via admin panel or API - updates affect all stores who haven't created an override.
## Re-running the Script
The script is **idempotent** - safe to run multiple times:
```bash
make create-cms-defaults
# Output: "Skipped: About Us (/about) - already exists"
```
Existing pages are never overwritten.
## Documentation
For complete CMS documentation, see:
- [CMS Feature Documentation](../features/content-management-system.md)
- [CMS Implementation Guide](../features/cms-implementation-guide.md)
- [Database Seeder Guide](../development/database-seeder/database-seeder-documentation.md)
## Troubleshooting
### Pages not showing in footer
Check `show_in_footer` flag:
```sql
SELECT slug, title, show_in_footer FROM content_pages WHERE store_id IS NULL;
```
### Store override not working
Verify slug matches exactly:
```sql
SELECT store_id, slug, title FROM content_pages WHERE slug = 'about';
```
### 404 on content pages
1. Check page is published: `is_published = true`
2. Verify migration was applied: `make migrate-status`
3. Run CMS defaults: `make create-cms-defaults`
## Next Steps
- Customize default content via admin panel
- Create store-specific overrides
- Add new custom pages as needed
- Update footer navigation preferences