From 1297c4d7ad76be2cd14804231f7830ede1c2af63 Mon Sep 17 00:00:00 2001 From: Colin Swinney Date: Wed, 18 Sep 2024 13:28:20 +0200 Subject: [PATCH 01/10] Reorgainize and add pages for Synced Patterns, Overrides, and the Block Bindings API --- guides/choose-your-adventure.md | 2 +- reference/03-Blocks/block-locking.md | 2 +- reference/04-Patterns/block-bindings-api.md | 241 ++++++++++++++++++ .../overview.md} | 9 +- .../04-Patterns/synced-pattern-overrides.md | 49 ++++ reference/04-Patterns/synced-patterns.md | 150 +++++++++++ ...-post-types.md => 05-custom-post-types.md} | 0 reference/index.md | 2 +- static/img/block-pattern-add-new-modal.jpg | Bin 0 -> 21784 bytes ...lock-pattern-bindings-finished-example.jpg | Bin 0 -> 20292 bytes ...ock-pattern-bindings-post-meta-example.jpg | Bin 0 -> 41844 bytes .../block-pattern-call-to-action-example.jpg | Bin 0 -> 19456 bytes .../block-pattern-synced-edit-original.jpg | Bin 0 -> 28639 bytes .../block-pattern-synced-override-enabled.jpg | Bin 0 -> 52930 bytes training/04-patterns.md | 2 +- 15 files changed, 449 insertions(+), 8 deletions(-) create mode 100644 reference/04-Patterns/block-bindings-api.md rename reference/{03-Blocks/block-patterns.md => 04-Patterns/overview.md} (97%) create mode 100644 reference/04-Patterns/synced-pattern-overrides.md create mode 100644 reference/04-Patterns/synced-patterns.md rename reference/{04-custom-post-types.md => 05-custom-post-types.md} (100%) create mode 100644 static/img/block-pattern-add-new-modal.jpg create mode 100644 static/img/block-pattern-bindings-finished-example.jpg create mode 100644 static/img/block-pattern-bindings-post-meta-example.jpg create mode 100644 static/img/block-pattern-call-to-action-example.jpg create mode 100644 static/img/block-pattern-synced-edit-original.jpg create mode 100644 static/img/block-pattern-synced-override-enabled.jpg diff --git a/guides/choose-your-adventure.md b/guides/choose-your-adventure.md index 7b29ba6..5f9931a 100644 --- a/guides/choose-your-adventure.md +++ b/guides/choose-your-adventure.md @@ -50,7 +50,7 @@ Group You can easily enhance the editor experience by also adding a block pattern for this arrangement of core blocks. This allows editors to quickly and easily create this section whilst leaving them the flexibility to change everything to their liking. :::caution -As mentioned in the [block pattern reference](../reference/Blocks/block-patterns) patterns have no connection to what created them. So any updates you make to the pattern in the future will not update instances that were created before you updated it. +As mentioned in the [block pattern reference](../reference/Patterns/block-patterns) patterns have no connection to what created them. So any updates you make to the pattern in the future will not update instances that were created before you updated it. ::: ### 2.b Using Core Blocks + a Block Pattern with Restrictions diff --git a/reference/03-Blocks/block-locking.md b/reference/03-Blocks/block-locking.md index 42027ae..203bb55 100644 --- a/reference/03-Blocks/block-locking.md +++ b/reference/03-Blocks/block-locking.md @@ -122,4 +122,4 @@ add_filter( ## Links -- [Locking in Custom Post Types](../04-custom-post-types.md) +- [Locking in Custom Post Types](../05-custom-post-types.md) diff --git a/reference/04-Patterns/block-bindings-api.md b/reference/04-Patterns/block-bindings-api.md new file mode 100644 index 0000000..02405d0 --- /dev/null +++ b/reference/04-Patterns/block-bindings-api.md @@ -0,0 +1,241 @@ +--- +sidebar_position: 4 +--- + +# Block Bindings API + +In WordPress 6.6 the [Block Bindings API](https://make.wordpress.org/core/2024/03/06/new-feature-the-block-bindings-api/) was introduced. What this does is allow our blocks to read data from a variety of sources such as custom fields (post meta) or other logic created in php. Under the hood, it is this feature that allows us to override our synced patterns. + +Again, it should be noted that only a handful of core blocks allow for this, and custom block support does not currently exist. As of WordPress 6.6, the following blocks are enabled with the supported attributes listed after each one. + +| Supported Blocks | Supported Attributes | +| ---------------- | ---------------------| +| Image | url, alt, title | +| Paragraph | content | +| Heading | content | +| Button | url, text, linkTarget, rel | + +While the editor does not currently have an interface for applying these features, we can manually apply attributes to our block markup using the Code Editor view. Let's run through an example using our Call to Action block from the previous entries on Synced Patterns. + +## How Synced Patterns leverage the API + +If we open up the **Edit Original** screen of our Synced Pattern and choose the code editor view **(⇧⌥⌘M +)**, we can get a little more insight into what's happening to make this work. + +Let's take a closer look at our Heading block within our pattern and format it a bit for readability. + +```html + +

Want to get in touch?

+ +``` + +Here we can see our new attribute added to the block for **"binding"** that controls the synchronization. In a Synced Pattern, the binded attribute is set as **"__default"**, which essentially means it's bound to all default supported attributes we initially set in our pattern. In our Heading's case, that would mean the *content* attribute but for a Button it would mean *url*, *text*, *linkTarget*, and *rel*. We can also see it has a source set to **"core/pattern-overrides"**. It is these attributes that we can alter using the Block Bindings API to create our own logic for managing our patterns content. + +## Creating our own Bindings +Let's say we are using our pattern on a post type about products where the individual items data is stored in various post meta fields. Using the Block Bindings API, we can set defaults and use those meta fields to dynamically alter our patterns content. + +Let's quickly look at the structure of the attributes we will need to use on our blocks. It's very similar to the one used on a Synced Pattern, with a notable difference in using our custom source (which we will create below) and then adding a key within the **args** object which allows for dynamic content. + +```json +{ + "metadata": { + "bindings": { + "content": { + "source": "tenup/cta-binding", + "args": { + "key": "cta_heading" + } + } + } + } +} +``` + +Here, we're using a Heading block as an example where we are binding its **content** attribute to our custom source. + +:::caution +Much like Synced Pattern Overrides, when using the Block Bindings API it is very important to know that our blocks are not optional, and we cannot display them conditionally. + +For example, if we bind our Heading's `content` attribute to post meta, but that post meta does not return a value, an empty `

