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

Drupal Blocks vs Content Blocks: Stop Paragraph Duplicates

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

Breadcrumbs

Breadcrumb

  • Home
  • Drupal blocks vs block content
  • Drupal Blocks vs Content Blocks: Stop Paragraph Duplicates

Main page content

If a block shows up twice on your page, Drupal is not misbehaving — you have given it two valid render instructions, one from a theme region and one from your Paragraph, and it is obeying both.

This is the single most common "bug report" I get about component-based Drupal builds, and it is never a bug. It comes from two separate block systems that look identical in the admin UI and behave completely differently once a component layer sits on top of them. Once you can name which system you are looking at, the fix takes about five minutes.

Drupal has two block systems, not one

Both are core. Both are supported by component modules. They are not interchangeable.

The two block systems in Drupal 11 and how they differ
Plugin-based blocksContent block entities
Defined inCode — a Block plugin in a module or themeThe database, as a fielded content entity
ExamplesMenus, Views blocks, the login form, system messagesAnything an editor creates in the UI
Managed atStructure > Block layoutContent > Blocks (/admin/content/block)
Types managed atn/aStructure > Block types
Needs a placement?Yes — a block.block.* entity, before it can be referencedNo — it exists whether placed or not

That admin path matters. If a tutorial tells you to go to Structure > Block layout > Custom block library, it predates Drupal 10.1. In Drupal 11.4 the listing lives under Content, at /admin/content/block, and the entity is called a content block, not a custom block.

Why the duplication happens

A theme region and a component are two different placement systems, and neither one knows the other exists.

When you place a plugin block in the Header region, Drupal renders it in the Header on every page. When you then embed the same block inside a Paragraph, Drupal renders it there too. Two instructions, two outputs. Nothing suppresses the first because nothing was ever asked to.

Paragraphs does not override region-based rendering, and it should not. A component module that silently unplaced your blocks would be a far worse bug than the one you are looking at.

The exact sequence that triggers it

  1. You enable a block and assign it to a visible region so it appears in the block plugin list.
  2. You add that same block inside a Paragraph.
  3. The page renders it twice — once from the region, once from the component.
  4. You clear cache repeatedly. Nothing changes, because caching was never involved.

That last step is the expensive one. The behaviour is structural, not a stale render array, so every cache rebuild returns the same duplicated markup and reinforces the wrong theory.

The fix: a hidden region

The pattern is simple — keep the block enabled so the plugin manager loads it, but place it somewhere that never renders.

Here is the part most write-ups get wrong: this is not something every theme gives you. Olivero, Drupal 11's default front-end theme, defines thirteen regions in olivero.info.yml and none of them is a hidden region. If you are on Olivero or a stock sub-theme, you have to add one before this fix is available to you.

The Solo theme, which I maintain, does ship one — the last entry in its regions: block is hidden: 'Hidden Region'. If your theme has no equivalent, add one:

# YOUR_THEME.info.yml
regions:
  header: 'Header'
  content: 'Content'
  footer: 'Footer'
  hidden: 'Hidden Region'

Then never output {{ page.hidden }} in page.html.twig. A region that is declared but never printed is exactly what you want: real to the block system, invisible to the browser.

The three-step workflow

  1. Enable the block. Go to Structure > Block layout and place it. A plugin block that is not placed is not available to embed.
  2. Assign it to the hidden region, not Header, Sidebar or Content.
  3. Place it in your component where you actually want it.

One instruction, one output. This works identically for content block entities: if a block should only ever appear inside a component, it must not also sit in a visible region.

Which bundles are affected

I maintain the Paragraphs Bundles module, so the naming below is read straight from the source rather than remembered. Version 2 declares core_version_requirement: ^11.3 || ^12 and depends on paragraphs, entity_reference_revisions and field_group alongside several core modules.

  • block_bundle, from the paragraph_bundle_block submodule — embeds a plugin-based block. Duplicates if that block is also in a visible region.
  • block_content_bundle, from the paragraph_bundle_block_content submodule — embeds a content block entity. Same trigger, different system.
  • node_reference_bundle, from the paragraph_bundle_node_reference submodule — embeds a node reference. Never duplicates, because nodes do not render through theme regions at all.

Notice the pattern: only the block-based bundles have this failure mode, and only when the block is also region-placed. The same reasoning applies to Layout Builder blocks and to any custom Twig that calls a block directly.

If you are choosing components for a build in the first place, the overview of Paragraph bundles covers what each one is for. And if this is one symptom of a layout that has grown past what you want to hand-manage, that is what a Drupal architect is for.

Sub-themes inherit the problem

Region definitions live in the theme's .info.yml, and a sub-theme does not inherit its parent's regions — core copies only a couple of housekeeping keys from the base theme, and the region list is not among them. A sub-theme written from scratch therefore has no hidden region until you add one. Solo's shipped solo_subtheme already declares the full region list with hidden among them, so if you started from that there is nothing to copy. Block placement, however, lives in configuration keyed by theme — block.block.* entities carry a theme property. Switching themes does not move your blocks; it leaves the old placements in config and creates new ones. Review block placement per theme after any theme switch, or you will chase the same duplicate through a second theme.

What clean block placement buys you beyond the visual fix

  • Layout stability. A block rendered twice occupies space twice. Removing the duplicate removes an unnecessary contributor to cumulative layout shift.
  • Accessible landmarks. Screen readers navigate by landmark. Two identical navigation blocks in the accessibility tree is a genuine usability defect, not a cosmetic one.
  • Cacheability. A block that renders in two places carries its cache tags into two render subtrees, so an invalidation does twice the work.

Common questions

Can I just disable the block instead of hiding it?

No. A disabled plugin block is not instantiated, so the component has nothing to render. Enabled-but-hidden is the state you want.

Why does clearing cache never fix this?

Because nothing is stale. Drupal is correctly executing two placement instructions. Cache rebuilds reproduce the same correct output.

Does this happen with Layout Builder too?

Yes. Any system that renders a block outside the region pipeline can duplicate a region-placed block. The hidden-region fix applies unchanged.

My theme has no hidden region — is adding one risky?

No. Adding a region to .info.yml and never printing it in page.html.twig has no effect on anything else. Clear caches after the edit so the theme registry picks it up.

How do I find which blocks are duplicating?

View source and search for the block's markup or its id="block-*" attribute. Two matches means two placements; then check Structure > Block layout for the region assignment.

Fixing it on a site you already have

Identify the duplicated block in page source, find its region in Structure > Block layout, move it to the hidden region, add that region to your theme first if it does not exist, and rebuild caches. On a site with a handful of components this genuinely is a few minutes of work.

If your build has dozens of components and the duplication is scattered across content types, that is an architecture review rather than a config edit. Drupal development services covers the component and theme work, or tell me what you are seeing and I will tell you which of the two it is.

Drupal blocks vs block content
Paragraphs block issue
Drupal block duplication
Drupal hidden region blocks
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