From 79eb9bef0baf972e919b153d8f68aee41fe3128b Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Fri, 29 May 2020 21:05:17 +0100 Subject: [PATCH] Include widgets.js on blog posts that need it Fixes #78 --- ....entity_form_display.node.post.default.yml | 8 +++++++ ....entity_view_display.node.post.default.yml | 11 +++++++++ ...e.entity_view_display.node.post.teaser.yml | 2 ++ .../field.field.node.post.field_has_tweet.yml | 23 +++++++++++++++++++ .../field.storage.node.field_has_tweet.yml | 18 +++++++++++++++ .../custom/opdavies/opdavies.libraries.yml | 10 ++++++++ web/themes/custom/opdavies/opdavies.theme | 18 +++++++++++++++ 7 files changed, 90 insertions(+) create mode 100644 config/default/field.field.node.post.field_has_tweet.yml create mode 100644 config/default/field.storage.node.field_has_tweet.yml diff --git a/config/default/core.entity_form_display.node.post.default.yml b/config/default/core.entity_form_display.node.post.default.yml index 24b855a..cae82ea 100644 --- a/config/default/core.entity_form_display.node.post.default.yml +++ b/config/default/core.entity_form_display.node.post.default.yml @@ -5,6 +5,7 @@ dependencies: config: - field.field.node.post.body - field.field.node.post.field_excerpt + - field.field.node.post.field_has_tweet - field.field.node.post.field_images - field.field.node.post.field_series - field.field.node.post.field_tags @@ -42,6 +43,13 @@ content: third_party_settings: { } type: string_textarea region: content + field_has_tweet: + weight: 26 + settings: + display_label: true + third_party_settings: { } + type: boolean_checkbox + region: content field_images: weight: 9 settings: diff --git a/config/default/core.entity_view_display.node.post.default.yml b/config/default/core.entity_view_display.node.post.default.yml index 71b59a4..9046bdc 100644 --- a/config/default/core.entity_view_display.node.post.default.yml +++ b/config/default/core.entity_view_display.node.post.default.yml @@ -5,6 +5,7 @@ dependencies: config: - field.field.node.post.body - field.field.node.post.field_excerpt + - field.field.node.post.field_has_tweet - field.field.node.post.field_images - field.field.node.post.field_series - field.field.node.post.field_tags @@ -24,6 +25,16 @@ content: settings: { } third_party_settings: { } region: content + field_has_tweet: + weight: 3 + label: above + settings: + format: default + format_custom_false: '' + format_custom_true: '' + third_party_settings: { } + type: boolean + region: content field_tags: weight: 2 label: above diff --git a/config/default/core.entity_view_display.node.post.teaser.yml b/config/default/core.entity_view_display.node.post.teaser.yml index feb4176..dfd5af7 100644 --- a/config/default/core.entity_view_display.node.post.teaser.yml +++ b/config/default/core.entity_view_display.node.post.teaser.yml @@ -6,6 +6,7 @@ dependencies: - core.entity_view_mode.node.teaser - field.field.node.post.body - field.field.node.post.field_excerpt + - field.field.node.post.field_has_tweet - field.field.node.post.field_images - field.field.node.post.field_series - field.field.node.post.field_tags @@ -31,6 +32,7 @@ content: third_party_settings: { } hidden: body: true + field_has_tweet: true field_images: true field_series: true field_tags: true diff --git a/config/default/field.field.node.post.field_has_tweet.yml b/config/default/field.field.node.post.field_has_tweet.yml new file mode 100644 index 0000000..94329f5 --- /dev/null +++ b/config/default/field.field.node.post.field_has_tweet.yml @@ -0,0 +1,23 @@ +uuid: e9be005a-2f67-4204-ba80-72a74e7f990b +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_has_tweet + - node.type.post +id: node.post.field_has_tweet +field_name: field_has_tweet +entity_type: node +bundle: post +label: 'Has tweet' +description: 'Check to include Twitter''s widget.js script for this page.' +required: false +translatable: false +default_value: + - + value: 0 +default_value_callback: '' +settings: + on_label: 'Yes' + off_label: 'No' +field_type: boolean diff --git a/config/default/field.storage.node.field_has_tweet.yml b/config/default/field.storage.node.field_has_tweet.yml new file mode 100644 index 0000000..e10ff77 --- /dev/null +++ b/config/default/field.storage.node.field_has_tweet.yml @@ -0,0 +1,18 @@ +uuid: f0ab9755-e7d4-4b86-b4f5-df0472c727dd +langcode: en +status: true +dependencies: + module: + - node +id: node.field_has_tweet +field_name: field_has_tweet +entity_type: node +type: boolean +settings: { } +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/web/themes/custom/opdavies/opdavies.libraries.yml b/web/themes/custom/opdavies/opdavies.libraries.yml index 916f5ac..f9da5ad 100644 --- a/web/themes/custom/opdavies/opdavies.libraries.yml +++ b/web/themes/custom/opdavies/opdavies.libraries.yml @@ -2,6 +2,16 @@ global-styling: css: base: dist/tailwind.css: {} + global-scripts: js: dist/js/app.js: {} + +twitter: + js: + https://platform.twitter.com/widgets.js: + type: external + minified: true + attributes: + async: true + charset: 'utf-8' diff --git a/web/themes/custom/opdavies/opdavies.theme b/web/themes/custom/opdavies/opdavies.theme index d0c69a4..4bcb0b0 100644 --- a/web/themes/custom/opdavies/opdavies.theme +++ b/web/themes/custom/opdavies/opdavies.theme @@ -5,6 +5,24 @@ * Functions to support theming in the Tailwind CSS theme. */ +/** + * Implements hook_preprocess_HOOK(). + */ +function opdavies_preprocess_page(array &$variables): void { + /** @var \Drupal\Core\Entity\EntityInterface $node */ + if (!$node = \Drupal::routeMatch()->getParameter('node')) { + return; + } + + if ($node->getType() != 'post') { + return; + } + + if ($node->get('field_has_tweet')->getString()) { + $variables['#attached']['library'][] = 'opdavies/twitter'; + } +} + /** * Implements hook_preprocess_HOOK(). */