diff --git a/php-transformer/src/HtmlToBlocks/Patterns/ColumnsPattern.php b/php-transformer/src/HtmlToBlocks/Patterns/ColumnsPattern.php index e8ded4d0..b88303fd 100644 --- a/php-transformer/src/HtmlToBlocks/Patterns/ColumnsPattern.php +++ b/php-transformer/src/HtmlToBlocks/Patterns/ColumnsPattern.php @@ -157,6 +157,12 @@ private function looksLikeColumnsContainer(DOMElement $element, string $resolved return false; } + // Semantic sidebar/content names can suggest a split layout only when + // author CSS does not explicitly retain normal document flow. + if ( preg_match('/(?:^|;)\s*display\s*:\s*(?:block|inline|flow-root|contents)\b/', $style) ) { + return false; + } + // core/columns is a flex layout. Preserve resolved grid containers as // groups so their source classes continue to control track geometry. if ( preg_match('/(?:^|;)\s*display\s*:\s*(?:inline-)?grid\b/', $style) ) { diff --git a/php-transformer/tests/unit/block-style-support-conversion.php b/php-transformer/tests/unit/block-style-support-conversion.php index 59ed1176..ad29cb9b 100644 --- a/php-transformer/tests/unit/block-style-support-conversion.php +++ b/php-transformer/tests/unit/block-style-support-conversion.php @@ -295,6 +295,14 @@ $nativeColumnsBlock = $nativeColumnsResult['blocks'][0] ?? array(); $assert('core/columns' === ($nativeColumnsBlock['blockName'] ?? ''), '29: explicit native Columns markup remains core Columns', (string) ($nativeColumnsBlock['blockName'] ?? '(none)')); +$blockFlowSidebarHtml = '