Skip to header Skip to main navigation Skip to main content Skip to footer
Cookies UI
Alaa Haddad Offers Exceptional Drupal Custom Theming and Modules in Austin TX Alaa Haddad - Drupal Expert
Main navigation
  • Professional Profile
  • Drupal Services
    • Drupal Development
    • Drupal Developer
    • Drupal Themer
    • Drupal Architect
    • Drupal Consultant
  • My Drupal Modules & Themes
      • Cloudflare Purge
      • Solo Copy Blocks
      • W3CSS Paragraphs
      • Paragraphs Bundles
      • Acquia Purge Varnish
      • Reference Blocked Users
      • Module Matrix
      • Paragraphs Bundles Import
      • Selectify
      • Solo Utilities
      • Utilikit
      • Solo
      • Amun
      • Anhur
      • Amunet
      • W3CSS Theme
      • 3D Carousel
      • 3D FlipBox
      • Accordion
      • Carousel
      • Hero
      • Lightbox
      • Parallax
      • Reveal
      • Slideshow
      • Tabs
  • Blog
  • Videos
  • Contact
  • Hire Me (opens in new tab)
Search form
User login
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
  • Reset your password
User account menu
  • Hire Me (opens in new tab)
  • Drupal Services
  • Blog
Site branding
Alaa Haddad - Drupal Expert
Consultant • Architect • Developer • Themer - Expert Drupal Solutions
Article Title Image - Block 1

Solo Theme Settings Are Config: Surviving a Deploy

Content Info - Article Info
 
  10:55 PM CDT, Sun September 13, 2026
Share

Breadcrumbs

Breadcrumb

  • Home
  • Solo
  • Solo Theme Settings Are Config: Surviving a Deploy

Main page content

Every setting on Solo's theme settings form is Drupal configuration, held in one config object named solo.settings — so it exports to YAML, imports on the next environment, and is deleted outright the moment the theme is uninstalled.

I maintain Solo, and the message I answer most often is some version of "the design came back different after we deployed". Almost none of those are theme defects. They are consequences of where theme settings are stored and what Drupal does to that store during an install, an export and an uninstall. What follows was read from Drupal 11.4.6 core and from the theme's own files, not from memory.

Which object the settings are written to

Core resolves a theme setting through ThemeSettingsProvider::getSetting(), which reads the config object named <theme>.settings and caches the result in memory under a config:<theme>.settings tag, so the in-request copy is invalidated when those settings change. Bubbling that tag into your own render array is still yours to do — the provider does not do it for you. For Solo that object is solo.settings. For a sub-theme created from the shipped starter it is solo_subtheme.settings — a different object holding a different set of values.

The defaults are a file you can open: config/install/solo.settings.yml in the theme. Drupal copies it into the active configuration when the theme is installed, and every change you make afterwards is an edit to that object. Nothing about this is special to Solo; it is how core treats any theme's settings, and the older accessor theme_get_setting() now simply forwards to the same provider, and core has deprecated it in 11.3 for removal in 13.

What an export carries, and what it quietly leaves behind

This table is the one I send people before their first deploy. The second row accounts for most "the logo vanished" reports I receive.

Where each part of a configured Solo site is stored, and whether a configuration export moves it
The thingWhere it is storedMoves with a config export?
Colours, widths, column ratios, togglessolo.settingsYes
The logo and favicon imagesYour files directory. Config stores only logo.pathNo — the path travels, the image does not
Which block sits in which regionSeparate block.block.* config entitiesYes, as their own YAML files
The text inside a content blockA content entity in the databaseNo
A per-node width from Solo UtilitiesA node_width content entityNo
A sub-theme's settingssolo_subtheme.settings, a separate objectYes, as a separate file

Two rows there are worth acting on. Upload the logo through the theme settings form and core saves the file into your public files directory and records a path; deploy the YAML to a server whose files directory does not contain that file and you get a broken image with a perfectly correct configuration. And because block placements are their own config entities, a colour you set on the footer can arrive intact on a server where no block has been placed into the footer at all — in which case Solo has nothing to paint.

The drift nobody made: opening the settings page writes configuration

This one surprises people, so I would rather say it plainly than have it found in a diff. Solo's settings form needs to know how many regions in each group currently hold an enabled block, so it can decide which settings groups to render. The helper that works this out, _count_regions(), does not just count — it writes the result back, setting count_top, count_main, count_bottom and count_footer on solo.settings and saving the object.

The practical consequence: visiting Appearance → Settings → Solo on any environment can change that environment's active configuration, without you touching a field. Your next export then shows a diff nobody deliberately made. It is harmless in itself, but it belongs in its own commit rather than inside an unrelated pull request.

Uninstalling the theme deletes the settings, and it is core that does it

