Allow creating custom block templates in classic themes #30438
Conversation
Size Change: +1.2 kB (0%) Total Size: 1.42 MB
|
Filename | Size | Change |
---|---|---|
build/a11y/index.js |
1.14 kB | 0 B |
build/blob/index.js |
664 B | 0 B |
build/block-directory/style-rtl.css |
1 kB | 0 B |
build/block-directory/style.css |
1.01 kB | 0 B |
build/block-library/blocks/archives/editor-rtl.css |
61 B | 0 B |
build/block-library/blocks/archives/editor.css |
60 B | 0 B |
build/block-library/blocks/audio/editor-rtl.css |
58 B | 0 B |
build/block-library/blocks/audio/editor.css |
58 B | 0 B |
build/block-library/blocks/audio/style-rtl.css |
112 B | 0 B |
build/block-library/blocks/audio/style.css |
112 B | 0 B |
build/block-library/blocks/block/editor-rtl.css |
161 B | 0 B |
build/block-library/blocks/block/editor.css |
161 B | 0 B |
build/block-library/blocks/button/editor-rtl.css |
475 B | 0 B |
build/block-library/blocks/button/editor.css |
474 B | 0 B |
build/block-library/blocks/buttons/editor-rtl.css |
315 B | 0 B |
build/block-library/blocks/buttons/editor.css |
315 B | 0 B |
build/block-library/blocks/calendar/style-rtl.css |
208 B | 0 B |
build/block-library/blocks/calendar/style.css |
208 B | 0 B |
build/block-library/blocks/categories/editor-rtl.css |
84 B | 0 B |
build/block-library/blocks/categories/editor.css |
83 B | 0 B |
build/block-library/blocks/categories/style-rtl.css |
79 B | 0 B |
build/block-library/blocks/categories/style.css |
79 B | 0 B |
build/block-library/blocks/code/style-rtl.css |
90 B | 0 B |
build/block-library/blocks/code/style.css |
90 B | 0 B |
build/block-library/blocks/columns/editor-rtl.css |
190 B | 0 B |
build/block-library/blocks/columns/editor.css |
190 B | 0 B |
build/block-library/blocks/columns/style-rtl.css |
436 B | 0 B |
build/block-library/blocks/columns/style.css |
435 B | 0 B |
build/block-library/blocks/cover/editor-rtl.css |
605 B | 0 B |
build/block-library/blocks/cover/editor.css |
605 B | 0 B |
build/block-library/blocks/cover/style-rtl.css |
1.24 kB | 0 B |
build/block-library/blocks/cover/style.css |
1.24 kB | 0 B |
build/block-library/blocks/embed/editor-rtl.css |
486 B | 0 B |
build/block-library/blocks/embed/editor.css |
486 B | 0 B |
build/block-library/blocks/embed/style-rtl.css |
401 B | 0 B |
build/block-library/blocks/embed/style.css |
400 B | 0 B |
build/block-library/blocks/file/editor-rtl.css |
175 B | 0 B |
build/block-library/blocks/file/editor.css |
174 B | 0 B |
build/block-library/blocks/file/style-rtl.css |
248 B | 0 B |
build/block-library/blocks/file/style.css |
248 B | 0 B |
build/block-library/blocks/freeform/editor-rtl.css |
2.45 kB | 0 B |
build/block-library/blocks/freeform/editor.css |
2.45 kB | 0 B |
build/block-library/blocks/gallery/editor-rtl.css |
704 B | 0 B |
build/block-library/blocks/gallery/editor.css |
705 B | 0 B |
build/block-library/blocks/gallery/style-rtl.css |
1.11 kB | 0 B |
build/block-library/blocks/gallery/style.css |
1.1 kB | 0 B |
build/block-library/blocks/group/editor-rtl.css |
160 B | 0 B |
build/block-library/blocks/group/editor.css |
160 B | 0 B |
build/block-library/blocks/group/style-rtl.css |
57 B | 0 B |
build/block-library/blocks/group/style.css |
57 B | 0 B |
build/block-library/blocks/heading/editor-rtl.css |
129 B | 0 B |
build/block-library/blocks/heading/editor.css |
129 B | 0 B |
build/block-library/blocks/heading/style-rtl.css |
76 B | 0 B |
build/block-library/blocks/heading/style.css |
76 B | 0 B |
build/block-library/blocks/html/editor-rtl.css |
281 B | 0 B |
build/block-library/blocks/html/editor.css |
281 B | 0 B |
build/block-library/blocks/image/editor-rtl.css |
717 B | 0 B |
build/block-library/blocks/image/editor.css |
716 B | 0 B |
build/block-library/blocks/image/style-rtl.css |
476 B | 0 B |
build/block-library/blocks/image/style.css |
478 B | 0 B |
build/block-library/blocks/latest-comments/style-rtl.css |
281 B | 0 B |
build/block-library/blocks/latest-comments/style.css |
282 B | 0 B |
build/block-library/blocks/latest-posts/editor-rtl.css |
137 B | 0 B |
build/block-library/blocks/latest-posts/editor.css |
137 B | 0 B |
build/block-library/blocks/latest-posts/style-rtl.css |
523 B | 0 B |
build/block-library/blocks/latest-posts/style.css |
522 B | 0 B |
build/block-library/blocks/legacy-widget/editor-rtl.css |
398 B | 0 B |
build/block-library/blocks/legacy-widget/editor.css |
399 B | 0 B |
build/block-library/blocks/list/style-rtl.css |
63 B | 0 B |
build/block-library/blocks/list/style.css |
63 B | 0 B |
build/block-library/blocks/media-text/editor-rtl.css |
191 B | 0 B |
build/block-library/blocks/media-text/editor.css |
191 B | 0 B |
build/block-library/blocks/media-text/style-rtl.css |
535 B | 0 B |
build/block-library/blocks/media-text/style.css |
532 B | 0 B |
build/block-library/blocks/more/editor-rtl.css |
434 B | 0 B |
build/block-library/blocks/more/editor.css |
434 B | 0 B |
build/block-library/blocks/navigation-link/editor-rtl.css |
597 B | 0 B |
build/block-library/blocks/navigation-link/editor.css |
597 B | 0 B |
build/block-library/blocks/navigation-link/style-rtl.css |
957 B | 0 B |
build/block-library/blocks/navigation-link/style.css |
955 B | 0 B |
build/block-library/blocks/navigation/editor-rtl.css |
1.13 kB | 0 B |
build/block-library/blocks/navigation/editor.css |
1.13 kB | 0 B |
build/block-library/blocks/navigation/style-rtl.css |
204 B | 0 B |
build/block-library/blocks/navigation/style.css |
205 B | 0 B |
build/block-library/blocks/nextpage/editor-rtl.css |
395 B | 0 B |
build/block-library/blocks/nextpage/editor.css |
395 B | 0 B |
build/block-library/blocks/page-list/editor-rtl.css |
170 B | 0 B |
build/block-library/blocks/page-list/editor.css |
170 B | 0 B |
build/block-library/blocks/page-list/style-rtl.css |
167 B | 0 B |
build/block-library/blocks/page-list/style.css |
167 B | 0 B |
build/block-library/blocks/paragraph/editor-rtl.css |
157 B | 0 B |
build/block-library/blocks/paragraph/editor.css |
157 B | 0 B |
build/block-library/blocks/paragraph/style-rtl.css |
247 B | 0 B |
build/block-library/blocks/paragraph/style.css |
248 B | 0 B |
build/block-library/blocks/post-author/editor-rtl.css |
209 B | 0 B |
build/block-library/blocks/post-author/editor.css |
209 B | 0 B |
build/block-library/blocks/post-author/style-rtl.css |
183 B | 0 B |
build/block-library/blocks/post-author/style.css |
184 B | 0 B |
build/block-library/blocks/post-comments-form/style-rtl.css |
250 B | 0 B |
build/block-library/blocks/post-comments-form/style.css |
250 B | 0 B |
build/block-library/blocks/post-content/editor-rtl.css |
139 B | 0 B |
build/block-library/blocks/post-content/editor.css |
139 B | 0 B |
build/block-library/blocks/post-excerpt/editor-rtl.css |
73 B | 0 B |
build/block-library/blocks/post-excerpt/editor.css |
73 B | 0 B |
build/block-library/blocks/post-featured-image/editor-rtl.css |
338 B | 0 B |
build/block-library/blocks/post-featured-image/editor.css |
338 B | 0 B |
build/block-library/blocks/post-featured-image/style-rtl.css |
100 B | 0 B |
build/block-library/blocks/post-featured-image/style.css |
100 B | 0 B |
build/block-library/blocks/preformatted/style-rtl.css |
103 B | 0 B |
build/block-library/blocks/preformatted/style.css |
103 B | 0 B |
build/block-library/blocks/pullquote/editor-rtl.css |
183 B | 0 B |
build/block-library/blocks/pullquote/editor.css |
183 B | 0 B |
build/block-library/blocks/pullquote/style-rtl.css |
318 B | 0 B |
build/block-library/blocks/pullquote/style.css |
318 B | 0 B |
build/block-library/blocks/query-loop/editor-rtl.css |
83 B | 0 B |
build/block-library/blocks/query-loop/editor.css |
82 B | 0 B |
build/block-library/blocks/query-loop/style-rtl.css |
315 B | 0 B |
build/block-library/blocks/query-loop/style.css |
317 B | 0 B |
build/block-library/blocks/query-pagination-numbers/editor-rtl.css |
122 B | 0 B |
build/block-library/blocks/query-pagination-numbers/editor.css |
121 B | 0 B |
build/block-library/blocks/query-pagination/editor-rtl.css |
270 B | 0 B |
build/block-library/blocks/query-pagination/editor.css |
262 B | 0 B |
build/block-library/blocks/query-pagination/style-rtl.css |
168 B | 0 B |
build/block-library/blocks/query-pagination/style.css |
168 B | 0 B |
build/block-library/blocks/query-title/editor-rtl.css |
86 B | 0 B |
build/block-library/blocks/query-title/editor.css |
86 B | 0 B |
build/block-library/blocks/query/editor-rtl.css |
795 B | 0 B |
build/block-library/blocks/query/editor.css |
794 B | 0 B |
build/block-library/blocks/quote/style-rtl.css |
169 B | 0 B |
build/block-library/blocks/quote/style.css |
169 B | 0 B |
build/block-library/blocks/rss/editor-rtl.css |
201 B | 0 B |
build/block-library/blocks/rss/editor.css |
202 B | 0 B |
build/block-library/blocks/rss/style-rtl.css |
290 B | 0 B |
build/block-library/blocks/rss/style.css |
290 B | 0 B |
build/block-library/blocks/separator/editor-rtl.css |
99 B | 0 B |
build/block-library/blocks/separator/editor.css |
99 B | 0 B |
build/block-library/blocks/separator/style-rtl.css |
251 B | 0 B |
build/block-library/blocks/separator/style.css |
251 B | 0 B |
build/block-library/blocks/shortcode/editor-rtl.css |
512 B | 0 B |
build/block-library/blocks/shortcode/editor.css |
512 B | 0 B |
build/block-library/blocks/site-logo/editor-rtl.css |
201 B | 0 B |
build/block-library/blocks/site-logo/editor.css |
201 B | 0 B |
build/block-library/blocks/site-logo/style-rtl.css |
115 B | 0 B |
build/block-library/blocks/site-logo/style.css |
115 B | 0 B |
build/block-library/blocks/social-link/editor-rtl.css |
164 B | 0 B |
build/block-library/blocks/social-link/editor.css |
165 B | 0 B |
build/block-library/blocks/social-links/editor-rtl.css |
776 B | 0 B |
build/block-library/blocks/social-links/editor.css |
776 B | 0 B |
build/block-library/blocks/social-links/style-rtl.css |
1.32 kB | 0 B |
build/block-library/blocks/social-links/style.css |
1.33 kB | 0 B |
build/block-library/blocks/spacer/editor-rtl.css |
317 B | 0 B |
build/block-library/blocks/spacer/editor.css |
317 B | 0 B |
build/block-library/blocks/spacer/style-rtl.css |
48 B | 0 B |
build/block-library/blocks/spacer/style.css |
48 B | 0 B |
build/block-library/blocks/table/editor-rtl.css |
478 B | 0 B |
build/block-library/blocks/table/editor.css |
478 B | 0 B |
build/block-library/blocks/table/style-rtl.css |
402 B | 0 B |
build/block-library/blocks/table/style.css |
402 B | 0 B |
build/block-library/blocks/tag-cloud/editor-rtl.css |
118 B | 0 B |
build/block-library/blocks/tag-cloud/editor.css |
118 B | 0 B |
build/block-library/blocks/tag-cloud/style-rtl.css |
94 B | 0 B |
build/block-library/blocks/tag-cloud/style.css |
94 B | 0 B |
build/block-library/blocks/template-part/editor-rtl.css |
552 B | 0 B |
build/block-library/blocks/template-part/editor.css |
551 B | 0 B |
build/block-library/blocks/term-description/editor-rtl.css |
90 B | 0 B |
build/block-library/blocks/term-description/editor.css |
90 B | 0 B |
build/block-library/blocks/text-columns/editor-rtl.css |
95 B | 0 B |
build/block-library/blocks/text-columns/editor.css |
95 B | 0 B |
build/block-library/blocks/text-columns/style-rtl.css |
166 B | 0 B |
build/block-library/blocks/text-columns/style.css |
166 B | 0 B |
build/block-library/blocks/verse/editor-rtl.css |
50 B | 0 B |
build/block-library/blocks/verse/editor.css |
50 B | 0 B |
build/block-library/blocks/verse/style-rtl.css |
87 B | 0 B |
build/block-library/blocks/verse/style.css |
87 B | 0 B |
build/block-library/blocks/video/editor-rtl.css |
504 B | 0 B |
build/block-library/blocks/video/editor.css |
503 B | 0 B |
build/block-library/blocks/video/style-rtl.css |
187 B | 0 B |
build/block-library/blocks/video/style.css |
187 B | 0 B |
build/block-library/common-rtl.css |
1.31 kB | 0 B |
build/block-library/common.css |
1.31 kB | 0 B |
build/block-library/reset-rtl.css |
503 B | 0 B |
build/block-library/reset.css |
504 B | 0 B |
build/block-library/theme-rtl.css |
692 B | 0 B |
build/block-library/theme.css |
693 B | 0 B |
build/block-serialization-spec-parser/index.js |
3.06 kB | 0 B |
build/components/style-rtl.css |
16.2 kB | 0 B |
build/components/style.css |
16.2 kB | 0 B |
build/compose/index.js |
11.2 kB | 0 B |
build/customize-widgets/style-rtl.css |
676 B | 0 B |
build/customize-widgets/style.css |
677 B | 0 B |
build/date/index.js |
31.9 kB | 0 B |
build/deprecated/index.js |
787 B | 0 B |
build/dom-ready/index.js |
576 B | 0 B |
build/dom/index.js |
5.08 kB | 0 B |
build/edit-navigation/style-rtl.css |
2.86 kB | 0 B |
build/edit-navigation/style.css |
2.86 kB | 0 B |
build/edit-post/style-rtl.css |
7.13 kB | 0 B |
build/edit-post/style.css |
7.12 kB | 0 B |
build/edit-widgets/style-rtl.css |
2.98 kB | 0 B |
build/edit-widgets/style.css |
2.98 kB | 0 B |
build/editor/style-rtl.css |
3.96 kB | 0 B |
build/editor/style.css |
3.96 kB | 0 B |
build/element/index.js |
4.62 kB | 0 B |
build/escape-html/index.js |
735 B | 0 B |
build/format-library/index.js |
6.75 kB | 0 B |
build/format-library/style-rtl.css |
637 B | 0 B |
build/format-library/style.css |
639 B | 0 B |
build/hooks/index.js |
2.28 kB | 0 B |
build/html-entities/index.js |
622 B | 0 B |
build/i18n/index.js |
4.02 kB | 0 B |
build/is-shallow-equal/index.js |
699 B | 0 B |
build/list-reusable-blocks/style-rtl.css |
629 B | 0 B |
build/list-reusable-blocks/style.css |
628 B | 0 B |
build/nux/index.js |
3.42 kB | 0 B |
build/nux/style-rtl.css |
731 B | 0 B |
build/nux/style.css |
727 B | 0 B |
build/priority-queue/index.js |
791 B | 0 B |
build/redux-routine/index.js |
2.84 kB | 0 B |
build/reusable-blocks/style-rtl.css |
225 B | 0 B |
build/reusable-blocks/style.css |
225 B | 0 B |
build/shortcode/index.js |
1.7 kB | 0 B |
build/token-list/index.js |
1.27 kB | 0 B |
build/warning/index.js |
1.14 kB | 0 B |
build/wordcount/index.js |
1.22 kB | 0 B |
This PR is not ready yet but it's ready to get thoughts and designs. |
I think that would be necessary in many situations... and it should also be filterable so users can install a plugin to enable it on their old, not-updated theme. See PR #30465 for a suggestion |
Thinking about the theme-support thing some more, perhaps it should be opt-out instead of opt-in? I believe opt-out would make more sense... (updated the PR on #30465 to reflect that) |
const template = { | ||
slug: 'custom-template-' + uuid(), | ||
content: serialize( templateContent ), | ||
title: 'Custom Template', |
youknowriad
Apr 2, 2021
Author
Contributor
To avoid having all custom templates have the same name by default, I think we should do something similar to template parts and reusable block: show a modal when clicking the "Create custom template" link and ask the user to fill a title.
To avoid having all custom templates have the same name by default, I think we should do something similar to template parts and reusable block: show a modal when clicking the "Create custom template" link and ask the user to fill a title.
aristath
Apr 2, 2021
Member
A title would be useful in identifying the templates 👍
A title would be useful in identifying the templates
* Change the prefix for custom templates * Update comment
* Introduce gutenberg_is_fse_enabled * typo & reverse logic * update filter name * Remove filter * Rename function * don't use "disable"theme-supports * rename theme-support
What an intriguing PR! I am using the Twenty Twenty One theme. Then followed the instructions added by Riad. |
@paaljoachim That was my bad, in 6067b42 the line defining theme-support was not renamed. I pushed a fix here just now so once the build finishes you'll be able to test it |
Great! In addition to using the special Gutenberg plugin mentioned above I then added the code snippet to the functions file My test. 1.I would suggest a developer create a PR for moving the page/post title to the top bar. It would also be one of the many connections with Full Site Editing. #27093 As having the title in the top bar. Be it "Page content: Page title", "Content: Page title" or just the "Page title". For this PR where I test page templates. 2.Save or do not save is the question. Save or discard a save. What if the user decides not to save? A greyed out blue button. User it not able to move onward, and meets a dead end. The user makes a selection if they want or do not want to save the custom template. Perhaps they just wanted to see what it is without saving. If they decide not to save they become stuck in the custom template. Having no obvious way on how to get back to the regular page. Perhaps they click the Page tab and look at Status & visibility to see if there is a bridge back to the page content in the same place they clicked to "Create a custom template" but there is none. So the user is forced to save. Going back to the page content. It looks like this... User might think. Why am I not seeing the template content in my page? Bottom line is that being able to add a page template is a very nice feature! Along the way before this PR is merged other PR's can be created making specific UI (top bar page title) and UX (being able to easily discard a save) making the flow easier for the general user and also for us. Thanks! |
The idea of this PR is to allow creating custom block templates (starting blank) for a given page in classic themes. It's a way for classic themes to enable some FSE features without any change.
How to test it
It's very rough at the moment, more a POC, but here's how you do it:
Now, on the frontend, your page is using its own custom template and not the regular
page.php
orsingular.php
that comes from the theme itself.Notes
This PR can be seen as a migration strategy for classic themes, it highlights a few things in terms of code/architecture:
Todo