From 4fbd364806d39ff9de776c253d23c2190579400e Mon Sep 17 00:00:00 2001 From: "lina.wolf" Date: Wed, 11 Dec 2024 10:32:35 +0100 Subject: [PATCH 1/7] [FEATURE] Document Content Block Examples Releases: main, 13.4 --- Documentation/ContentBlocks/Index.rst | 153 ++++++++++++++++++++++++++ Documentation/Index.rst | 9 ++ 2 files changed, 162 insertions(+) create mode 100644 Documentation/ContentBlocks/Index.rst diff --git a/Documentation/ContentBlocks/Index.rst b/Documentation/ContentBlocks/Index.rst new file mode 100644 index 00000000..d2e5462c --- /dev/null +++ b/Documentation/ContentBlocks/Index.rst @@ -0,0 +1,153 @@ +:navigation-title: Custom Content Blocks +.. include:: /Includes.rst.txt + +.. _content-blocks: + +===================== +Custom Content Blocks +===================== + +When we filled the `stage with content `_ +we noticed that the content does not look like the content within the original +HTMl layout. + +This is because the stage does not contain normal content, as provided by +Fluid-Styled Content, but a Jumbotron element or a slider. + +.. note:: + The extension :composer:`friendsoftypo3/content-blocks` is not an official + part of the TYPO3 Core yet. It is also possible to + `Create a custom content element with TYPO3 Core only `_. + +.. _content-blocks-installation: + +Install extension Content Blocks +================================ + +The extension :composer:`friendsoftypo3/content-blocks` is an extension that +is not part of the TYPO3 Core but maintained by a group of community members. + +There are plans to integrate this extension into the Core, however at the +time of writing there are no finite decisions yet. + +First install the extension :composer:`friendsoftypo3/content-blocks`: + +.. code-block:: bash + + ddev composer req friendsoftypo3/content-blocks + +Set up the extension and delete all caches: + +.. code-block:: bash + + ddev typo3 extension:setup + ddev typo3 cache:flush + +.. _content-blocks-jumbotron: + +The jumbotron content block +=========================== + +The site package you generated in step +`Generate a site package `_ +comes with two content elements. We look at the more basic content elements first. + +You can now replace the content element in the area "Stage" of start page with +one of type "Jumbotron". + +You can now create a jumbotron with a button and a link. + +Directory :path:`packages/my_site_package/ContentBlocks/ContentElements` contains +one directory for each Content Block that can be used as normal Content Elements. + +.. _content-blocks-jumbotron-directory: + +Directory structure of a content block +-------------------------------------- + +A content block consists of a configuration (:file:`config.yaml`), a template and +optionally assets and or language files: + +The jumbotron consists of the following files: + +.. directory-tree:: + :level: 2 + :show-file-icons: true + + * packages/my_site_package/ContentBlocks/ContentElements/jumbotron + + * assets + + * icon.svg + + * language + + * labels.xlf + + * templates + + * frontend.html + + * config.yaml + +.. _content-blocks-jumbotron-config: + +The configuration of the jumbotron Content Block +------------------------------------------------ + +File :path:`packages/my_site_package/ContentBlocks/ContentElements/jumbotron/config.yaml` +defines what fields should be available for the Content Block in the backend: + +.. literalinclude:: /CodeSnippets/my_site_package/ContentBlocks/ContentElements/jumbotron/config.yaml + :caption: packages/my_site_package/ContentBlocks/ContentElements/jumbotron/config.yaml + :linenos: + +Each content block must have a unique name with a prefix of your choice that +should be unique within your project. (Line 1) + +It is possible to use fields that are already pre-defined in the TYPO3 Core like +`header` (Line 8) and `bodytext` (Line 11). + +We also newly define two fields, one of type `Text `_ +(Line 15-19) and one of type `Link `_ +(Line 21-23). You can find all available types here: `Field Types `_. + +The meaning behind the other settings here can be found in the +`YAML reference of the Content Blocks guide `_. + +.. _content-blocks-jumbotron-template: + +The jumbotron template +---------------------- + +The frontend template for the Content Block "Jumbotron" is a normal Fluid +template. You already used Fluid for the +`Page templates `_ +and to adjust the templates of Fluid-Styles Content elements in chapter +`Overriding the default templates of content elements `_. + +.. literalinclude:: /CodeSnippets/my_site_package/ContentBlocks/ContentElements/jumbotron/templates/frontend.html + :caption: packages/my_site_package/ContentBlocks/ContentElements/jumbotron/templates/frontend.html + :linenos: + +Line 3: The values of the database entry of the current content element can be +found in variable `{data}`. In this line we render the content of the field +`header`. The field was defined in line 8 of the :file:`config.yaml`. + +Line 4: Here we output the content of field `bodytext` as this field is a +Rich-Text Editor we use the +`Format.html ViewHelper `_ +to format and sanitize the output. + +Line 5: We use the `Link.typolink ViewHelper `_ +to render a link to the target that was defined in our custom field `button_link`. + +.. _content-blocks-next: + +Next steps +========== + +* The generated site package contains a second, more elaborate example in + directory :path:`packages/my_site_package/ContentBlocks/ContentElements/carousel`. +* Learn how to use the `Kickstart command `_ + to create your own content blocks. diff --git a/Documentation/Index.rst b/Documentation/Index.rst index d2932953..ab42cf12 100644 --- a/Documentation/Index.rst +++ b/Documentation/Index.rst @@ -100,6 +100,14 @@ https://github.com/TYPO3-Documentation/site_package .. card-footer:: :ref:`Learn about the configuration of a site package ` :button-style: btn btn-secondary stretched-link + .. card:: :ref:`Content Blocks ` + + We explain how the TYPO3 Extension :composer:`friendsoftypo3/content-blocks` + can be used to create custom Content Elements, for example for a jumbotron + or slider. + + .. card-footer:: :ref:`Learn to create custom Content Elements ` + :button-style: btn btn-secondary stretched-link .. card:: :ref:`Extension Configuration ` @@ -131,6 +139,7 @@ https://github.com/TYPO3-Documentation/site_package MainMenuCreation/Index SiteSets/Index ContentElementRendering/Index + ContentBlocks/Index Faq/Index NextSteps/Index From 47c6b388334dee07a6374af1a0a0d5d1ec25fbfd Mon Sep 17 00:00:00 2001 From: "lina.wolf" Date: Sat, 21 Dec 2024 08:33:30 +0100 Subject: [PATCH 2/7] [FEATURE] Document Content Block Examples Releases: main, 13.4 --- Documentation/Index.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/Index.rst b/Documentation/Index.rst index ab42cf12..bb913744 100644 --- a/Documentation/Index.rst +++ b/Documentation/Index.rst @@ -100,13 +100,13 @@ https://github.com/TYPO3-Documentation/site_package .. card-footer:: :ref:`Learn about the configuration of a site package ` :button-style: btn btn-secondary stretched-link - .. card:: :ref:`Content Blocks ` + .. card:: :ref:`Content Blocks ` We explain how the TYPO3 Extension :composer:`friendsoftypo3/content-blocks` can be used to create custom Content Elements, for example for a jumbotron or slider. - .. card-footer:: :ref:`Learn to create custom Content Elements ` + .. card-footer:: :ref:`Learn to create custom Content Elements ` :button-style: btn btn-secondary stretched-link .. card:: :ref:`Extension Configuration ` From bf4aaec4e4c39ca450c58a9b37252a114ec05733 Mon Sep 17 00:00:00 2001 From: "lina.wolf" Date: Sat, 21 Dec 2024 10:39:25 +0100 Subject: [PATCH 3/7] [TASK] Add screenshot Releases: main, 13.4 --- Documentation/ContentBlocks/Index.rst | 5 +++++ .../ContentBlocks/CreateContentElement.png | Bin 0 -> 19705 bytes 2 files changed, 5 insertions(+) create mode 100644 Documentation/Images/ContentBlocks/CreateContentElement.png diff --git a/Documentation/ContentBlocks/Index.rst b/Documentation/ContentBlocks/Index.rst index d2e5462c..de376676 100644 --- a/Documentation/ContentBlocks/Index.rst +++ b/Documentation/ContentBlocks/Index.rst @@ -55,6 +55,11 @@ comes with two content elements. We look at the more basic content elements firs You can now replace the content element in the area "Stage" of start page with one of type "Jumbotron". +.. figure:: /Images/ContentBlocks/CreateContentElement.png + :alt: Screenshot of the "New Page Content" dialog with the Carousel and Jumbotron as additional features + + The new Content Blocks "Jumbotron" and "Carousel" + You can now create a jumbotron with a button and a link. Directory :path:`packages/my_site_package/ContentBlocks/ContentElements` contains diff --git a/Documentation/Images/ContentBlocks/CreateContentElement.png b/Documentation/Images/ContentBlocks/CreateContentElement.png new file mode 100644 index 0000000000000000000000000000000000000000..2ef29675d5017fa940b87a2a86181e48986bbbf9 GIT binary patch literal 19705 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 Date: Sat, 21 Dec 2024 10:41:16 +0100 Subject: [PATCH 4/7] Update Documentation/ContentBlocks/Index.rst --- Documentation/ContentBlocks/Index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/ContentBlocks/Index.rst b/Documentation/ContentBlocks/Index.rst index de376676..770047fa 100644 --- a/Documentation/ContentBlocks/Index.rst +++ b/Documentation/ContentBlocks/Index.rst @@ -67,7 +67,7 @@ one directory for each Content Block that can be used as normal Content Elements .. _content-blocks-jumbotron-directory: -Directory structure of a content block +Directory structure of a Content Block -------------------------------------- A content block consists of a configuration (:file:`config.yaml`), a template and From e36c0297426e82ce9ccdf750db9b23c68ceef628 Mon Sep 17 00:00:00 2001 From: Lina Wolf <48202465+linawolf@users.noreply.github.com> Date: Sat, 21 Dec 2024 10:41:48 +0100 Subject: [PATCH 5/7] Apply suggestions from code review --- Documentation/ContentBlocks/Index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/ContentBlocks/Index.rst b/Documentation/ContentBlocks/Index.rst index 770047fa..11bc2ee6 100644 --- a/Documentation/ContentBlocks/Index.rst +++ b/Documentation/ContentBlocks/Index.rst @@ -128,7 +128,7 @@ The jumbotron template The frontend template for the Content Block "Jumbotron" is a normal Fluid template. You already used Fluid for the `Page templates `_ -and to adjust the templates of Fluid-Styles Content elements in chapter +and to adjust the templates of Fluid-Styled Content elements in chapter `Overriding the default templates of content elements `_. .. literalinclude:: /CodeSnippets/my_site_package/ContentBlocks/ContentElements/jumbotron/templates/frontend.html From b31b7aca6708a1ea05bab78b1c9a3237d113a680 Mon Sep 17 00:00:00 2001 From: Lina Wolf <48202465+linawolf@users.noreply.github.com> Date: Sat, 21 Dec 2024 10:48:20 +0100 Subject: [PATCH 6/7] Update Documentation/ContentBlocks/Index.rst Co-authored-by: Nikita Hovratov --- Documentation/ContentBlocks/Index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/ContentBlocks/Index.rst b/Documentation/ContentBlocks/Index.rst index 11bc2ee6..be97567d 100644 --- a/Documentation/ContentBlocks/Index.rst +++ b/Documentation/ContentBlocks/Index.rst @@ -107,7 +107,7 @@ defines what fields should be available for the Content Block in the backend: :caption: packages/my_site_package/ContentBlocks/ContentElements/jumbotron/config.yaml :linenos: -Each content block must have a unique name with a prefix of your choice that +Each Content Block must have a unique name with a prefix of your choice that should be unique within your project. (Line 1) It is possible to use fields that are already pre-defined in the TYPO3 Core like From 710dbdc9544ffd997bbd828134a935e49f4be1b9 Mon Sep 17 00:00:00 2001 From: Lina Wolf <48202465+linawolf@users.noreply.github.com> Date: Sat, 21 Dec 2024 10:50:15 +0100 Subject: [PATCH 7/7] Apply suggestions from code review Co-authored-by: Nikita Hovratov --- Documentation/ContentBlocks/Index.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Documentation/ContentBlocks/Index.rst b/Documentation/ContentBlocks/Index.rst index be97567d..d41af814 100644 --- a/Documentation/ContentBlocks/Index.rst +++ b/Documentation/ContentBlocks/Index.rst @@ -45,7 +45,7 @@ Set up the extension and delete all caches: .. _content-blocks-jumbotron: -The jumbotron content block +The jumbotron Content Block =========================== The site package you generated in step @@ -70,7 +70,7 @@ one directory for each Content Block that can be used as normal Content Elements Directory structure of a Content Block -------------------------------------- -A content block consists of a configuration (:file:`config.yaml`), a template and +A Content Block consists of a configuration (:file:`config.yaml`), a template and optionally assets and or language files: The jumbotron consists of the following files: @@ -155,4 +155,4 @@ Next steps * The generated site package contains a second, more elaborate example in directory :path:`packages/my_site_package/ContentBlocks/ContentElements/carousel`. * Learn how to use the `Kickstart command `_ - to create your own content blocks. + to create your own Content Blocks.