We use cookies to make your viewing experience better. By accepting you consent, you agree to our Cookie policy

Accept
Improve your Craft CMS skills

How Far Can Craft CMS Be Customized?

10 min read
Andy Golpys, Co-Founder of MadeByShape

Struggling to fit complex content models into rigid CMS frameworks? Craving more flexibility without endless custom code? This guide dives into Craft CMS, a platform built for limitless customization. Learn how Craft’s intuitive editor and modular architecture can adapt to any content structure. Discover how plugins and templates provide unmatched control for crafting customized experiences.

Craft CMS provides unmatched flexibility and customizability through its modular architecture, intuitive control panel, customizable fields and sections, robust Twig templating engine, and extensive plugin ecosystem. The platform can be tailored to model any content structure and craft experiences for virtually any use case.

Key Features and Benefits of Craft CMS

Intuitive Control Panel

Craft CMS sets itself apart with its incredibly intuitive control panel interface. Rather than presenting users with a dizzying array of configuration options right from the start, Craft embraces the concept of progressive disclosure. Options are nested logically and revealed when needed, allowing users to orient themselves and focus on one task at a time.

The clean, uncluttered UI design aids the user experience tremendously. Icons and graphics help users understand and navigate various admin settings and menus efficiently. Drag and drop interfaces make light work of arranging content, while bulk actions via checkbox selections enable editing multiple items simultaneously.

Key capabilities accessible from the control panel include full content modelling and structure management, editing site settings and configuration files, managing users/groups/permissions, reviewing system reports, and installing/managing plugins. Rather than hiding these crucial functions away in disparate areas, the control panel brings everything together in one user-friendly hub.

Craft also focuses strongly on day-to-day content needs via its intuitive content editing experience. In-line editing options blended with distraction-free fullscreen editing modes allow both quick changes and immersive content creation as needed. A variety of included field types, as well as the ability to create custom fields, enables modelling content in a way that fits specific needs.

Overall, Craft's control panel sets the standard for CMS user experience with its clean, focused and intuitive approach. For site administrators and content editors alike, it allows managing both sites and content efficiently.

Flexible Content Modelling

Craft provides incredible flexibility when it comes to structuring and modelling content via custom fields, field groups, sections and entry types.

The included set of field types covers all common needs like plain text, rich text, numbers, checkboxes, dropdowns and more. Beyond that, creating custom fields with specific validation rules and behaviours is simple for advanced models. Field groups allow bundling related fields and reusing them across different sections.

Sections act as containers for grouping similar entries, with each section getting its own dedicated URL routing and templates. Custom entry types can be defined with different field layouts per type. For example, a blog section could have multiple entry types like articles, reviews, tutorials etc.

This modelling flexibility allows mapping the CMS cleanly to existing content and workflows. Instead of trying to fit content into predefined structures, Craft adapts to particular needs. Modelling feels more like programming, with reusable components and logical abstractions.

For developers, Craft also provides extensibility at the data layer for advanced custom modelling needs. Craft CMS plugins can integrate custom databases, schemas, APIs and more into the CMS.

Whether modelling simple content structures or complex data relationships, Craft provides the flexibility and power needed for both editors and developers.

Robust Plugin Ecosystem

The functionality of Craft CMS can be extended dramatically via its huge collection of plugins. The plugin ecosystem adds capabilities ranging from optimised editorial workflows to headless integrations to advanced programming utilities.

For frontend editing, plugins like Neo and Launchpad add tailored WYSIWYG editing and live preview modes. The SEOmatic plugin provides advanced SEO tools for auto-generating meta tags, sitemaps etc. E-commerce needs are covered by plugins like Craft Commerce for taking payments and managing products.

On the integration side, plugins enable pulling data from external APIs, pushing content to static site generators for headless delivery, and connecting to external databases. Craft can integrate with services like ElasticSearch and Solr for advanced search and queries.