When a theme is uninstalled, ThemeInstaller::uninstall() hands off to ConfigManager::uninstall('theme', $key). That method lists every config object whose name begins with the extension name followed by a dot and deletes each one, across every configuration collection — so uninstalling Solo removes solo.settings and anything else prefixed solo., including translated copies. There is no confirmation step that spells this out and no undo.

The guard most people rely on without knowing it is in the same method: core refuses to uninstall the theme that is currently set as default, and refuses to uninstall the current administration theme, throwing rather than proceeding. So the accident normally happens on the way out of a theme, not while it is in use — you switch the default to something else, tidy up the extension list, and the settings go with the tidy-up.

Recovery is only as good as your last export. With the YAML in version control, reinstalling the theme and importing gives you everything back. Without it, there is nothing to restore from except a database backup.

Why the theme ships 3,196 lines of schema

Configuration schema is what makes a config object typed, translatable and validatable rather than an untyped bag of values. Solo's lives in config/schema/solo.schema.yml and is 3,196 lines long, which is a direct consequence of having a settings form this large.

Three of its keys are deliberately declared type: ignore: site_widths, solo_layouts and menu_template_assignments. Their child keys are your content type machine names, which cannot be known in advance, so the schema declines to describe them rather than pretending to. That has a consequence when you move settings between sites: those overrides are keyed by bundle, so if the target site's content types are named differently, the values import successfully and then do nothing. The per-content-type layout overrides are the place this bites most often.

The settings shape can also change between releases: Solo ships a post-update hook that rewrites older flat keys into the structure the current schema expects, for Solo and every sub-theme beneath it. That is the theme-specific reason for the usual deployment order, whose general case is covered in Drupal configuration management — database updates first, so the hook reshapes your active settings before an import is compared against them.

Four habits that keep a themed site deployable

  1. Configure locally, export, commit, import, and run database updates before that import after any theme update. A colour changed on production survives exactly until the next one.
  2. Export after a block layout change, not just after a settings change. Block placements are config, and Solo's settings form depends on them.
  3. Commit the logo and favicon as files in the repository, and point logo.path at the committed copy rather than at an upload.
  4. Decide the sub-theme question before you configure anything, because the settings object is per theme. The sequence is set out in installing and configuring Solo.

If the site is commercial and the deployment is currently somebody remembering to click things in the right order, that is the part worth fixing first — it is ordinary Drupal development work and it is measured in hours.

Common questions

Should theme settings go into a configuration split?

Usually not. A split is for values that must genuinely differ per environment, and a colour scheme is not one of them. The occasional exception is a deliberately different banner or logo on a staging site, and even then a $config override in settings.php is the lighter tool.

I changed a setting on production and it reverted. Why?

Because the next configuration import replaced the active object with the file. Nothing warns you, and the two events are usually days apart, which is what makes it confusing. Make the change locally and deploy it.

Do my settings follow me when I switch to a sub-theme?

No. solo_subtheme.settings is a different object and starts from the shipped defaults. You can copy the values across by hand in the YAML before importing, but nothing does it for you.

What is the fastest way to know my settings are actually safe?

Delete your local site's database, rebuild it from the repository and the configuration import, and see what is missing. That is the only version of this test that tells the truth.

Where to take this next

If you would rather hand the whole deployment story over — exports reviewed, updates ordered correctly, the theme settings reproducible from git — describe your current setup and I will tell you which of the four habits above you are missing.

Solo
Slide 1 of 27
Acquia Purge Varnish - API V2 (Drupal Module)
Slide 2 of 27
Amun - W3CSS Sub-Theme (Drupal Theme)
Slide 3 of 27
Amunet - W3CSS Sub-Theme (Drupal Theme)
Slide 4 of 27
Anhur - W3CSS Sub-Theme (Drupal Theme)
Slide 5 of 27
Cloudflare Purge (Drupal Module)
Slide 6 of 27
Module Matrix (Drupal Module)
Slide 7 of 27
Paragraphs Bundles (Drupal Module)
Slide 8 of 27
Paragraphs Bundles Import (Drupal Module)
Slide 9 of 27
Reference Blocked Users (Drupal Module)
Slide 10 of 27
Selectify (Drupal Module)
Slide 11 of 27
Solo (Drupal Theme)
Slide 12 of 27
Solo Copy Blocks (Drupal Module)
Slide 13 of 27
Solo Utilities (Drupal Module)
Slide 14 of 27
Utilikit (Drupal Module)
Slide 15 of 27
Views 3D Carousel (Drupal Module)
Slide 16 of 27
Views 3D FlipBox (Drupal Module)
Slide 17 of 27
Views Accordion (Drupal Module)
Slide 18 of 27
Views Carousel (Drupal Module)
Slide 19 of 27
Views Hero (Drupal Module)
Slide 20 of 27
Views Lightbox (Drupal Module)
Slide 21 of 27
Views Parallax (Drupal Module)
Slide 22 of 27
Views Reveal (Drupal Module)
Slide 23 of 27
Views Slideshow (Drupal Module)
Slide 24 of 27
Views Tabs (Drupal Module)
Slide 25 of 27
VVJ Core (Drupal Module)
Slide 26 of 27
W3CSS Paragraphs (Drupal Module)
Slide 27 of 27
W3CSS Theme (Drupal Theme)
1 of 27

