Content Models are the foundation of your curriculum in CurryCMS. A well-designed content model makes content creation intuitive, maintains consistency, and ensures your curriculum can scale as your needs grow.
Before You Begin
You need:
- Admin role in your account
- Clear understanding of your curriculum organization
- List of content types you'll need (Course, Unit, Lesson, etc.)
- Understanding of relationships between content types
What is a Content Model?
A content model defines:
- Block types: What kinds of content exist (Course, Unit, Lesson, Activity)
- Hierarchy rules: Which types can contain which other types
- Fields: What data each type captures
- Constraints: Rules about relationships and nesting
Think of a content model as a template that defines the shape of curricula, not the content itself.
Example:
```
Content Model: K-12 Mathematics
├── Block Type: Course (root)
├── Block Type: Unit (child of Course)
├── Block Type: Lesson (child of Unit)
└── Block Type: Activity (child of Lesson)
Hierarchy Rules:
- Course can contain Units
- Unit can contain Lessons
- Lesson can contain Activities
```
Creating a Content Model
Step 1: Plan Your Content Model
Before creating, answer:
What content types do you need?
- Common: Course, Unit, Lesson, Activity, Assessment
- Specialized: Section, Module, Topic, Exercise, etc.
How do they relate?
- Linear: Course → Unit → Lesson → Activity
- Flexible: Module → Module → Content
- Mixed: Multiple child types at each level
What fields do types need?
- All types: Title, Description
- Lessons: Duration, Learning Objectives
- Activities: Interactivity Type, Materials
Step 2: Create the Content Model
- Navigate to Schema → Content Models in the navigation
- Click Create Content Model
- Fill out the form:
- Name (required): "K-12 Mathematics" or "Course-Unit-Lesson Content Model"
- Description (optional): "Standard 4-level hierarchy for K-12 math curricula"
- Click Create Content Model
After creation:
- You're taken to the content model detail view
- The content model has no block types yet
- You'll add block types and configure hierarchy next
Step 3: Add Block Types
See Managing Block Types for detailed instructions.
Quick overview:
1. Click Add Block Type
2. Enter name and display name
3. Mark as root if it's a top-level type
4. Configure fields
5. Define what it can contain
Step 4: Configure Hierarchy
Define parent-child relationships:
- For each block type, specify Can contain
- Select which types can be children
- This enforces valid content structure
Example configuration:
- Course: Can contain = [Unit]
- Unit: Can contain = [Lesson]
- Lesson: Can contain = [Activity, Assessment]
- Activity: Can contain =
Content Model Design Patterns
Pattern 1: Linear Hierarchy
Structure:
Course → Unit → Lesson → Activity
Best for:
- Traditional sequential curricula
- Clear learning progressions
- Simple to understand
Example use:
- K-12 textbook replacements
- Online courses with fixed structure
- Training programs
Pros:
- Intuitive for authors
- Easy to navigate
- Clear organization
Cons:
- Not flexible
- Can't handle alternative organizations
Pattern 2: Branching Hierarchy
Structure:
Course
└── Unit
├── Lesson
│ ├── Activity
│ └── Assessment
└── Project
Best for:
- Curricula with varied content types
- Including assessments and projects
- Differentiated instruction
Example use:
- College courses
- Professional development
- Blended learning programs
Pros:
- Flexible content types
- Can include multiple assessment types
- Supports varied pedagogy
Cons:
- More complex for authors
- Requires careful planning
Pattern 3: Flexible Self-Nesting
Structure:
Module
├── Module (nested)
│ ├── Module (nested deeper)
│ └── Content
└── Content
Best for:
- Highly variable organization
- Different depths per curriculum
- Adaptive learning paths
Example use:
- OER repositories
- Competency-based education
- Micro-learning platforms
Pros:
- Maximum flexibility
- Authors control depth
- Reusable modules
Cons:
- Can become unmanageable
- Hard to enforce consistency
- Navigation complexity
Pattern 4: Component-Based
Structure:
Section → [Any of: Video, Reading, Quiz, Discussion, Exercise]
Best for:
- Mix-and-match content
- Component libraries
- Authoring flexibility
Example use:
- eLearning platforms
- Modular curriculum design
- Content libraries
Pros:
- High reusability
- Author creativity
- Easy to rearrange
Cons:
- Less prescribed organization
- May lack coherence
- Requires disciplined authoring
Field Planning
Field Strategy
Universal fields (all block types):
- Title
- Description
- Author
- Last Modified
Type-specific fields (varies by type):
- Lessons: Duration, Learning Objectives
- Activities: Materials Needed, Interactivity Level
- Assessments: Question Count, Time Limit
Field Set approach:
- Create "Basic Info" field set with universal fields
- Create specialized field sets per type
- Apply field sets to appropriate block types
See Field Sets for details.
Modifying Existing Content Models
Understanding Impact
Safe changes (no data loss):
- Adding new block types
- Adding new fields
- Adding new "can contain" rules
- Updating names and descriptions
Potentially destructive:
- Removing fields (data deleted)
- Removing block types with content (must delete content first)
- Removing "can contain" rules (can't add new, but existing content unaffected)
Making Safe Changes
- Open the content model
- Navigate to the element to modify
- Make your change
- Save
- Changes apply to all curricula using this content model
Best practice: Test on a cloned content model first.
Handling Destructive Changes
Before removing fields:
1. Check if any content uses the field
2. Export or migrate data if needed
3. Communicate changes to authors
4. Remove the field
Before removing block types:
1. Verify no content blocks of that type exist
2. Delete all content blocks of that type first
3. Then remove the block type from content model
Before removing "can contain" rules:
1. Understand existing content won't be deleted
2. Authors can't add new children of that type
3. Existing children remain valid
Content Model Variants
Advanced feature for creating compatible variations.
What Are Content Model Variants?
A content model variant inherits from a parent content model but can add:
- New block types
- Additional fields
- Extended hierarchy rules
Example:
- Base: Course → Unit → Lesson
- Variant: Course → Unit → Lesson → Lab Activity (adds Lab Activity type)
When to Use Content Model Variants
Use when:
- Regional requirements need additional block types
- Different curricula need specialized fields
- You want to maintain compatibility with parent content model
Don't use when:
- You need a completely different organization
- Changes are minor (add to base content model instead)
- You don't understand inheritance implications
Creating a Content Model Variant
- Open the parent content model
- Click Create Variant
- Enter name and description
- Add your specialized block types/fields
- Save
Result:
- Variant inherits all parent block types
- Variant can add new types
- Curricula can choose base or variant
Cloning Content Models
Create a copy to test changes or create similar content models.
When to Clone
Clone for:
- Testing major changes before applying to production
- Creating a similar content model for different subject
- Starting point for experimentation
Example:
- Clone "K-12 Mathematics" to create "K-12 Science"
- Modify block types and fields for science-specific needs
- Keep math content model unchanged
How to Clone
- Open the content model to clone
- Click Clone Content Model
- Enter new name: "Copy of [Original Name]" or custom name
- Description automatically includes "Cloned from..."
- Click Clone
Result:
- Complete copy with all block types, fields, and hierarchy
- No connection to original (not a variant)
- Modify freely without affecting original
Deleting Content Models
Prerequisites
You cannot delete a content model if:
- Any curricula use it
- Any content model variants inherit from it
How to Delete
- Verify no curricula use the content model
- Delete or migrate all curricula first
- Open the content model
- Click Delete Content Model
- Confirm deletion
⚠️ Warning: Deletion is permanent and cannot be undone.
Alternative to Deletion
Instead of deleting:
- Archive: Rename to "ARCHIVED - [Name]" and document why
- Hide: Mark as inactive (if feature available)
- Migrate: Move curricula to new content model before deleting old
Best Practices
Start Simple
Begin with:
- 3-4 block types maximum
- Linear hierarchy
- Basic fields only
Expand later:
- Add specialized types as needed
- Introduce branching when requirements emerge
- Keep it minimal until you understand needs
Why: Over-complex content models confuse authors and create maintenance burden.
Plan for Growth
Design for:
- Future content types (leave room in hierarchy)
- Field evolution (use field sets for flexibility)
- Variant needs (will regional versions need extensions?)
Example:
- Instead of: Lesson → Activity (rigid)
- Use: Lesson → Activity OR Assessment
Use Descriptive Names
Block type names should be:
- ✅ "Course" not "C"
- ✅ "Learning Activity" not "LA"
- ✅ "Formative Assessment" not "Assessment1"
Why: Authors see these names daily. Clarity matters.
Document Your Design
Content model description should include:
- Purpose and use case
- Block type relationships
- Intended use patterns
- Any special rules or conventions
Example:
```
K-12 Mathematics Content Model
4-level hierarchy for standards-aligned K-12 math curricula.
Block Types:
- Course: Full-year curriculum (e.g., "Grade 3 Math")
- Unit: Multi-week instructional unit
- Lesson: Single class period
- Activity: 10-15 minute engagement
Conventions:
- Units align to 1-3 standards
- Lessons align to specific standards
- Activities for practice, not direct instruction
```
Involve Authors Early
Get feedback from:
- Content authors who will use the structure
- Curriculum directors with requirements
- Subject matter experts
Ask:
- Does this match how you think about content?
- What's missing?
- What seems unnecessary?
Why: Content models designed in isolation often miss real-world needs.
Version Content Model Names
If you expect evolution:
- "K-12 Math Content Model v2"
- "Course Template 2024"
- "Standard Content Model (Revised)"
Why: Makes it clear which version curricula use and when changes happened.
Common Questions
Can I change a curriculum's content model after creation?
No. Content models are locked when curricula are created. To change, create new curriculum with new content model and migrate content manually.
What happens to existing content when I modify a content model?
Adding: New types/fields available immediately
Removing: Existing content unaffected but can't add new blocks of removed types
Deleting fields: Data is lost
How many content models should I have?
Typical:
- 1-3 for most organizations
- One per content domain (Math, Science, ELA)
- Or one universal flexible content model
Avoid: Dozens of nearly-identical content models. Use variants instead.
Can authors see content models?
Authors see block types and fields, not the "content model" abstraction. Admins manage content models; authors use them.
Should I create one content model or many?
One content model when:
- Content organization is similar across subjects
- You want consistency
- Maintenance simplicity is priority
Multiple content models when:
- Subjects have fundamentally different organization
- Requirements vary significantly
- Each content model serves distinct purpose
Can I merge two content models?
No automatic merge. You must:
- Create new combined content model manually
- Migrate curricula one at a time
- Or use one content model and deprecate the other
What if I made a mistake in the content model?
If no curricula exist yet: Delete and recreate
If curricula exist:
- Clone content model to create corrected version
- Create new curricula with corrected content model
- Migrate content manually
Troubleshooting
"Cannot delete content model: curricula exist"
Find and delete or reassign all curricula using this content model first. Use the curricula list filtered by content model.
Changes to content model not appearing in curriculum
Refresh the curriculum page. Some changes require reload to display.
Authors can't add certain content types
Check "Can contain" configuration. The parent block type must explicitly allow that child type.
Fields not showing in block edit form
Verify:
- Field set is assigned to block type
- Field set contains the fields
- Field is not hidden or conditional
Content model list shows outdated information
Clear browser cache or hard refresh (Cmd/Ctrl + Shift + R).
Next Steps
After designing your content model:
- Managing Block Types - Configure individual block types
- Field Sets - Create reusable field sets
- Creating Curricula - Start building content with your content model
Related Documentation:
- Admin Overview - Your administrative capabilities
- Managing Block Types - Configure content types
- Field Sets - Create reusable fields
- Team Management - Manage user roles