For developers, plugins provide useful utilities like data migrations, environment management and debugging tools. Additional field types, widgets and other extensibility support accelerates theme/plugin development.

The plugin store allows browsing and installing plugins directly within the CMS control panel. With robust documentation and support provided for most plugins, getting up and running is generally smooth and painless. Be sure to keep all plugins updated.

In summary, Craft's extensive plugin ecosystem allows almost endless expansion of its core capabilities. Both site developers and administrators can tap into the collective knowledge and creativity of the developer community to take their projects further through plugin power.

Managing Content Structure in Craft CMS

Sections and Entry Types

Craft CMS allows modelling content structure through the use of Sections and Entry Types. Sections act as overall containers for related content entries, while Entry Types define the specific field layout and modeling within a Section.

For example, a "Blog" section could contain Entry Types for "Article", "Review", "News" etc. Each of those entry types can have different custom fields defined to capture the data needed for that content type. Articles might have fields for main body content, author, images etc. Reviews could have different fields for the product name, rating, pros/cons etc.

This section/entry modeling provides a clean separation between different types of content on a site. Each Section gets its own dedicated URL routing, template and source of entries.

Within the Craft CMS control panel, sections allow easy management of related content. For example, the Blog section would provide an overview of all blog articles, reviews etc. Authors can quickly scan recent entries, make edits and create new entries.

Overall, sections and entry types enable both a logical modelling of content structure for authors, as well as clean underlying architecture for developers. Content models can be tailored to precise needs without cluttering up a monolithic collection of entries.

Custom Fields

A key way Craft provides flexibility for content modelling is through custom fields assigned to entry types.

Craft comes with a robust set of built-in field types like plaintext, rich text, assets, numbers, checkboxes, dropdowns and more. These cover many standard content needs out of the box.

Beyond that, the CMS makes it easy to create completely custom field types tailored to specific needs. This could include fields like colour pickers, sliders, multi-select tags, or advanced fields like entries, categories and relations for modelling complex data.

Fields can then be organised into reusable Field Groups, which can be assigned across any entry types that need them. For example, a core "SEO Fields" group could be reused for all entry types.

Within entry templates, fields are output dynamically based on the entry type. This enables total flexibility to display content however needed, regardless of the underlying structure.

The extensive custom fields and field groups make it possible to model content of any complexity within Craft CMS. No longer must content be squeezed into whatever fixed fields happen to be available.

Categories and Tags

To assist with organising and classifying content, Craft provides both Categories and Tags.

Categories serve as a way to group related content through hierarchical levels - like main categories and sub-categories. For example, Blog Posts could have Categories like "News", "Technology", "Business", "Entertainment" and so on.

Tags offer a complementary way of organising content with non-hierarchical keywords. Blog posts could have numerous Tags reflecting topics, products, people mentioned and more.

The main difference is Categories form a defined taxonomy chosen by the site owner, while Tags are user-generated.

Both Categories and Tags enable new ways to filter and query content:

  • For end users, they provide intuitive navigation for drilling down into content by topic.

  • For content editors, assigning Categories and Tags helps organise entries within the control panel.

  • For developers, taxonomies like Categories and Tags allow building advanced searches, filtered views and more.

By leveraging Categories, Tags and custom fields, Craft CMS enables powerful and flexible organisation of content. Structure can be tailored to both editorial workflows and end-user needs through the CMS modeling capabilities.

Front-end Display with Twig Templating

Outputting Content

One of the most powerful features of Craft CMS is its built-in Twig templating engine for full control over front-end display and output.

Twig provides a robust set of capabilities for outputting content from the CMS on the front-end. Site templates can directly access and display entries, assets, categories, global settings and more with just a few lines of Twig code.

For example, recent blog posts can be output with a {% for %} loop through the blog section entries. Navigation can be built by looping through structure entries or categories. Assets like images can be displayed using their asset variables.

Twig's {% include %} tag allows reusable templating by breaking pages down into modular components and layout blocks. Common elements like headers, footers, sidebars etc. can be included on multiple templates.