Our mission is to make Drupal more accessible and user-friendly, empowering businesses of all sizes, especially small enterprises with powerful tools that streamline content customization and enhance digital experiences.

Need help with your Drupal project? Hire Me through Flash Web Center, LLC.

Search

The Drupal 11 Module and Theme Stack, With Versions Checked

ARIA Live Regions in Drupal 11: What Core Does, What You Add

Drupal Architect: The Decisions Expensive to Reverse

Drupal Services: Development, Theming, Upgrades | Austin TX

Paragraphs Bundles

Drupal Module - Paragraphs Bundles

Drupal Theme - Solo

Drupal Theme - Solo

Drupal Work List - Drupal Work

Reference Blocked Users (Drupal Module)

Solo Utilities (Drupal Module)

Views Hero (Drupal Module)

Solo (Drupal Theme)

Paragraphs Bundles Import (Drupal Module)

Drupal Theme - W3CSS Theme

Drupal Theme - W3CSS Theme

Drupal Module - W3CSS Paragraphs

Drupal Module - W3CSS Paragraphs

Inspiration

Inspiration is the fuel that powers our creative engine, often coming from our surroundings, experiences, or the works of others. It's that magical moment when something clicks inside your brain, and you suddenly see a path forward that you hadn't noticed before. Inspiration can strike at any time, providing the motivation and energy needed to explore new possibilities and bring your ideas to life.

Unique Ideas

Unique Ideas

Unique ideas are the seeds of innovation, representing original thoughts or concepts that stand out from the usual. They're the sparks that ignite the process of creating something new and different, often leading to unexpected and groundbreaking solutions or products. Whether in art, science, business, or technology, unique ideas challenge the status quo and pave the way for progress.

Brainstorming

Brainstorming

Brainstorming is a creative group activity designed to generate a large number of ideas or solutions to a problem. It's a free-flowing and open-ended discussion where every suggestion is welcomed and considered, no matter how outlandish it may seem. Brainstorming encourages thinking outside the box, fostering an environment where creativity and collaboration lead to innovative solutions.

Planning

Planning

Planning is the blueprint for turning your ideas into reality. It involves setting goals, outlining steps, and organizing resources in a way that makes achieving your objectives possible. Good planning considers potential challenges and opportunities, making it easier to navigate the journey from concept to completion. It's about preparing the groundwork so that your projects can grow and flourish.

Drupal Developer

A Drupal Developer stands as the technical powerhouse behind dynamic websites, wielding expertise in PHP, custom module development, and Drupal's sophisticated API ecosystem. This role transforms business requirements into functional, secure, and scalable web solutions that power everything from small business sites to enterprise platforms serving millions of users. A Drupal Developer's expertise spans the entire development lifecycle—from architecting custom modules and integrating third-party services to optimizing performance and ensuring security compliance. Discover the complete guide to Drupal Developer skills, career paths, and hiring strategies.

Drupal Themer

A Drupal Themer serves as the artistic craftsperson who transforms wireframes and design mockups into pixel-perfect, accessible, and responsive user experiences using Twig templates, CSS, and JavaScript. This specialized role bridges the gap between design vision and technical implementation, ensuring every website not only looks exceptional but performs flawlessly across all devices and meets WCAG accessibility standards. A Drupal Themer's work encompasses the entire front-end ecosystem—from creating custom theme architectures and optimizing Core Web Vitals to implementing complex responsive designs and ensuring seamless integration with Drupal's rendering system. Explore the comprehensive guide to Drupal Themer expertise, theming best practices, and career advancement.

Drupal Architect

A Drupal Architect emerges as the strategic visionary of web construction, armed with encyclopedic knowledge of enterprise architecture patterns, infrastructure design, and Drupal's extensive technological ecosystem. This senior role operates at the highest technical level, making critical decisions that determine whether complex implementations scale successfully or collapse under real-world demands. A Drupal Architect's responsibilities begin long before development starts—during strategic planning phases where the foundation for secure, performant, and maintainable systems is established through careful evaluation of technology stacks, integration strategies, and scalability requirements. Learn about Drupal Architect skills, enterprise architecture strategies, and career progression to principal roles.

Footer menu

  • Contact
  • Professional Resume
  • Resume Summary
  • Technical Skills
  • Privacy Policy
  • Terms & Conditions
  • Search
  • Login
  • Sitemap

Copyright © 2026 Flash Web Center, LLC - All rights reserved

Developed & Designed by Alaa Haddad