diff --git a/config/sync/core.entity_form_display.node.page.default.yml b/config/sync/core.entity_form_display.node.page.default.yml index d5107b155f26eafb1b8539999f8157cb75d2afab..43c1a710f3bcaeca599238784eb86978a956e087 100644 --- a/config/sync/core.entity_form_display.node.page.default.yml +++ b/config/sync/core.entity_form_display.node.page.default.yml @@ -76,7 +76,7 @@ content: maxlength_js_enforce: true field_metatags: type: metatag_firehose - weight: 26 + weight: 12 region: content settings: sidebar: true @@ -124,6 +124,37 @@ content: paragraphs_ee: dialog_off_canvas: false dialog_style: tiles + field_sidebar_items: + type: paragraphs + weight: 10 + region: content + settings: + title: component + title_plural: components + edit_mode: closed + closed_mode: preview + autocollapse: none + closed_mode_threshold: 0 + add_mode: modal + form_display_mode: default + default_paragraph_type: _none + features: + add_above: add_above + collapse_edit_all: collapse_edit_all + convert: '0' + duplicate: duplicate + third_party_settings: + paragraphs_features: + add_in_between: true + add_in_between_link_count: 0 + delete_confirmation: true + show_drag_and_drop: true + show_collapse_all: true + paragraphs_ee: + paragraphs_ee: + dialog_off_canvas: false + dialog_style: tiles + drag_drop: false langcode: type: language_select weight: 2 @@ -146,7 +177,7 @@ content: third_party_settings: { } status: type: boolean_checkbox - weight: 10 + weight: 11 region: content settings: display_label: true diff --git a/config/sync/core.entity_view_display.node.page.default.yml b/config/sync/core.entity_view_display.node.page.default.yml index c6c392ad4fb36f43dd34f7580e4bd851b0e6308f..857c9659179496bdc51db3acda6e9fe175e7b1e7 100644 --- a/config/sync/core.entity_view_display.node.page.default.yml +++ b/config/sync/core.entity_view_display.node.page.default.yml @@ -14,7 +14,20 @@ dependencies: module: - entity_reference_revisions - metatag + - sdc_display - user +third_party_settings: + sdc_display: + enabled: false + component: + machine_name: '' + mappings: + static: + props: { } + slots: { } + dynamic: + props: { } + slots: { } _core: default_config_hash: Ia5yWlmQEzjCojTA6ufAidO_fW_RqrGRWFAxYC1oxs0 id: node.page.default @@ -43,7 +56,7 @@ content: label: above settings: { } third_party_settings: { } - weight: 4 + weight: 5 region: content field_paragraph: type: entity_reference_revisions_entity_view @@ -52,7 +65,16 @@ content: view_mode: default link: '' third_party_settings: { } - weight: 2 + weight: 1 + region: content + field_sidebar_items: + type: entity_reference_revisions_entity_view + label: hidden + settings: + view_mode: default + link: '' + third_party_settings: { } + weight: 4 region: content field_top_content: type: entity_reference_revisions_entity_view @@ -61,7 +83,7 @@ content: view_mode: default link: '' third_party_settings: { } - weight: 1 + weight: 0 region: content links: settings: { } diff --git a/config/sync/field.field.node.page.field_sidebar_items.yml b/config/sync/field.field.node.page.field_sidebar_items.yml new file mode 100644 index 0000000000000000000000000000000000000000..0915f66a867ec3db33dbfc8b4357c9c5c3b68074 --- /dev/null +++ b/config/sync/field.field.node.page.field_sidebar_items.yml @@ -0,0 +1,125 @@ +uuid: ed1cbc56-89bb-4f28-9ffd-211a53c82d27 +langcode: en-gb +status: true +dependencies: + config: + - field.storage.node.field_sidebar_items + - node.type.page + - paragraphs.paragraphs_type.image_media + - paragraphs.paragraphs_type.text + module: + - entity_reference_revisions +_core: + default_config_hash: P_P9krwCM2y_G_cMAfD8JYks_Ske6Nlh-95WGSgGTM0 +id: node.page.field_sidebar_items +field_name: field_sidebar_items +entity_type: node +bundle: page +label: 'Sidebar Items' +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + handler: 'default:paragraph' + handler_settings: + target_bundles: + image_media: image_media + text: text + negate: 0 + target_bundles_drag_drop: + accordion: + weight: 32 + enabled: false + basic_limited: + weight: 33 + enabled: false + compact_callout: + weight: 34 + enabled: false + content_teaser: + weight: 4 + enabled: false + document_list: + weight: 12 + enabled: false + embedded_link: + weight: -10 + enabled: false + events_from_view: + weight: 38 + enabled: false + featured_links: + weight: 39 + enabled: false + image: + weight: 40 + enabled: false + image_card: + weight: 41 + enabled: false + image_cards: + weight: 42 + enabled: false + image_link: + weight: -12 + enabled: false + image_media: + weight: 44 + enabled: true + layout: + weight: 45 + enabled: false + link_block: + weight: 2 + enabled: false + link_grid: + weight: 47 + enabled: false + link_with_description: + weight: 48 + enabled: false + link_with_icon: + weight: 49 + enabled: false + news: + weight: 50 + enabled: false + notification: + weight: 51 + enabled: false + page_item: + weight: 13 + enabled: false + promo_block: + weight: 8 + enabled: false + questions_and_answers: + weight: 14 + enabled: false + related_content: + weight: 55 + enabled: false + section_divider: + weight: 56 + enabled: false + summary: + weight: 57 + enabled: false + text: + weight: 58 + enabled: true + text_block: + weight: 9 + enabled: false + text_card: + weight: 60 + enabled: false + text_cards: + weight: 61 + enabled: false + youtube: + weight: 62 + enabled: false +field_type: entity_reference_revisions diff --git a/web/themes/custom/cambridge_tailwind/cambridge_tailwind.theme b/web/themes/custom/cambridge_tailwind/cambridge_tailwind.theme index 847260f28f1da7980612f9e736ed7c3bcc48fd29..0e7b5c537020ae54ead0d9d1904c5e36e4835da2 100644 --- a/web/themes/custom/cambridge_tailwind/cambridge_tailwind.theme +++ b/web/themes/custom/cambridge_tailwind/cambridge_tailwind.theme @@ -686,13 +686,44 @@ function cambridge_tailwind_preprocess_node__page(array &$variables) { : $paragraph->get('field_paragraph_heading')->value; } + // Get the rendered content + $rendered_content = \Drupal::entityTypeManager() + ->getViewBuilder('paragraph') + ->view($paragraph, 'default'); + + // If heading is empty, try to extract first h2 content + if (empty($heading_value)) { + // Render the content to HTML string + $rendered_html = \Drupal::service('renderer')->renderPlain($rendered_content); + + // Use DOMDocument to parse HTML and find first h2 + $dom = new \DOMDocument(); + @$dom->loadHTML(mb_convert_encoding($rendered_html, 'HTML-ENTITIES', 'UTF-8'), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); + $h2s = $dom->getElementsByTagName('h2'); + + if ($h2s->length > 0) { + // Get first h2 content + $first_h2 = $h2s->item(0); + $heading_value = $first_h2->textContent; + + // Remove the h2 from content + $first_h2->parentNode->removeChild($first_h2); + + // Get remaining content and apply basic_html filter + $html = $dom->saveHTML(); + $rendered_content = [ + '#type' => 'processed_text', + '#text' => $html, + '#format' => 'basic_html', + ]; + } + } + // Create a render array using the block-wrapper template $build['field_items'][$delta] = [ '#theme' => 'cambridge_tailwind_block_sidebar', '#title' => $heading_value, - '#content' => \Drupal::entityTypeManager() - ->getViewBuilder('paragraph') - ->view($paragraph, 'default'), + '#content' => $rendered_content, ]; } } @@ -799,6 +830,8 @@ function cambridge_tailwind_preprocess_node__page(array &$variables) { } } + + // Only set sidebar_items if we have content if (!empty($build)) { $variables['sidebar_items'] = $build; diff --git a/web/themes/custom/cambridge_tailwind/components/block/block-sidebar/block-sidebar.component.yml b/web/themes/custom/cambridge_tailwind/components/block/block-sidebar/block-sidebar.component.yml index 22a3bb212972133d5c41ec5fe03a34e9d9a014f0..53069ee0782945d602a854c791947bd72d532634 100644 --- a/web/themes/custom/cambridge_tailwind/components/block/block-sidebar/block-sidebar.component.yml +++ b/web/themes/custom/cambridge_tailwind/components/block/block-sidebar/block-sidebar.component.yml @@ -4,7 +4,6 @@ description: Renders each block in the page sidebar region props: type: object required: - - title - content properties: title: diff --git a/web/themes/custom/cambridge_tailwind/templates/block/block-sidebar.html.twig b/web/themes/custom/cambridge_tailwind/templates/block/block-sidebar.html.twig index 9fbdbc6f38d66343f2d559535dac199656361b4d..b36c3caed0a2c4629e8a417ff223df85e6d9d2ad 100644 --- a/web/themes/custom/cambridge_tailwind/templates/block/block-sidebar.html.twig +++ b/web/themes/custom/cambridge_tailwind/templates/block/block-sidebar.html.twig @@ -10,6 +10,6 @@ #} {% include 'cambridge_tailwind:block-sidebar' with { - title: title, + title: title|default(''), content: content } only %}