Content can also be output using different templates based on entry type, giving complete control for displaying each content model appropriately. For example, blog articles, events and photos can each use their own custom templates.

Twig also provides access to global CMS template variables forsitewide content, settings and more. Variables like craft.app provide access to configuration info. The craft.globalSets variable contains reusable content sets.

Overall, Twig provides a clean, fast and flexible syntax for outputting Craft content to the front-end. Robust CMS template variables combined with reusable modular templating enables crafting front-ends tailored to specific content needs.

Front-end Logic and Control Structures

In addition to display, Twig also provides full logic and control structures for the front-end. This includes things like:

  • If/Else - Show content conditionally based on CMS variables, user rights, entry properties etc.

  • For Loops - Loop through CMS collections like entries, assets, categories for displaying lists.

  • Switches - Branch on multiple conditions vs. If/Else.

  • Operators - Math, concatenation and comparison operators.

  • Filters - Format/transform values like dates, numbers and strings.

Some examples of front-end logic include:

  • Showing certain CMS widgets only for admin users.

  • Displaying entry content based on the entry type.

  • Formatting a date field in 3 different ways based on context.

  • Looping through assets to display an image gallery.

  • Branching on an entry category to show category-specific templates.

This front-end logic allows complete control over display and styling without being limited to back-end CMS constraints. Content can be shaped to the exact needs of each template and context right within Twig.

Advanced CMS sites will leverage a significant amount of front-end logic and processing to craft experiences tailored to their model. The Twig engine empowers this with a robust feature set and minimal syntax.

Templating Best Practices

When leveraging Twig for front-end templating, some best practices include:

  • Break into modular template components for reusability.

  • Use includes, blocks and macros to avoid duplicate code.

  • Employ front-end logic sparingly with clean intent and naming.

  • Avoid complex logic - use Craft's flexible modeling where possible.

  • Comment frequently for ongoing maintainability.

  • Cache expensive queries and objects.

  • Name variables and files semantically for clarity.

  • Validate and escape all outputted user content.

Well-structured Twig templates will be much easier to manage, modify and maintain over the long run. An emphasis on readability, validation and focus will serve both current and future developers well in crafting robust CMS-driven front-ends with Twig.

Extending Functionality with Craft CMS Plugins

First-Party Plugins

Craft CMS comes bundled with a robust set of first-party plugins created and maintained by Pixel & Tonic. These provide additional capabilities ranging from enhanced editing to SEO tools.

Some of the most popular first-party plugins include:

  • SEOmatic - Provides SEO tools like sitemaps, meta tag management, and auto-generated OpenGraph tags.

  • Redactor - Adds a visual WYSIWYG editor for rich text field types.

  • Contact Form - Allows building and managing contact forms with spam protection.

  • Commerce - Enables ecommerce functionality like products, carts, payments etc.

  • Feed Me - Imports content from external feeds like RSS, Atom, JSON.

  • Calendar - Manages events and provides calendar views.

These plugins deliver powerful functionality backed by active support and ongoing development from Pixel & Tonic. They expand Craft's core capabilities while maintaining a cohesive experience.

For any key website needs like SEO, forms, ecommerce etc., checking for a first-party plugin is recommended before looking further.

Third-Party Plugins

Beyond first-party options, Craft also has an extensive library of third-party plugins. These are created by community developers, partners, and digital agencies.

Popular types of third-party plugins include:

  • Editing & Workflow - Additional field types, editor enhancements, workflow tools.

  • Integrations - Headless, migrations, API integrations, webhooks.

  • Commerce - Alternative and advanced ecommerce solutions.

  • Solutions - Specialised functionality like help desks, CRMs, subscriptions.

  • Utilities - Caching, debugging, testing, automation, and more.

Third-party plugins provide an endless array of ways to extend Craft's capabilities. They range from simple utilities to advanced solutions unmatched by any first-party option.

