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 Grouped Regions: Per-Content-Type Column Layouts

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

Breadcrumbs

Breadcrumb

  • Home
  • Drupal Theme
  • Solo Grouped Regions: Per-Content-Type Column Layouts

Main page content

Solo gathers thirteen of its regions into four containers — top, main, bottom and footer — counts how many regions in each container have something in them, and uses that count to decide which column-ratio setting applies, which a single content type can then override.

That sentence contains the whole feature, and each clause in it is where somebody gets stuck. The counting is the part nobody expects, and it explains almost every "I chose a ratio and nothing changed" message I get. Here is the mechanism as it exists in the theme's own code, then the three rules that decide whether your override actually fires.

The four containers and what is in them

Solo's grouped regions, the column selectors each group offers, and where an override is available
ContainerRegions it gathersRatio selectorsPer-content-type override
TopTop first, second, thirdTwo-column, three-columnYes
MainLeft sidebar, content, right sidebarTwo-column, three-columnYes
BottomBottom first, second, third, fourthTwo-, three- and four-columnYes
FooterFooter first, second, thirdTwo-column, three-columnYes

Four containers, thirteen regions. Every other region the theme declares stands on its own and has no ratio to set, because it occupies its whole row.

The bottom container is the only one with a four-column selector, for the obvious reason that it is the only group with four regions in it. Its options are equal quarters, 16.6/33.3/33.3/16.6, 33.3/16.6/16.6/33.3, and 16.6/33.3/16.6/33.3. The two-column selector offers seven ratios — 50/50, 67/33, 75/25, 80/20 and the three mirrored versions — and the three-column selector offers 33.3/33.3/33.3, 25/50/25 and 20/60/20.

The counting, and why it is the part that confuses people

There are two counts in this feature, at two different layers, and knowing which is which saves an afternoon.

On the settings form, a helper loads the block entities assigned to each region of the active theme and counts a region as occupied only when it holds at least one enabled block. A region stuffed with disabled blocks counts as zero. Those totals are stored on the theme's settings and decide which settings groups the form renders at all.

At render time, the page preprocess does something subtly different: it asks whether each region has actual content in the page render array for this request. Then it assigns the layout class — one occupied region gets a single-column class, two get the group's two-column setting, three get the three-column setting, four get the four-column setting.

The consequence is that the live setting is decided by the page, not by your intent. If your footer has three regions but only two of them render on a given page, the three-column ratio you configured is not the one in force there — the two-column one is. This is the most common cause of "my layout setting is being ignored".

The main container has one extra behaviour worth knowing. When exactly two of its three regions are occupied and you have never saved a two-column value, the theme picks a sensible default based on which sidebar is missing — wider content on the side where the sidebar is absent. Save a value yourself and your value wins; the smart default only fills a vacuum.

Switching on per-content-type layouts

Each container's Layout Settings tab carries its own checkbox — there is no global one. Tick it and a collapsible group appears for every content type on the site, each with its own two-column and three-column selectors, and on the bottom container a four-column one as well. The groups are revealed by the checkbox state, so they are hidden until the feature is on.

The values are stored against the container, the column count and the content type's machine name. That storage shape matters in two situations, and both are quiet failures rather than errors: if you copy the theme settings to a site whose content types are named differently, the overrides import and then do nothing; and if you are upgrading from an older Solo, the keys used to be flat and a post-update hook moves them into this nested shape, so run your database updates before you go looking for settings that appear to have vanished.

The three rules that decide whether your override fires

  1. It is per container. Enabling per-content-type layouts on the main container does nothing for the footer. Four containers, four checkboxes.
  2. It is per column count. An override you saved in the three-column selector is consulted only on pages where three regions of that container are occupied. Save the two-column value as well if two is what your pages actually render.
  3. It needs a node in context. The preprocess takes the node from the route and reads its bundle; with no node there is no bundle, so a View page, a taxonomy term page, the front page and the search results all fall back to the global ratio. This is not configurable, and it is the rule people discover last.

Rule three is the one to design around. If the pages you most want to look different are Views listings, per-content-type layouts are the wrong tool and you want block visibility conditions or a different region layout instead.

A worked example

Say articles should read as content plus a right sidebar at 80/20, and landing pages should be one wide column. Place a block into the content region and one into the right sidebar; that makes the main container two-occupied, so the two-column selector is live. Set the global two-column ratio to 80/20. Then tick per-content-type layouts on the main container and leave the article override at 80/20 or blank.

For landing pages there is no one-column override to find: a single occupied region already renders full width, so you get it by having no sidebar block visible — a block visibility condition, not a layout setting. Ratios come from settings; occupancy comes from block placement.

If you would rather have the block layout and the container ratios designed together and handed over documented, that is ordinary Drupal development work and is usually a short engagement rather than a project.

Where this sits next to the alternatives

It replaces a second theme, or a Layout Builder rollout, when the only thing differing between your content types is column proportion — and does not, when the difference is which components appear, in what order, or when an editor needs to compose the page.

It is also worth knowing what its neighbours do. Content width per content type and per node is a separate feature that needs the companion module; the same per-content-type idea applied to the editing screen rather than the public page is per-content-type node edit form templates; and because all of this is theme settings, it is configuration that has to be exported and deployed like any other, which is covered in how Solo's settings survive a deploy.

Common questions

I picked a ratio and the page did not change. Why?

Almost always the occupancy count. Count how many regions in that container actually render on the page you are looking at, and check you set the selector matching that number. Two occupied regions never read the three-column setting.

Does this work on the front page or a Views listing?

The global ratios do. The per-content-type overrides do not, because those pages have no node in the route and therefore no bundle to match against.

Can one node have its own layout?

Not a layout, no. Per-node granularity exists for content width only, and only with the companion module installed.

Do I need a sub-theme for this?

No. It is entirely settings, and no template override is involved. You do need to treat it as configuration and export it, because it will not travel any other way.

Next steps

Before configuring anything, count the occupied regions in each container on the page you care about, and set only the selectors matching those numbers. Add per-content-type overrides only where a type genuinely needs a different proportion — every override is one more thing the next person has to find.

If a site has already grown a set of layout settings nobody can explain, an audit of the block layout and the container ratios together is a short piece of work and usually ends with fewer settings rather than more. Drupal services covers how that is scoped.

Drupal Theme
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