` tag will display on the frontend. Similarly, we cannot use multiple Buttons in our pattern and have the ability to sometimes display just a single one. Whatever blocks are given bindings, their markup will **always** be returned. + +Because of this, when creating your pattern and setting up your custom binding source, it is recommended to always set default values. More on that below. +::: + +### 1. Register our Post Meta + +First things first, lets register our meta fields. We'll want the name of our product, it's price, and a link to purchase. + +```php +add_action( 'init', 'tenup_register_post_meta', 99, 0 ); + +function tenup_register_post_meta() { + + register_post_meta( + 'post', + 'product_name', + array( + 'show_in_rest' => true, + 'single' => true, + 'type' => 'string', + ) + ); + + register_post_meta( + 'post', + 'product_price', + array( + 'show_in_rest' => true, + 'single' => true, + 'type' => 'string', + ) + ); + + register_post_meta( + 'post', + 'product_url', + array( + 'show_in_rest' => true, + 'single' => true, + 'type' => 'string', + ) + ); +} +``` + +### 2. Register our own Block Bindings source + +As noted above, a Synced Pattern uses the **"core/pattern-overrides"** for it's source. Here we can register our own to use in a similar way. It's a fairly simple function, we just need to give a slug, a label, and then a callback function we can use to dynamically alter our content. + +```php +add_action( 'init', 'tenup_register_block_bindings', 99, 0 ); + +function tenup_register_block_bindings() { + + register_block_bindings_source( + 'tenup/cta-binding', + array( + 'label' => __( 'Call to Action Binding', 'tenup-theme' ), + 'get_value_callback' => 'tenup_bindings_callback', + ) + ); +} +``` + +### 3. Create the callback function + +This is where the fun begins. Take a look at the complete picture and then let's walk through each step below to create dynamic content in our pattern. + +```php +function tenup_bindings_callback( $source_args ) { + + // Return null if no key is set. + if ( ! isset( $source_args['key'] ) ) { + return null; + } + + // Create defaults for our bindings. + $cta_heading = __( 'Want to get in touch?', 'tenup-theme' ); + $cta_paragraph = __( 'We would love to hear from you!', 'tenup-theme' ); + $cta_button_text = __( 'Contact Us', 'tenup-theme' ); + $cta_button_url = '/contact-us'; + + // Get the data from the post meta. + $product_name = get_post_meta( get_the_ID(), 'product_name', true ) ?? false; + $product_price = get_post_meta( get_the_ID(), 'product_price', true ) ?? false; + $product_url = get_post_meta( get_the_ID(), 'product_url', true ) ?? false; + + // If we have all of the data we want, change our default values to use it. + if ( $product_name && $product_price && $product_url ) { + $cta_heading = __( 'Like ', 'tenup-theme' ) . $product_name . __( '?', 'tenup-theme' ); + $cta_paragraph = __( 'Visit the link below to buy ', 'tenup-theme' ) . $product_name . __( '.', 'tenup-theme' ); + $cta_button_text = __( 'Buy Now ', 'tenup-theme' ) . $product_price; + $cta_button_url = $product_url; + } + + // Return the data based on the key argument set in the block attributes. + switch ( $source_args['key'] ) { + case 'cta_heading': + return $cta_heading; + case 'cta_paragraph': + return $cta_paragraph; + case 'cta_button_text': + return $cta_button_text; + case 'cta_button_url': + return $cta_button_url; + default: + return null; + } +} +``` + +1. First we are looking for our keys. If no key is set telling us how to map our dynamic data, we will return null in our callback. The pattern will then use the defaults set when the pattern is created. +2. Next we create defaults for our keys. These can be the same items set when creating our pattern. Here for example, we will create our pattern with generic messaging leading to a Contact page and set our defaults to the same. +3. We then get our data from our post meta fields. If we have all desired data, we can then remap our bindings to dynmaic text to include our product's info. If any if the data is missing, we have our defaults to fall back on. +4. Finally, we return each key in a switch statement. + +All that's it! Similar to the steps outlined in [Synced Patterns](../../reference/Patterns/synced-patterns#creating-synced-patterns-for-theme-authors), we can then create a pattern in our theme and manually set our blocks attributes as outlined above using our custom source's slug and our callback functions keys to sync it in our environments. + +Below is the full code from our example Call to Action. + +```html + +
+ + +

Want to get in touch?

+ + + +

We would love to hear from you!

+ + + +
+ + + + + +
+ + +
+ +``` + +Here we can see that our Call to Action will display a nice fallback should our post meta fields be missing. + +![Call to action with default settings applied](../../static/img/block-pattern-call-to-action-example.jpg) + +*Call to action with default settings applied* + +If we have our all of our desired data, we will display our custom content. + +![An example of our populated post meta fields](../../static/img/block-pattern-bindings-post-meta-example.jpg) + +*An example of our populated post meta fields* + +![Our dynamic Call to Action populated with our post meta fields](../../static/img/block-pattern-bindings-finished-example.jpg) + +*Our dynamic Call to Action populated with our post meta fields* + +## Further reading + +- [Introducing Block Bindings, part 1: connecting custom fields](https://developer.wordpress.org/news/2024/02/20/introducing-block-bindings-part-1-connecting-custom-fields/) +- [Introducing Block Bindings, part 2: Working with custom binding sources](https://developer.wordpress.org/news/2024/03/06/introducing-block-bindings-part-2-working-with-custom-binding-sources/) diff --git a/reference/03-Blocks/block-patterns.md b/reference/04-Patterns/overview.md similarity index 97% rename from reference/03-Blocks/block-patterns.md rename to reference/04-Patterns/overview.md index fb267f4..ebb6113 100644 --- a/reference/03-Blocks/block-patterns.md +++ b/reference/04-Patterns/overview.md @@ -1,5 +1,6 @@ --- sidebar_position: 1 +sidebar_label: Overview --- # Block Patterns @@ -69,7 +70,7 @@ register_block_pattern( 'description' => _x( 'Two horizontal buttons, the left button is filled in, and the right button is outlined.', 'Block pattern description', 'my-plugin' ), 'content' => "\n\n", ) -); +); ``` To improve the developer experience it makes sense to move the actual `content` out into a separate php file that we include here. This makes it much more maintainable. @@ -119,7 +120,7 @@ register_block_pattern( 'description' => _x( 'Two horizontal buttons, the left button is filled in, and the right button is outlined.', 'Block pattern description', 'my-plugin' ), 'content' => get_pattern_content( 'buttons' ); ) -); +); ``` @@ -281,12 +282,12 @@ There is one item that you need to be aware about in regards to Block Patterns. If you find an issue with the markup of a pattern that you want to fix it is only going to impact new instances of the pattern that are created after you updated it. And you will have to manually go into every instance that was created using the pattern and make the update manually, or create an update script to update it in the database directly. -If you want to get around this limitation you can of course also build block patterns made up of [custom-blocks](./custom-blocks) that don't actually store their markup in the database. That way you can get the benefits of both worlds. +If you want to get around this limitation you can of course also build block patterns made up of [custom-blocks](../Blocks/custom-blocks) that don't actually store their markup in the database. That way you can get the benefits of both worlds. ## Links - [New features for working with patterns and themes in WordPress 6.0](https://make.wordpress.org/core/2022/05/02/new-features-for-working-with-patterns-and-themes-in-wordpress-6-0/) -- [Block Locking - 10up Gutenberg Reference](./block-locking.md) +- [Block Locking - 10up Gutenberg Reference](../03-Blocks/block-locking.md) - [Patterns - Block Editor Handbook](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-patterns/) - [New features for working with patterns and themes in WordPress 6.0](https://make.wordpress.org/core/2022/05/02/new-features-for-working-with-patterns-and-themes-in-wordpress-6-0/) - [What are Contextual Patterns in WordPress?](https://wpengine.com/builders/wordpress-contextual-patterns/) diff --git a/reference/04-Patterns/synced-pattern-overrides.md b/reference/04-Patterns/synced-pattern-overrides.md new file mode 100644 index 0000000..ca05f67 --- /dev/null +++ b/reference/04-Patterns/synced-pattern-overrides.md @@ -0,0 +1,49 @@ +--- +sidebar_position: 3 +--- + +# Synced Pattern Overrides + +Editors now have the capability to maintain a Synced Pattern while being able to edit the content of the block on an individual basis. In other words, we can keep the look and feel of our component in sync across the site, while being able to alter the text, links, or even images used within on a per use basis. + +It should be noted that only a handful of core blocks allow for this, and custom block support does not currently exist. As of WordPress 6.6, the following blocks are enabled with the supported attributes listed after each one. + +| Supported Blocks | Supported Attributes | +| ---------------- | ---------------------| +| Image | url, alt, title | +| Paragraph | content | +| Heading | content | +| Button | url, text, linkTarget, rel | + +In the case of our Call to Action pattern, we can override the Heading, Paragraph, and Button used *within*, but not overide the settings as a whole on the parent Group for example. + +:::caution +When using Synced Pattern Overrides, it is very important to know that our blocks are not optional, and we cannot display them conditionally. + +For example, we cannot use multiple Buttons in our pattern and have the ability to sometimes display just a single one. Every block used in the original pattern will *always* render its markup, even if we leave its text content empty. +::: + +## How to enable Overrides + +After enabling a Synced Pattern as outlined in the previous lesson, to allow Overrides you would do the following. + +1. Select the pattern in the editor window and choose **Edit Original** in the block toolbar. +2. Select the supported block you wish to enable Overrides on. For now, lets choose the Heading block. +3. In the Advanced panel of the block's setting, choose **Enable Overrides**. +4. Give your Heading a title in the pop up window, we will call ours *"Call to Action Title"*. Then choose **Enable**. +5. Repeat the steps for any other supported blocks you wish to enable and hit **Save** in the upper right. +6. You can return to the page you were editing by using the **Back** button located near the Patterns title in the upper center of the screen. + +Upon inserting our pattern into a new post, we can now edit our Heading. + +## Settings for Override enabled blocks + +When an Override enabled block is selected, after editing a **Reset** control is availble in the blocks toolbar. + +When the pattern itself *or* any of its Override enabled innerblocks are selected, the usual block Inspector Control "Settings" panel is replaced by a "Content" panel where we can select the blocks that allow for editing. + +![The updated block settings for an override enabled Synced Pattern](../../static/img/block-pattern-synced-override-enabled.jpg) + +*The updated block settings for an override enabled Synced Pattern* + +On the next page, we'll take a look at what's going on under the hood of a Synced Pattern and learn how we can apply our own logic to manage the content of our Patterns using the Block Bindings API. diff --git a/reference/04-Patterns/synced-patterns.md b/reference/04-Patterns/synced-patterns.md new file mode 100644 index 0000000..30d675c --- /dev/null +++ b/reference/04-Patterns/synced-patterns.md @@ -0,0 +1,150 @@ +--- +sidebar_position: 2 +--- + +# Synced Patterns + +Block Patterns are an excellent way to quickly add common components across our site. But what if we decide we want to update the language, link, or design used within that component? With standard patterns, we'd have to manually find and replace every use, this might mean dozens or even thousands of instances on a larger site. + +This is where Synced Patterns shine. We can create a global component which can be edited once to then update across all instances where it is used. For example an info card, a grid of logos, or perhaps a simple call to action are all excellent candidates which may require such a feature. We will use the latter in our examples. + +![Call to action example pattern](../../static/img/block-pattern-call-to-action-example.jpg) + +*A simple Call to Action block pattern* + +:::caution +One major caveat of using Synced Patterns is that they cannot be created programatically. A Synced Pattern is stored in the database and therefore would need to be manually created in each environment it is to be used. While any pattern you create can *become* synced, it is not possible to declare it as such in your theme or plugin. + +We will discuss potential solutions for this problem below. +::: + +## Creating a Synced Pattern + +To mark a pattern as Synced, you would follow these steps: + +1. Select the block(s) you wish to sync and open the options dropdown along the right hand side of the List View or block toolbar. +2. Choose "Create Pattern" from the dropdown. +3. A modal window will then display where you can give your pattern a name and category, and most importantly, mark the pattern as **Synced**. + +That's it! You can now find your component via the block inserter under the Patterns tab > My Patterns *(and any other categories you declared in step 3)*. + +![The modal window for adding a new Pattern](../../static/img/block-pattern-add-new-modal.jpg) + +*The modal window for adding a new Pattern* + +## Updating a Synced Pattern + +To edit your Synced Pattern, you would do the following: + +1. Either navigate to it in your themes Patterns directory under the dashboard Appearance tab or select the pattern in a posts block editor window. +2. Choose **Edit Original** in the block toolbar. +3. On the next screen, edit your pattern as desired. Make a small text change, a major design overhaul, or even replace the component entirely with different blocks if you wish. +4. Once completed, hit **Save** in the upper right. +5. You can return to the page you were editing using the **Back** button located near the title in the upper center of the screen. + +![The block toolbar to edit your Synced Pattern](../../static/img/block-pattern-synced-edit-original.jpg) + +*The block toolbar to edit your Synced Pattern* + +## Creating Synced Patterns for Theme Authors + +As mentioned above, Synced Patterns have to be manually set in each environment they are to be used. + +This limitation somewhat complicates their use and while there is no one size fits all approach for how to best handle this, lets walk through one workflow that could make this easier on the developer experience for theme authors. + +:::caution +### Ask yourself, is this the best approach? + +Synced Patterns can be trickier to maintain and come with special considerations. Depending on your circumstances *(budget, ability, time, etc...)*, it might be easier as a theme author to add a pattern in a block template part for use in your page templates. Or maybe you could create a simple custom block that renders your pattern instead. + +If you need more flexibility, Synced Patterns can be a viable option to achive that end. Perhaps your end users are creatives and want the ability to make design changes to the component. Or you could be handing off the project to the client entirely and this gives them a bit more freedom in the long term. + +It is up to you or your team to thoughtfully consider the trade offs to using Synced Patterns in your project. +::: + +### 1. Add the pattern in your theme + +Add the pattern you wish to use to your themes `patterns` directory. In the doc comment up top, set the *Categories* declaration to "hidden", and *Inserter* to "false". + +```php title="patterns/call-to-action.php" + + + +
+ + +