For unique needs, custom developed plugins are also an option. This allows tailoring and optimising to precise requirements.

Managing Plugins

Discovering, installing, updating and configuring plugins is managed directly within Craft's control panel.

The plugin store offers browsing and search for both first and third-party options. One-click install makes it easy to get started with new plugins.

Installed plugins can be updated to stay on top of latest versions, improvements and security patches. Updates only take a single click.

Each plugin gets its own configuration settings and documentation pages. This provides a central hub for managing all of a plugin's settings vs. having to dig through config files manually.

The control panel also displays warnings and errors related to plugins for troubleshooting.

Plugin requirements and dependencies are clearly surfaced before installation.

Overall, Craft's integrated plugin management removes overhead when discovering, installing, configuring and maintaining site plugins. Both developers and content editors can easily leverage plugins to expand capabilities with minimal effort or technical know-how.

Headless Craft CMS

Structured Content Output

In addition to traditional templated websites, Craft also functions excellently as a headless CMS for outputting content as structured data.

Rather than rendering HTML, Craft can output content as JSON or XML feeds accessed via its APIs. This structured content can then be consumed by any front-end application.

Typical use cases involve decoupling the CMS from the front-end display layer. For example, outputting Craft content to feed a React, Vue or Angular app. Or syncing content to a mobile app's backend.

The same flexible content modeling and authoring from Craft is retained. The difference is on the frontend, content is delivered as reusable data vs HTML markup.

Outputting content in this headless way provides flexibility to:

  • Use Craft as a backend only without its templating engine.

  • Have frontends consume content separately from authoring.

  • Optimise frontends specifically for their target device and framework.

  • Transition pages or sections to new frontends incrementally.

  • Prototype or experiment with new display layers.

Overall, headless usage expands Craft's capabilities dramatically for powering all types of modern applications with its content APIs.

Front-end Framework Integration

For web frontends, Craft's headless output integrates smoothly with popular JavaScript frameworks like React, Vue and Angular.

Frameworks can make API requests to Craft endpoints for content, populate state/stores, and render UIs using their own templating and components.

Delivering content separately from display code allows leveraging the strengths of each layer:

  • Craft - Provides a user-friendly authoring UI and manages structured content.

  • Frontend Frameworks - Focus on building interactive UIs, state management, routing etc.

Some key benefits of pairing Craft's headless CMS with frameworks include:

  • Frontend developers control display code without reliance on outdated templating.

  • Frontend and CMS codebases can be versioned, tested and deployed independently.

  • UI components can be optimized for their specific target (web, mobile, etc).

  • Content authors retain the familiar Craft editing environment.

  • Transitioning to a new frontend stack is simplified, with content APIs staying consistent.

Decoupled Architecture Benefits

Overall, decoupling CMS and display brings a number of benefits for both authors and developers.

For authors, the core CMS authoring environment remains constant regardless of what consumes the content. No retraining or disruption is needed when frontends change.

For developers, separating concerns between CMS and display code unlocks major efficiency gains through independent development and deployment.

Codebases can scale without becoming bloated. Content delivery APIs prevent frontend coupling. Specialisation improves the quality and velocity of each layer in isolation.

In summary, headless usage provides exciting opportunities to retain Craft's authoring strengths while embracing modern development practices.

User Management in Craft CMS

User Accounts

Craft allows creating and managing user accounts for authors, editors, administrators and other roles.

Each user gets a profile with core settings like:

  • Email - Used for logging in and notifications.

  • Username - Display name in the control panel.

  • First/Last Name - Displayed name for entries.

  • Password - Set requiring a minimum complexity.

  • Profile Photo - Display image in control panel and entries.

Additional settings can be created using custom fields to capture extended user data.

User accounts are critical for:

  • Login - Users can only access the control panel with valid accounts.

  • Permissions - Account roles and permissions authorize CMS access.

  • Audit Trails - User accounts provide traceability for all changes.

  • Authorship - Assigning entries to user profiles.

Proper user management ensures editorial transparency, security and accountability.

User Roles and Permissions

Craft allows granular user permissions through both predefined and custom roles.

Some key predefined roles include:

  • Admin - Complete CMS access and administrative abilities.

  • Editor - Can edit, publish and manage all content.

  • Author - Can create new content but not publish.

Permissions can be customized at a granular level through the control panel interface or programatically. For example, allowing access to only certain sections or fields for a given role.

Custom roles can also be created to model specific internal workflows or requirements. Roles provide an efficient way to bundle multiple related permissions together.

Assigned user roles and permissions provide a clean way to govern what actions accounts can perform throughout the CMS.

User Groups

For easier management, user accounts can be organized into Groups. Groups make it fast to assign the same roles and permissions to multiple users.

Some potential uses cases include:

  • Department Groups - Sales, Marketing, Engineering etc.

  • Location Groups - London, New York, Tokyo offices.

  • Team Groups - Web Team, Content Team, Management Team.

Whenever a role or permission needs assigning to multiple users, Groups streamline the process. Changes made to the Group propagate to all members.

User Groups allow scaling user management while maintaining order. Role and permission changes only need applied to the Group rather than individual users. Adding new team members is simplified via Group assignment.

Overall, Craft's user accounts, roles/permissions, and Groups enable powerful and flexible user management. Any editorial workflow can be modeled securely and efficiently through the provided user modeling capabilities.

When Craft CMS May Not be the Right Fit

Highly Customized Systems

While Craft CMS provides a robust set of built-in features, it works best for projects that fit reasonably well to its conventions and components.

For highly customized systems with needs far outside what Craft provides out of the box, the required custom code and extensions may outweigh the benefits.

In these cases, starting with a lower-level framework may make more sense than trying to customize Craft extensively. The pre-built components end up discarded in favor of custom code anyway.

For example, if building an internet of things dashboard with complex real-time data visualizations, the frontend would likely require a specialized framework suited for data vis. Starting there instead of a CMS may prove more efficient.

Similarly, for advanced multimedia web applications, a JavaScript framework specialized for animation, video and interactivity may better fit the needs.

In summary, for projects focused on advanced and customized experiential frontends, more specialized developer-focused tools often make sense over Craft's CMS foundation.

Complex Workflows

Due to its flexibility, Craft can accommodate many complex content workflows with its plugins, custom fields, etc. However, at a certain level of complexity, another solution may work better.

For example, some limitations may include:

  • Collaborative Review - Craft lacks built-in support for complex multi-stakeholder review workflows.

  • Approvals - Content approval chains with rules and supervisor sign-off are not part of core CMS.

  • Multilingual - Translating content across many languages requires extensive custom setup.

  • Data Joins - Complex relationships and data aggregates can get unwieldy.

Without extensive custom coding, these types of advanced workflows are difficult to handle elegantly in Craft. A purpose-built DAM or DXP system may provide more suitable solutions.

Large Development Teams

Craft CMS focuses on providing an intuitive all-in-one platform. It works great for small to mid-sized teams where developers wear many hats.

But for large enterprise development teams where engineers have specialized roles (frontend, backend, DevOps etc), more modular solutions can make sense.

Craft's full-stack nature and included frontend templating doesn't align cleanly to specialized roles. It requires those with backend skills to also work in the frontend templating.

Additionally, large teams often require more hardened development processes and tools around code review, testing, staging etc. Craft's more lightweight approach may not provide enough structure.

In summary, for large complex projects Craft CMS likely isn't the ideal foundation. But it still could provide a great prototyping and MVP starting point before transitioning to more scalable architecture.

Shape April 2022 HR 202
Andy Golpys
- Author

Andy has scaled multiple businesses and is a big believer in Craft CMS as a tool that benefits both Designer, Developer and Client. 

Share
Feedback
Show us some love
Email Us
We usually reply within 72 hours
Agency Directory
Submit your agency
Affiliate Partners
Let's chat