Want to get in touch?

+ + + +

We would love to hear from you!

+ + + +
+ + + + + +
+ + +
+ +``` + +### 2. Create a block template part to house your pattern + +In your themes `parts` directory, create a new file containing your pattern. Perhaps you only have the one pattern you wish to sync in which case this file could be called `call-to-action.html`, though depending on preference it might be nicer to use a single file to add **all** Synced Patterns, in which case `synced-patterns.html` would be more semantic. + +```html title="parts/synced-patterns.html" + + + + +``` + +[For more information on Block Template Parts, refer to this section of the Gutenberg Best Practices](../../reference/Themes/block-template-parts). + +:::info +### Why are we doing this? + +In the first step, we marked our pattern as hidden and disabled it from being inserted manually. By doing so, we are ensuring that editors will never have access to the original, unsynced pattern and cannot use our themes component in posts or pages until it has been marked as Synced and added to the database. +::: + +### 3. Mark your pattern as Synced + +Now that we have a block template part in place, navigate to the Site Editor in the WordPress admin and select the Synced Patterns template part. It is here that we will [follow the steps outlined above to sync](#creating-a-synced-pattern). + +:::caution +This step needs to be taken in all environments. +::: + +Your pattern is now Synced and has been added to the database. It is ready to use throughout your site. + +### 4. Updating across environments + +Should we wish to change the styles or text used, we will still have to manually update our Synced Pattern in each enviroment. + +One approach might be to: + +1. Open each enviroment in a separate browser tab and navigate to your themes Patterns directory under the dashboard Appearance tab. Choose your Synced Pattern. +2. In one browser tab, make your updates as desired and hit **Save**. Then select **Copy all blocks** from the Options settings in the upper right of the screen. +3. In the other browser tabs, overwrite the pattern by copying the updated one into the editor. +4. Optionally, you may want to also copy our updates back into the `patterns/call-to-action.php` file to keep that up to date. + +:::caution +It is important to note this last step is a fairly major difference in traditional theme authoring. Typically you'd rewrite your component locally first, push the updated codebase, *then* see your changes in the other environments. Here, we must make our updates in all environments first, and essentially work backwards to update a Synced Pattern in our theme. + +This is another reason trying to maintain a Synced Pattern as a theme author should come with special consideration as mentioned above. +::: diff --git a/reference/04-custom-post-types.md b/reference/05-custom-post-types.md similarity index 100% rename from reference/04-custom-post-types.md rename to reference/05-custom-post-types.md diff --git a/reference/index.md b/reference/index.md index c2f0b63..e2d98b5 100644 --- a/reference/index.md +++ b/reference/index.md @@ -13,4 +13,4 @@ keywords: [gutenberg, wordpress block editor, reference] Welcome to the Block Editor Reference! :wave: -This is where you will find detailed information about how we approach building blocks at 10up. The reference documentation is structured into a few different sections. Its starts with a [Fundamentals](./01-Fundamentals/the-editor.md) section that will go over the general interface and get you familiar with the editor itself. After that there are sections for [Themes](./02-Themes/styles.md), for [Blocks](./03-Blocks/block-patterns.md), and for [Custom Post Types](./04-custom-post-types.md) that each in turn cover everything you need to know to be able to confidently navigate your way around any project. +This is where you will find detailed information about how we approach building blocks at 10up. The reference documentation is structured into a few different sections. Its starts with a [Fundamentals](./01-Fundamentals/the-editor.md) section that will go over the general interface and get you familiar with the editor itself. After that there are sections for [Themes](./02-Themes/styles.md), [Blocks](./03-Blocks/block-styles.md), [Patterns](./04-Patterns/overview.md), and for [Custom Post Types](./05-custom-post-types.md) that each in turn cover everything you need to know to be able to confidently navigate your way around any project. diff --git a/static/img/block-pattern-add-new-modal.jpg b/static/img/block-pattern-add-new-modal.jpg new file mode 100644 index 0000000000000000000000000000000000000000..71345c61520f058f550a901da6d21fa881a07d1d GIT binary patch literal 21784 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 literal 0 HcmV?d00001 diff --git a/static/img/block-pattern-bindings-finished-example.jpg b/static/img/block-pattern-bindings-finished-example.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aab0c804b197a30be259ec7d1900335ffa342e16 GIT binary patch literal 20292 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 literal 0 HcmV?d00001 diff --git a/static/img/block-pattern-call-to-action-example.jpg b/static/img/block-pattern-call-to-action-example.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fe8cb8ddd3122da0fe7d00f13d0f9bf811981438 GIT binary patch literal 19456 zcmeIZ2UrwMwlLh}oO2um1Ox%enGujIA|Rloktjhj$RGoQAUT78Ac7JEB#9(JU?e9M z$vG=I%%I=^!^}6nd++Yu_uc#N-hKA||M&dQ7Sz<~>Z((HPM@wmsd3Y|Wq{s5M_&gZ zAOHY8{2zc@0n)XhZY}^|WCVx;06-296L10~cnCiPP$%H}Gps`(0ucSyPY3`pZUFIr zjJbhte-%8o-{$*339@WtOi`f;AbnH1nH@m4s+(_OS?7;cr2 zTVG2Ha?{jUNB_F^Z)6fu+xz(3|25guE5OfGSCjAd9V++`ON^-EwD*3%DCQ%n&Nc?%&-v%h1oc$f~r!e>` z>*(VbfM?ScJbW`Kz~>hnj)$53@E3)LpZtRF{RuAn1v~r+ZvAb{EmJN0m@jyk-qF?G z2@fyh;mZ#HrT^Z4fj#dB{#y4}`E@U;oxRM>@GU#Oas$@^U4RcT$G5itQ$Pc-1oVMx zfcAegNA|ZlT7Wm;0|WzpfE#cRa0LSJ7&P!bKEQpz84v3NUVtMY0bItz(!dpbmHowQ z{9Jtb3lIO&=Us@upGN>dl=_!Gha3QCio##!>|go>UjP8zV*qFz_ObV~{|()*AA)0I ze-|0)-;N2WH35KR5r_LO1OQ|i0C1j)!<`l4aOXvM{PO_t!3*~RU?2yU37-%V@B@Sl z1Vju3xNZQ1$3sH!Tlr7K1cXGyB&1~I6qHo>0S)v3ApsE)Au$mN$uA)!2*sZVh#5#2 zFGy*SGMU(u@%u7MKT3N^E}&W4!D2ds6qIrBi=d!nWn<^yyeK3ra!FKHPF_J#Nm=Wf zwvMizzJb{-a|=s6d5%ubF85sB-2DRr9|S>zA4WcoijIkmi%-vZl9`qLG$*&PsJP@+ zX<7N}w{`UmjZN>GTROYCdwTo&2L?yS#wRAHre|hXR@c6MTi@8++D09I|8aEu6Mb^} zi!K6y=uc$ffB!_;@91K{(?v*3Ohiofi!K7fAbcfaASSsWMarmQLT2yF#4r7boLMvN zWo-wAfQ%`U#ldfcl2uT4ArzHQaQ2s}u{;kmdDs+D?I6M*pJPu-FVlw_O z3XVA7krW(dPFrlTo9{foSyml{Wul{ifAQ+W0fY`XV6_YfJnrg*{NSp^0Uw?s(67}h zLt>Qo18!NW{0_-2c&Gh}#7%VfW~_e zh9Ut6#23x>z4Nc$(AM@x{0;#|h?fxuyjV!V68GSM9+N%Cd8H};!oudI-=p|F7mjQ9 zxp$gJOl%H*kK^}T2)X@}Ht^q^{PWHDHz)rslmC9Y|I23kfB!ydsA__QbQ z?O=xq>#Dqqiy{Eb2mS$?!w@S@={U{8Ziw z_3$|5ua8eI2ce3g?^2SYm`!Y=FW{#V{NGe-n>&pT%d}lP^a|kDK>vW z`UGWW%QmTM<|`c!&2X2m{6ek=Djo6)UzS)-aYW-&wWp9eb2jIZ3LcydF%Kxx9-Gc&f7_o0RmCR-;p7t+Zw~ zu*6D&E=&6}t;9!>%C>vfBQTXx!wPf+cIkR;B(HPNcsaFx#-rx>C=T^kb*f5h5K?pp zuQA0=Bj;$(&@-{8)$+$Dt&R7?$R4P4Ou zs&DMjlB=6tUn&Uc)-1|i(Dfo_BUgGKA;s1Z(XD~Su5Svc+?nQ<&L7cJ!R0?+JG)L< z5FjQoN%YDlTt3lqTQWWjgi%7bEx+3hw3Q#bIVMMSbux%hP?GX`PV#LKhb9prW!i~L zYuE96v@;H%5?gM6o#h*x`|1%6U{bkGU3=xy_nVFx?ff5T_nN*~lATdvuH#kAp%oRV zCf4>e<*_p>Ca>`)SXSwKw*^cDhO>0A-yVZ3gf+z)P6zqP*; zNR|3x;Np0sG~v0yOBJ@pFKRo7UB@M;=mO6(qb2BA$MK`NE`^5==RaBo$hgZtg@NzF zgT7^|!5Y;YPPhC~hFumofYN$(Gvh&`Y)84IqKg^tQOfyYw-C6k$MdO@qIL<&d)w|} z6N^`AAB4T$Q+Tal&v*qM#X9LTPy*Ft9dBs1kegpON@usNO|K-@3*He3VmYO8yXR)_ zmG$7t#d-#sa&C79X4(!NfCW{$Yri6X148YA;K1Bc@K~bvc51n-apIXa=Xx{v<|rFq zfC$qYmPPD{H>$uqp{tz?t?ljWmAiXLV`<*xl(btVAVPkJJ1KEx<`D=y5cM_pYh{g` zz8c$)kM8c{Ow*@!@t8jJNy$#Z+o@O#$688^-NlL0`f&-~rJHZZC7s^KZwyWMJOy*4 z8Io?*hnu;53e7yzfLcRP;4U?L7*gdRlH)9U1;xymn4upbUmx}vp(@bE zoqf07$?zy&-p-b(_w~jB`i^H$h`cCix;IoE8nL_sYc=5o4WR{{wuaq5+xd|{~@ns3=h$RjBg%DIC^_8>@Z&|;r(BBP9-Laa?Tv-r0u$_`9dONl& z;8vPz)*z5XsxOS$XpqsE{BgjznG27tk8!&nXb7#YT1ZQ+HxmiCXhX_jN=r`KPJja< zqVAwygNR*ETRG2qR!(Z{>$3Ir9>m>q%C%R`AR8iKcwOmyh3-?{>iYuxE2*xg`+(YA zoedSb)XQUiYjn>c+GW&5|5IHj>aJFFYXIeoWzgj{AY8Hhv^6yMSyrXpfS(HufHTQO2IX5t- zSJ`CqXE)Qo{ea(?lU1hm<@XDGD;hWH?~!HXA;-=2%jC61{PhKXboL(881ydPY!K`U zjpKzlQ7!w^M=qum;!RVb9Qv`@*jLs`|BcAP zw+OP2k!22$iOFi|kwCGTs{23G4+;^AVMR-(Q^nwcsR&b6BXCJ-_=tke_^a7~#d>Mo!otqCfEfo1KOY6_<%;cnn3T_o+(;NhNltHl%sFmjIZ0ZEb3!H8yfVwsb87`XtjP1; zlFMn+t`C%J-^3V4@S6*|c5rFXB_JX?M$ftLI;FVP8g6W|O_Cl(myx&*VzP&;?d#+bEc@llt zVY2R1$Y7ST5zc03%VPEO>!_e)ZG zQ@-D=Wo{?HzfUMjfR0^TPW(R0C6SWyJ(lIhrMlrr&oG5gs700cOMB(1kzP)aIx<)F zj}We)f(5*(?m*GQ|9vgGbNV**;Z+n_gE7LK3#9&VgdWsCcu_KnqW&Zq%n!xz#_u z;3@pwCSupjL&hnY`|Yw1!TNLL_vNM@<2VF)>t&b;iht+oD3{J#Td?t$qBG@6Ud`Ct zZHKva7o+!MQ8dqAmD?Bfzxpbt@Aq9k^guf-4BN{qjcTijR}Drw_Hh=sw6?Rn<6pc} z>~=@B+>RpC_OMr4Q<~66>8R$5=wKTggFtTcDuKs;#CV!q7|G?M&5h>ec#`meqYs7wvHBaH5J75-t4jx0x zFGoK|>vxFg5p~Jj4W~B4%v2oD9zGpWsFRMe7hX{0fmtt0?(U#eZXv;u7>{C%{Y3q9 z`CHK_*{7oq8m}>WUs<*jWx3CdJs=b2oBYz%Gq&-hs=U}u!p>!QbWm({I2O);u|&zN z6@%+)!sYI?f=joMTvc$h1{FzSdvnY)H}JQDC2a}yyPr0T<=_dRy2ke_DKv}Fx#fcR zqXmWTTm!CG5w^Am8Pt4?*939E?l~&K z?7X<0dAr4VvP2=K)%+E6)BDypw=5u6vf`mx+JU@xbu8JJqs5v;b)RCpIG5s&AdE1x z29!&4Q1$%QPh}XtM|1I$^b}~NWr+NjIbGnCcHEGBG{gIL(ukYN53p8Q%_qq03C42; z9B)VPz7`ezYSuW;`-8IUv%#kD*#iG;g>-U{e0dX1AyUU$Pyj ze%LjEr(U;c{(1*L&Db~UAbF)(TBVZ9GWAwL>r5quO=gp>HIZ043?E9eH-%8R8h@capbD@ylIeYIc2s1o_U77(X|FXhuPtPE#I1v zcuWD>x)8e5jRP8ldl0lx-P`KCjcxA{*pYF5+bLgb@s0Tg;m27zd}MsPwjb5+HjKbR zk%&03bHV{N#uyD>qwzLrYDUmQ?zm@H`ST1=I(2c2h;AoxiRuYTr)ob~6}dESa9WQL zcvyc@;;|j}2&04cUXhG%=g96#2Jm~Rfb1m7%HIK zTb!%I2DMq}V(1dTPE=<#bSQvhEf+0tz45#V>|t5YE78PDhIaPbQmxf$Q99WB-h7kw zW4hNGwK;#sJWDL$o6hEvFb~}tjMQ^BF>j}^7%1E##qLYM!h?&`xk>d3qH4tb+;o!- z+gu({aq-pq1`XybuM7DTNzB;+x~rn@tM^p!hC%Azw2}hC=x{(<(={AWv*Ufv+3?v? zcNqtqa0M8jVjFS5NQIRtI_>5H2s)z8avamjY@!Xoaby27>i}=b6G}&u+;-w6SKC3k z-~hV`uw%-sOwXl~+4@J2s!CkCbx-`JIC-7?hxX*>Q_3mu`$HgdZ*73%BpTbDa^Y&qe zXM#IY+qE1R>ovkfK7DQ%GoPH0TLU;CKW#&4)5ZM+^nq6m<=u^l3FA4>l>L@=qo|tH zBbnTg`s5Rbsoym}@4Pb+LPWsJXfbFyIlV5oJBzsvVHrCJlSP;{Qo~i!80lNMW6==+{1loJmo3gKP`?R_$wDR)E;OxZ0 zhh{{;)uFHZsVujB`p91^0qJ@hE#NxKNbzQ@UH&~54@LZ?cBPz{Zc`P}l6PMaY#GmW%?<{Q zETK5dd4t6EeL={Z%f=l^^p8GF?S01q;Z5eppvQsY>R>XoTX9Pq$+yhHj^^>;$}iCb z(qRr)1qo)GjoD#5U&8oc3h?N5`El>SGA?S#4OfdJXA5!eM}_fTV{#z6De`JSvys z2@7phB&`;`1~Gl8j}Fx8H4Af&tV@yL%)I;CX~^y8B8z>*E%l~7UP0me*PSxhKi__h znZF0PAXE`|L)}`X;A`HI?E;C@9*qhPn;JqyQi;J#Wjx0$TD^W;0`aFAE0VigE8bDL z5j&&XxiN7^Pwmg-8WzhH@;t>)+4nNo6B#;sZz!@8M>?(w@9r#ngV0%1eK(DRS87=9 zym6Wc$gx;l8LXaQ+_$tOfDRDEW8OEStU8MsGgUTEGdZ+{c@w?&bj#cxdVc_M4pqFZ zG`n5T5RJX`?QZI$?VwaR^_0{ZC)&{*iTFT6%Htp$5vs8-X>m#M67wMwL*Ly^qLiN% ze%>?dUENbHp&LEk%V@$$XgIS&*PkgWg-^5j%EAaE-;%h!^Qfuy+18;L-Gt0SyNoLWACz+Q;1OFnj#^1LAV+)bNiA$!Wxc%+ zZOTu4`R1IiV0GWRc-AbH2=SwVBT#Zaxd&wCS+_bVGS4sgp!m0Bj%V{1=(Y$YfLbBFg);mnp5JoZ~-a5w9h zE|#g8N9Ok~FkjKs<3<`^Uv2kCfp&F~OE*#1+eMMlwXdPd9??R20RyIr(fhZx5BC$9 zJ}>m>UVY&UxeAj(YcJPCvC7Or?H2VV4&ocW9gRna43(OMJ7+d4?!G2W_8~QLj?Lrp zOU!R0uMl}(Kb(kB;@8G|I~h>Y{T*mb zeOq|NCF!Xb!G~}9WPH36-{Cz4Ga;Q2W|-qW6d{kJ3352r)5O7}O1%z;$|Au6v-Xl-PJtZ6 z4mjeA zboA}cj+fnd>NAYo z1dl0;)5Y^14r}n|eoYUO$AXiZF<*`o1?QKf=IKDV6p z9)f6L!B(4^uv6q?@^(2Q*r-{UW8rXZD!E|?D}k(zTT7vFS7$_VgWSdf^{hBD6jiKW znkq}@v8ct8w%dMFhBUa> zN9*zOmY@DkNV0T_u$X!na_4r4c$;1tOmvKO7GX1z{P$tQb8MYs1P%QMrr(PbMSAHK}=A7oey@mHu#o}QHUqMj^6wL_s>Vuw8fVKiI4m7_9L7Y?XQWehJaE&B!AvPdP>Ai;Ef)pUKqbdR-R`moL=+M^WC1$5u_sUuH@8ZX{&FYD6f4!@@E zdyDF5_EQLk2RSNo-?dn}^LYN`d5!l6ga?Nb#4z9gEO48ZVr}X16}4`Ui&cB$b(efw z6c;_zs=Hp7PfrU+)}L}7f#${x#*ZY!*Vl}x9mX0AtrJpvKjnMs~%2 z%)Qg#TFD)iVxTSBKcM9CpSaC=tO8*{Kls^gna@~c_THA_Ip2_+@tbX9>MG|s zdfE+J*y0*Q_B(6VS;;US7}J34pi&bxaG zOmY*&1+I*W>Do`_UefY}i|1pGI;s;^4|a!F3X*d3f)-^^@-5omGto*ua8qMAz1ZE4&T)0lWrD0iH;VcNW7$@-AB2)S)Y$JFXpWV5BC(wiBf(>P3e zQDU#NOjBPtT&c3=u>uyWK>YHU}lK<+@-I6s3 zgR8nKGP-nCjmWy?``7XNd?C?p8j8;aL1Mx2eyI0iM3H?L5awmo@p30-36|GKpBoD0 z&YyH3T&Whq`umU@A9ycJ9$m8h=@H}-Fm%mv>{D~I=nJ~zAf~y=Y8X9QqXNo$(9NrY z`t(&fB?)GKrQl{dUb`i{q;A_v&@7tsEkziB(;9yXxYg34*kiT4QG(|%OWf1{j?Mqm z{(tJWO#JWN7M2dT0>;*h70?hnlv=~k#hB=OZH?oc*F?S;mVW(AnICpjT1|)iRpDZn z{_{PSZ?!OIBsD(RmC`G6@DzRb+876>aVhFar*3xATx&-YkH6h>>IhfUyCqs>_pfwO zCoU)V=DnEQDUf5EbR|Mj zcK0Vwa(?`}Abu2E;tM2K|I+MFd1-f%XS7}3%n3|9=Q7QGJRu{m(THm!Fx{6>Q>>1y zR=3O7J7t>Y?E|1^66@R&Y_A@UeX}3@od4%_Z%^{_jRYDQn~l_;)#v}zfv&a2h5e9} zb-3LHZ+(2_xGL8ZFtO=NP_-?DiW#Qdp8D!qRnpv4ZyIZJ(qvj`l1SS#O&Ahbou8m$ z^Wc|{BO+c*%y#m}5{+waOl(6=`>=h<+)$ve5XB6$sO=n);EKkwpIb3$6-ze;jA{kb zx2on}Y#5c};hlBqzErOH#_+PXd6tuQ(D_{Si9R3FkL1C)fw+oPgC}9UNHO1U>2beO z~1(Khs+L72^ftCjZyu4^jYO zvD@gvUcpDj9`t;qL0Ro+<$jPvp0^vnbvHUVdq)Mj>Ibd)Vznlh60=A^-Q9|`w(PcBQ)A0f`*X*V z1Zwig*#TAiN9@5l;|FFPM7d{eSP)d%m`4{S{^Oha#rWY}s-X7k37$QTCn2q^Ukjdj z?fT~V+7!gK6Tw7KVQs#vMj@I^5WB~0I!YT6DlgeP&kIG0_11ey70S1gGsn1Xyqhp! zNb7`!u6fbiHdYuN=?bKDZ%PX)-=u(E-&o#30|=`oKNBy{&eVkr+s}~APf2q|f#Mo!sB2=2ro8Igz^gII(RtaaA4l36ljw4YFL}+J4}JDT2lkzQJk%2| znG&xF<3Km{Am~~zRc^CA)czR}C~mzwWtqP4$v((y@s?lD<;qe1L2k^8^P_oX-yic! zG^$ko%dTNuHk&A;mG@A`rsPjU(yz55p8ECtyadE7yjR^&oiHYaT|%;jGoHX?N@9!0 zJFCXWhQ#N`3JF>K`*SsBUFq#^dCD{Aog5qEv zbznA}QXK@@e7F>SQ17}gyTo8OP`0Ec(BEm@Y>@Rt%5$XAL~r`mB@P?2({9#|JqOsq z3W$8Go%FntAGx1YZo4o;M`rAk^)uUaQLRotl=96TAs3&NH}a!>H184##YWVHWQ6;` zk7-}qX0~3{OfF6!=u>Z)MXM|$y5IyJy50F4qq#J9s=hXaG<$hT2&HpyaAYpJaW_f5 z8uhzHEkVF{tehPczyq-x!5Edzp0s3zd(k|3zW^%=1Z7GNRd{T(7KMS?)O6}jfV5IXcz0<>Wh*AB{;w4Q9z_i;pU2Pddj5dH7 z;R9gy$kWhw^XEZj^?=kG28!R?ATVhj7pDSVmh(kouJ4D zorzAAE%zxmg4(!?jvalk$Ldurd^O3^_|3S*!Og6Fnj2K;xGa0-#Qr2!;@FX>*&^=s z_Pp#BM5GW3)~*r?#tJK33C#_@_O>#J!Bd3QRV&zZMIUHkB-654ifSi;i6QNp*T3*Jbca9ZhUHSI@rz0W&wZ{-eHt=W+Z!2wn*dnUbM6RcBg1(a*`_3u3N zHzosI*Kz=HriLFHHbfnw!5r1fG!kbkWW5wW3aGXp=9ibchp~*yvEfrOgxVJ1_LuE1 zTIA$J>Ty>9SHW58FHn+E^&ob)ku5v^hBMnrOL|*TZzxKxKH;*_(;4HzZCaVgFA<8x z1)VK4!*P2sXSwPwb=`=ULUo4AInj&9 zVfN##l_xyi_`G)ymb#ivE6cbahB$!MBQ>=2#spvb?7H~JXDgWo%KMs?(i9xT4AWDp z6(J)YPEOnIxtlQ0YP2YqH6)^)^h;ou zTo@doD&-%zayC=hWVGVYXXGud@zwkBTob{Ylf=xEpAV1Ln-91!yyzelBX-FgW%tBO zva0Zkc((%6?8m!~8BA@hX?4BENGXAgJ~c<1Uee!m`F&8pxgz?Z?VTmSB)E}K|Ej%DeQurjz;435@68Wvvpkn@9t zGxNh47ZpQDdPkSh_r{U+tl3B+j!&T#bX_$h)*#x@41?qa7{ASy8v>*?O7SIvHJl?PAlqAdc_@_3eQ1+zA}z*6D|Da}7V$q!u{t&$CukQ5#5WM7U@ z>uKy`jMAR(&Iktv1W$8ObWwOIXgD(lp(|E#Kyv+=xB>*l{a`Z9YR15eb#Zitndkdk z-FE#u8uuj#3+Zg`859~A?;i;<8tkIzcISq(}|CdLIl7v~hk z!7NHWj$VQq{i$|Bj1USOD}<77cp><+$yBh3QYc>~BuAjPFMmPswzB|_Ep5npgQ_nQ zzB1e$QbC0S*tQ7wcZ@8ODI9Y>+*lRPMzS8QU5;syx2)mLZMKXY!M}T$x38TfXpF(M zP+T7#+Ad}axUU(bpL*x&KG!p(veh1Nc4K!oRrS;!5Qrje->i{{S#Ij$@}%wSvY6%e z*?Q=o&TRJ z_f!9C%01qt@Q?Ta{v~7niOlH#S5v~tz837|oN2-IN83dfVT#D;I{z1Lv)mR~k2`u_ zj8vx>1kZABUFdw>Qg-udzu<-dh#TH{fW~`?wQxWz80is&1NuD1!S@eNlpyTzd3(lYh3W<$pie8hnG((#G3Ir9hMKTiB&D( z0G=9&!WOkBA)I~^efZC&{;-PcACXLDo9Mnxx%<^NadLY*$77U3>b!do2IwkK(^DSO4!n zdSuHRd-$|JVX-y3GrYiTk+i|uAUClyONV~#S8%{PI5yRKYG~qE5wfB?!ut*M2=oF6 z5Ml80NGWivi=x9PvOSmnytYbOv_{@4?on=M-S;5inOrSfm0YWtSg&9j4tQ|qNuuKz zS<#3m*|)q31n-`YZoh)Ie~k|Xckqg!cn+eD5{yjtNXtD#y-Nqmt|5)6g_yW{BOf?AP<&9u zG^r|_sf7(Gkaa9EsnYqb+WKpaVEJayx;Awa*v`VESEgU)KU6T7c#Yj>)E3%sO^_V? zfcJ@?`NQ;UQ3?@(H55=tmmS+^D@l+)+`iB)OU8ODeQ}{1Y3S<{0hia8S0Ulorc@-V zhNbA77s5hUa6rsY1f48&cdyD@)zEwO<%8OOua$9e9RY^g)V^;K1hXTx!zjmi;Ox8k zc}_bi#^}5#OmZ4}ucKWu+W;9g9aVqM@Z%X3b9+eKwKK2%Zu#TJA$EumA$1IO(6Ylj z1RJ(ziCmoty|YGJg<`Uqk__X8Ni}}iXi6}WN6h|w>w%`%IqZ)nVNkReAm+-Zeg_s0 z4*a?Iea+Tkr+aA*L5txkcgvSdpFA)fb9vJuZ?<}lCc6E9R z)CB2KGwZ`%LLp)?;FSfJq25VW&Ih$GZKsEXG6H#X$!3ZV6W6t~1kx)7Kez}=QianM zhEYJ-j>X?2H+tK&bR%t0$x)?Hi#fAo>&?q+iX4e$r>wf|5w(5O}(p%kL@9ON8FfSjeVY%Vk*x4n9Js7+aI=R-B&)qT> zSVbyHW3)2)CSZigAiO-8d^y=E^*&#wxEMoo%)%^LG=>k|vj%yDpx+I<2vg4zvo+}N zZ@*sV+?Y$DGb8>@N6B>o3ch0BB}PgRPByYcc=_eCW9jo(`(6Sjjm9LG{gpTDm5W~< z=P`XrT+6e36*dNWE8OY*xPW3`H4u4#WlRd2T&PF6t=?WAlLOIid-yTm=-YKNc4C>k z?_%3AN3P&St4g&RvloK5tMf^Xqgy~xFd5`om$Y49*}@F;p3xa~(3J1pqIs`ig~!e$ zx9eRRk4jEL;9eop>HuITj{ z&aWFUT!`^*vLg`QNItZJ5#Rtv(o7ss;yaaXS%$&qZ>5hd)19%))|`ta7uIwR!puZzX}}aGlUDSiRuk>thdTwdDf8D*hoA4 z+xWvXW9+q>mtE@t_j2R<`H_vt{f?G$pt;N z%p7OTA2p^TkW1pBKmG@#{15B=6FT*O1Q3T?Es;xFsOTcz((++{=Gto) z2wAmlUw@oYNlW(YYx4&q3o#dQ061vr=bUVX*NyUP%>cuc7VxyF)=HMVOaI&fKWT06!zca z0k3GI4Y6Sdh=Z>XjC)&tyn2!DiPko97uxsNXz-5`rDP}M`_E7u0O!X6Yv#K@OpZ9g zgCNTo$KJn2lY%x0!)IR=ygxWQ!TVY`Ywi`Ml#O6-p0=v+O8p)W{>$C}%Dxaa=1`rK z!cnM!cl$&}OzYd4tbUAi&N1A4b8$1ONa4 literal 0 HcmV?d00001 diff --git a/static/img/block-pattern-synced-edit-original.jpg b/static/img/block-pattern-synced-edit-original.jpg new file mode 100644 index 0000000000000000000000000000000000000000..def2cceb99738cf9efecebc38a2c37d8432cc375 GIT binary patch literal 28639 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 literal 0 HcmV?d00001 diff --git a/training/04-patterns.md b/training/04-patterns.md index e66f71d..1d41a03 100644 --- a/training/04-patterns.md +++ b/training/04-patterns.md @@ -135,5 +135,5 @@ Try to replace the image url with a dynamically generated url of the image file ## Further reading -- [Block Patterns - 10up Gutenberg Best Practice](../reference/Blocks/block-patterns) +- [Block Patterns - 10up Gutenberg Best Practice](../reference/Patterns/block-patterns) - [Patterns - Block Editor Handbook](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-patterns/) From 7c21d27a36d461848554dd0a1460b8bb5b56129a Mon Sep 17 00:00:00 2001 From: Colin Swinney Date: Wed, 18 Sep 2024 13:37:39 +0200 Subject: [PATCH 02/10] fix lint errors --- reference/04-Patterns/block-bindings-api.md | 7 ++++--- reference/04-Patterns/synced-pattern-overrides.md | 2 +- reference/04-Patterns/synced-patterns.md | 8 +++++--- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/reference/04-Patterns/block-bindings-api.md b/reference/04-Patterns/block-bindings-api.md index 02405d0..a44f104 100644 --- a/reference/04-Patterns/block-bindings-api.md +++ b/reference/04-Patterns/block-bindings-api.md @@ -46,6 +46,7 @@ wp:heading Here we can see our new attribute added to the block for **"binding"** that controls the synchronization. In a Synced Pattern, the binded attribute is set as **"__default"**, which essentially means it's bound to all default supported attributes we initially set in our pattern. In our Heading's case, that would mean the *content* attribute but for a Button it would mean *url*, *text*, *linkTarget*, and *rel*. We can also see it has a source set to **"core/pattern-overrides"**. It is these attributes that we can alter using the Block Bindings API to create our own logic for managing our patterns content. ## Creating our own Bindings + Let's say we are using our pattern on a post type about products where the individual items data is stored in various post meta fields. Using the Block Bindings API, we can set defaults and use those meta fields to dynamically alter our patterns content. Let's quickly look at the structure of the attributes we will need to use on our blocks. It's very similar to the one used on a Synced Pattern, with a notable difference in using our custom source (which we will create below) and then adding a key within the **args** object which allows for dynamic content. @@ -222,17 +223,17 @@ Below is the full code from our example Call to Action. Here we can see that our Call to Action will display a nice fallback should our post meta fields be missing. ![Call to action with default settings applied](../../static/img/block-pattern-call-to-action-example.jpg) - +
*Call to action with default settings applied* If we have our all of our desired data, we will display our custom content. ![An example of our populated post meta fields](../../static/img/block-pattern-bindings-post-meta-example.jpg) - +
*An example of our populated post meta fields* ![Our dynamic Call to Action populated with our post meta fields](../../static/img/block-pattern-bindings-finished-example.jpg) - +
*Our dynamic Call to Action populated with our post meta fields* ## Further reading diff --git a/reference/04-Patterns/synced-pattern-overrides.md b/reference/04-Patterns/synced-pattern-overrides.md index ca05f67..a102539 100644 --- a/reference/04-Patterns/synced-pattern-overrides.md +++ b/reference/04-Patterns/synced-pattern-overrides.md @@ -43,7 +43,7 @@ When an Override enabled block is selected, after editing a **Reset** control is When the pattern itself *or* any of its Override enabled innerblocks are selected, the usual block Inspector Control "Settings" panel is replaced by a "Content" panel where we can select the blocks that allow for editing. ![The updated block settings for an override enabled Synced Pattern](../../static/img/block-pattern-synced-override-enabled.jpg) - +
*The updated block settings for an override enabled Synced Pattern* On the next page, we'll take a look at what's going on under the hood of a Synced Pattern and learn how we can apply our own logic to manage the content of our Patterns using the Block Bindings API. diff --git a/reference/04-Patterns/synced-patterns.md b/reference/04-Patterns/synced-patterns.md index 30d675c..cc2d07a 100644 --- a/reference/04-Patterns/synced-patterns.md +++ b/reference/04-Patterns/synced-patterns.md @@ -9,7 +9,7 @@ Block Patterns are an excellent way to quickly add common components across our This is where Synced Patterns shine. We can create a global component which can be edited once to then update across all instances where it is used. For example an info card, a grid of logos, or perhaps a simple call to action are all excellent candidates which may require such a feature. We will use the latter in our examples. ![Call to action example pattern](../../static/img/block-pattern-call-to-action-example.jpg) - +
*A simple Call to Action block pattern* :::caution @@ -29,7 +29,7 @@ To mark a pattern as Synced, you would follow these steps: That's it! You can now find your component via the block inserter under the Patterns tab > My Patterns *(and any other categories you declared in step 3)*. ![The modal window for adding a new Pattern](../../static/img/block-pattern-add-new-modal.jpg) - +
*The modal window for adding a new Pattern* ## Updating a Synced Pattern @@ -43,7 +43,7 @@ To edit your Synced Pattern, you would do the following: 5. You can return to the page you were editing using the **Back** button located near the title in the upper center of the screen. ![The block toolbar to edit your Synced Pattern](../../static/img/block-pattern-synced-edit-original.jpg) - +
*The block toolbar to edit your Synced Pattern* ## Creating Synced Patterns for Theme Authors @@ -53,6 +53,7 @@ As mentioned above, Synced Patterns have to be manually set in each environment This limitation somewhat complicates their use and while there is no one size fits all approach for how to best handle this, lets walk through one workflow that could make this easier on the developer experience for theme authors. :::caution + ### Ask yourself, is this the best approach? Synced Patterns can be trickier to maintain and come with special considerations. Depending on your circumstances *(budget, ability, time, etc...)*, it might be easier as a theme author to add a pattern in a block template part for use in your page templates. Or maybe you could create a simple custom block that renders your pattern instead. @@ -117,6 +118,7 @@ In your themes `parts` directory, create a new file containing your pattern. Pe [For more information on Block Template Parts, refer to this section of the Gutenberg Best Practices](../../reference/Themes/block-template-parts). :::info + ### Why are we doing this? In the first step, we marked our pattern as hidden and disabled it from being inserted manually. By doing so, we are ensuring that editors will never have access to the original, unsynced pattern and cannot use our themes component in posts or pages until it has been marked as Synced and added to the database. From 21501eac65087473470c98d397115b7950333ce1 Mon Sep 17 00:00:00 2001 From: Colin Swinney Date: Wed, 18 Sep 2024 13:42:58 +0200 Subject: [PATCH 03/10] update broken links --- guides/choose-your-adventure.md | 2 +- training/04-patterns.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/guides/choose-your-adventure.md b/guides/choose-your-adventure.md index 5f9931a..a52f066 100644 --- a/guides/choose-your-adventure.md +++ b/guides/choose-your-adventure.md @@ -50,7 +50,7 @@ Group You can easily enhance the editor experience by also adding a block pattern for this arrangement of core blocks. This allows editors to quickly and easily create this section whilst leaving them the flexibility to change everything to their liking. :::caution -As mentioned in the [block pattern reference](../reference/Patterns/block-patterns) patterns have no connection to what created them. So any updates you make to the pattern in the future will not update instances that were created before you updated it. +As mentioned in the [block pattern reference](../reference/Patterns/overview) patterns have no connection to what created them. So any updates you make to the pattern in the future will not update instances that were created before you updated it. ::: ### 2.b Using Core Blocks + a Block Pattern with Restrictions diff --git a/training/04-patterns.md b/training/04-patterns.md index 1d41a03..65a672f 100644 --- a/training/04-patterns.md +++ b/training/04-patterns.md @@ -135,5 +135,5 @@ Try to replace the image url with a dynamically generated url of the image file ## Further reading -- [Block Patterns - 10up Gutenberg Best Practice](../reference/Patterns/block-patterns) +- [Block Patterns - 10up Gutenberg Best Practice](../reference/Patterns/overview) - [Patterns - Block Editor Handbook](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-patterns/) From b98bc4b852734bfe71b517ad39f6bcd7457daecf Mon Sep 17 00:00:00 2001 From: Colin Swinney Date: Mon, 30 Sep 2024 15:27:08 +0200 Subject: [PATCH 04/10] add link to training reference --- training/04-patterns.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/training/04-patterns.md b/training/04-patterns.md index 65a672f..e148cac 100644 --- a/training/04-patterns.md +++ b/training/04-patterns.md @@ -135,5 +135,6 @@ Try to replace the image url with a dynamically generated url of the image file ## Further reading -- [Block Patterns - 10up Gutenberg Best Practice](../reference/Patterns/overview) +- [Block Patterns Overview - 10up Gutenberg Best Practice](../reference/Patterns/overview) +- [Block Patterns Synced Patterns - 10up Gutenberg Best Practice](../reference/Patterns/synced-patterns) - [Patterns - Block Editor Handbook](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-patterns/) From 0eaa1aa629d4f13013785e1b7c5002a9c4b3300f Mon Sep 17 00:00:00 2001 From: Colin Swinney Date: Mon, 30 Sep 2024 15:27:58 +0200 Subject: [PATCH 05/10] update page title --- reference/04-Patterns/synced-patterns.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reference/04-Patterns/synced-patterns.md b/reference/04-Patterns/synced-patterns.md index cc2d07a..45d5e05 100644 --- a/reference/04-Patterns/synced-patterns.md +++ b/reference/04-Patterns/synced-patterns.md @@ -2,7 +2,7 @@ sidebar_position: 2 --- -# Synced Patterns +# Synced Patterns (Reusable Blocks) Block Patterns are an excellent way to quickly add common components across our site. But what if we decide we want to update the language, link, or design used within that component? With standard patterns, we'd have to manually find and replace every use, this might mean dozens or even thousands of instances on a larger site. From 15583bbc07bb68bcaa6510375109852db0cab0ca Mon Sep 17 00:00:00 2001 From: Colin Swinney Date: Mon, 30 Sep 2024 15:34:18 +0200 Subject: [PATCH 06/10] add github link to synced theme patterns --- reference/04-Patterns/synced-patterns.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/reference/04-Patterns/synced-patterns.md b/reference/04-Patterns/synced-patterns.md index 45d5e05..dd1f75e 100644 --- a/reference/04-Patterns/synced-patterns.md +++ b/reference/04-Patterns/synced-patterns.md @@ -146,7 +146,9 @@ One approach might be to: 4. Optionally, you may want to also copy our updates back into the `patterns/call-to-action.php` file to keep that up to date. :::caution -It is important to note this last step is a fairly major difference in traditional theme authoring. Typically you'd rewrite your component locally first, push the updated codebase, *then* see your changes in the other environments. Here, we must make our updates in all environments first, and essentially work backwards to update a Synced Pattern in our theme. +It is important to note this last step is a fairly major difference in traditional theme authoring. Typically you'd rewrite your component locally first, push the updated codebase, *then* see your changes in the other environments. Here, we must make our updates in all environments first and essentially work backwards to update a Synced Pattern in our theme. -This is another reason trying to maintain a Synced Pattern as a theme author should come with special consideration as mentioned above. +This is another reason trying to maintain a Synced Pattern as a theme author should come with special consideration as mentioned above. + +Because of these special considerations, we don't recommend the usage of Synced Patterns for most sites today. [Follow along on GitHub here](https://github.com/WordPress/gutenberg/issues/59272) to see the progress of syncing Patterns within your theme someday. ::: From c126e81136e63717b713e575ce4f7b617461a71f Mon Sep 17 00:00:00 2001 From: Colin Swinney Date: Mon, 30 Sep 2024 15:43:29 +0200 Subject: [PATCH 07/10] add github link concerning contentOnly locked patterns --- reference/04-Patterns/synced-pattern-overrides.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/reference/04-Patterns/synced-pattern-overrides.md b/reference/04-Patterns/synced-pattern-overrides.md index a102539..6b6f2f5 100644 --- a/reference/04-Patterns/synced-pattern-overrides.md +++ b/reference/04-Patterns/synced-pattern-overrides.md @@ -21,6 +21,10 @@ In the case of our Call to Action pattern, we can override the Heading, Paragrap When using Synced Pattern Overrides, it is very important to know that our blocks are not optional, and we cannot display them conditionally. For example, we cannot use multiple Buttons in our pattern and have the ability to sometimes display just a single one. Every block used in the original pattern will *always* render its markup, even if we leave its text content empty. + +Another example of this limitation is the lack of support on the List block. As currently implemented, you would only ever be able to use the exact same amount of List Item blocks and they would not be optional. + +[Follow along on GitHub here](https://github.com/WordPress/gutenberg/issues/52018) to see the progress of inserting additional innerblocks within a `contentOnly` locked pattern. ::: ## How to enable Overrides From 91dc0fe062de3e5fa484545ad5a326c64f1d7c49 Mon Sep 17 00:00:00 2001 From: Colin Swinney Date: Tue, 1 Oct 2024 08:28:57 +0200 Subject: [PATCH 08/10] add orphan label caution --- reference/04-Patterns/block-bindings-api.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/reference/04-Patterns/block-bindings-api.md b/reference/04-Patterns/block-bindings-api.md index a44f104..890b9d2 100644 --- a/reference/04-Patterns/block-bindings-api.md +++ b/reference/04-Patterns/block-bindings-api.md @@ -73,7 +73,23 @@ Much like Synced Pattern Overrides, when using the Block Bindings API it is very For example, if we bind our Heading's `content` attribute to post meta, but that post meta does not return a value, an empty `

` tag will display on the frontend. Similarly, we cannot use multiple Buttons in our pattern and have the ability to sometimes display just a single one. Whatever blocks are given bindings, their markup will **always** be returned. -Because of this, when creating your pattern and setting up your custom binding source, it is recommended to always set default values. More on that below. +The lack of being able to conditionally include content can also result in orphaned labels. For example, if you were creating an info box for a product, you might have a list of features like so: + +**Product:** *Anvil*
+**Price:** *$99.99*
+**Manufacturer:** *Acme Co.* + +Typically in php you might be able to first check if a piece of post meta exists before rendering the full list item. Here, we must always return our markup and so if you are not careful, you may end up with orphaned labels such as this: + +**Product:** *Anvil*
+**Price:**
+**Manufacturer:** *Acme Co.* + +Because of this, when creating your pattern and setting up your custom binding source, it is recommended to always set default values, for example: + +**Price:** *n/a* + +More on how to do that below. ::: ### 1. Register our Post Meta From 00f51c96593bc400058abba547b63e5025a08cde Mon Sep 17 00:00:00 2001 From: Colin Swinney Date: Tue, 1 Oct 2024 08:29:13 +0200 Subject: [PATCH 09/10] use full text in github links for better a11y --- reference/04-Patterns/synced-pattern-overrides.md | 2 +- reference/04-Patterns/synced-patterns.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/reference/04-Patterns/synced-pattern-overrides.md b/reference/04-Patterns/synced-pattern-overrides.md index 6b6f2f5..cad9980 100644 --- a/reference/04-Patterns/synced-pattern-overrides.md +++ b/reference/04-Patterns/synced-pattern-overrides.md @@ -24,7 +24,7 @@ For example, we cannot use multiple Buttons in our pattern and have the ability Another example of this limitation is the lack of support on the List block. As currently implemented, you would only ever be able to use the exact same amount of List Item blocks and they would not be optional. -[Follow along on GitHub here](https://github.com/WordPress/gutenberg/issues/52018) to see the progress of inserting additional innerblocks within a `contentOnly` locked pattern. +[Follow along on GitHub here to see the progress of inserting additional innerblocks within a `contentOnly` locked pattern](https://github.com/WordPress/gutenberg/issues/52018). ::: ## How to enable Overrides diff --git a/reference/04-Patterns/synced-patterns.md b/reference/04-Patterns/synced-patterns.md index dd1f75e..9671d31 100644 --- a/reference/04-Patterns/synced-patterns.md +++ b/reference/04-Patterns/synced-patterns.md @@ -150,5 +150,5 @@ It is important to note this last step is a fairly major difference in tradition This is another reason trying to maintain a Synced Pattern as a theme author should come with special consideration as mentioned above. -Because of these special considerations, we don't recommend the usage of Synced Patterns for most sites today. [Follow along on GitHub here](https://github.com/WordPress/gutenberg/issues/59272) to see the progress of syncing Patterns within your theme someday. +Because of these special considerations, we don't recommend the usage of Synced Patterns for most sites today. [Follow along on GitHub here to see the progress of syncing Patterns within your theme someday](https://github.com/WordPress/gutenberg/issues/59272) . ::: From b3b9943ddb60604d1bcebd035d4b58cd3cb852c6 Mon Sep 17 00:00:00 2001 From: Colin Swinney Date: Tue, 1 Oct 2024 08:38:40 +0200 Subject: [PATCH 10/10] add link to the correct spot --- reference/04-Patterns/overview.md | 3 +++ training/04-patterns.md | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/reference/04-Patterns/overview.md b/reference/04-Patterns/overview.md index ebb6113..6e5a596 100644 --- a/reference/04-Patterns/overview.md +++ b/reference/04-Patterns/overview.md @@ -278,6 +278,9 @@ This is achieved by adding `"__experimentalRole": "content"` to the attribute de :::caution There is one item that you need to be aware about in regards to Block Patterns. Once they are inserted they have no link to the original block pattern that they were created by. On insertion they become regular blocks. Therefore it is not possible to adjust all occurrences of a block pattern after it has been used. + +WordPress does provide a way of handling this however by using the power of Synced Patterns. [For more info on Synced Patterns, please see the next lesson](../Patterns/synced-patterns). + ::: If you find an issue with the markup of a pattern that you want to fix it is only going to impact new instances of the pattern that are created after you updated it. And you will have to manually go into every instance that was created using the pattern and make the update manually, or create an update script to update it in the database directly. diff --git a/training/04-patterns.md b/training/04-patterns.md index e148cac..5c0a70e 100644 --- a/training/04-patterns.md +++ b/training/04-patterns.md @@ -136,5 +136,4 @@ Try to replace the image url with a dynamically generated url of the image file ## Further reading - [Block Patterns Overview - 10up Gutenberg Best Practice](../reference/Patterns/overview) -- [Block Patterns Synced Patterns - 10up Gutenberg Best Practice](../reference/Patterns/synced-patterns) - [Patterns - Block Editor Handbook](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-patterns/)