<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=Drupal_8_Themes</id>
	<title>Drupal 8 Themes - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=Drupal_8_Themes"/>
	<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=Drupal_8_Themes&amp;action=history"/>
	<updated>2026-05-13T05:18:19Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://training-course-material.com/index.php?title=Drupal_8_Themes&amp;diff=89323&amp;oldid=prev</id>
		<title>Lsokolowski1 at 18:58, 30 March 2026</title>
		<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=Drupal_8_Themes&amp;diff=89323&amp;oldid=prev"/>
		<updated>2026-03-30T18:58:40Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:58, 30 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;slideshow style=&quot;nobleprog&quot; headingmark=&quot;&quot; incmark=&quot;…&quot; scaled=&quot;false&quot; font=&quot;Trebuchet MS&quot; &amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;title: Drupal 8 Themes&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;title: Drupal 8 Themes&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;author: Lukasz Sokolowski&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;author: Lukasz Sokolowski&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/slideshow&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Drupal 8 Themes ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Drupal 8 Themes ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lsokolowski1</name></author>
	</entry>
	<entry>
		<id>https://training-course-material.com/index.php?title=Drupal_8_Themes&amp;diff=88197&amp;oldid=prev</id>
		<title>Lsokolowski1 at 12:06, 22 May 2024</title>
		<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=Drupal_8_Themes&amp;diff=88197&amp;oldid=prev"/>
		<updated>2024-05-22T12:06:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://training-course-material.com/index.php?title=Drupal_8_Themes&amp;amp;diff=88197&amp;amp;oldid=81008&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Lsokolowski1</name></author>
	</entry>
	<entry>
		<id>https://training-course-material.com/index.php?title=Drupal_8_Themes&amp;diff=81008&amp;oldid=prev</id>
		<title>Lsokolowski: /* Preprocessing for Template Files ⌘ */</title>
		<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=Drupal_8_Themes&amp;diff=81008&amp;oldid=prev"/>
		<updated>2020-12-15T11:57:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Preprocessing for Template Files ⌘&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Draft}}&lt;br /&gt;
{{Cat|Drupal}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;slideshow style=&amp;quot;nobleprog&amp;quot; headingmark=&amp;quot;⌘&amp;quot; incmark=&amp;quot;…&amp;quot; scaled=&amp;quot;false&amp;quot; font=&amp;quot;Trebuchet MS&amp;quot; &amp;gt;&lt;br /&gt;
;title: Drupal 8 Themes&lt;br /&gt;
;author: Lukasz Sokolowski&lt;br /&gt;
&amp;lt;/slideshow&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal 8 Themes ==&lt;br /&gt;
Drupal 8 Themes Training Materials&lt;br /&gt;
&lt;br /&gt;
{{Can I use your material}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Drupal 8 Themes Introduction ⌘==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;quot;Themes allow you to change the look and feel of your Drupal site.&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;You can use themes contributed by others or create your own to share with the community.&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Contributed themes are not part of any official release&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;and may not have optimized code/functionality for your purposes.&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;You can also create a sub-theme of an existing theme.&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;A sub-theme inherits a parent theme&amp;#039;s resources.&amp;quot;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;Source: https://www.drupal.org/project/project_theme&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing Existing(Contributed) Themes ⌘==&lt;br /&gt;
Very similar way like installing &amp;#039;&amp;#039;&amp;#039;modules&amp;#039;&amp;#039;&amp;#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
We can do it:&lt;br /&gt;
* manually from &amp;#039;&amp;#039;drupal.org&amp;#039;&amp;#039; &lt;br /&gt;
* via command liners - &amp;#039;&amp;#039;&amp;#039;drush&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;composer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* in our website in configuration &amp;#039;&amp;#039;Appearance/Install new theme&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
After installation we can just &amp;#039;&amp;#039;&amp;#039;Enable&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;Enable and set default&amp;#039;&amp;#039;&amp;#039; in Appearance section in management menu.&lt;br /&gt;
&lt;br /&gt;
=== Manual theme installation ⌘===&lt;br /&gt;
[[File:MonkeyJob.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Manually download the theme package and uncompress its content into &amp;#039;&amp;#039;/themes&amp;#039;&amp;#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
You can use browser and GUI(files navigator) or command line tools like &amp;#039;&amp;#039;wget&amp;#039;&amp;#039; and &amp;#039;&amp;#039;tar&amp;#039;&amp;#039; .&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise 1 ⌘===&lt;br /&gt;
# Find &amp;#039;&amp;#039;Mayo&amp;#039;&amp;#039; theme in &amp;#039;&amp;#039;drupal.org&amp;#039;&amp;#039; site and install it manually&lt;br /&gt;
#* Play a while with it&amp;#039;s plenty bunch of options&lt;br /&gt;
#** Add &amp;#039;&amp;#039;&amp;#039;resizer&amp;#039;&amp;#039;&amp;#039; to the header&lt;br /&gt;
#** Change &amp;#039;&amp;#039;&amp;#039;logo&amp;#039;&amp;#039;&amp;#039; picture into your favorite animal photo&lt;br /&gt;
#** Use different &amp;#039;&amp;#039;&amp;#039;Font Family&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
#** Add &amp;#039;&amp;#039;&amp;#039;rounded corners&amp;#039;&amp;#039;&amp;#039; everywhere it&amp;#039;s possible&lt;br /&gt;
#** Hide all sidebars, header and footers - leave just &amp;#039;&amp;#039;&amp;#039;main content&amp;#039;&amp;#039;&amp;#039; only&lt;br /&gt;
# Install &amp;#039;&amp;#039;Drupal 8 Parallax Theme&amp;#039;&amp;#039;, but via admin interface (Appearance)&lt;br /&gt;
#* https://training-course-material.com/training/Drupal_8_Themes#Popular_Drupal_8_Themes&lt;br /&gt;
#* Change the number of pictures in the frontpage &amp;#039;&amp;#039;&amp;#039;slideshow&amp;#039;&amp;#039;&amp;#039; from 3 to 5&lt;br /&gt;
#** Replace all the default pictures with something else&lt;br /&gt;
# Install and enable &amp;#039;&amp;#039;Bootstrap&amp;#039;&amp;#039; theme via &amp;#039;&amp;#039;&amp;#039;drush&amp;#039;&amp;#039;&amp;#039; command&lt;br /&gt;
&lt;br /&gt;
== Modifying an existing Theme ⌘==&lt;br /&gt;
[[File:Svn_cp_turtles.png|450px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We can copy for example one of default Drupal core themes like &amp;#039;&amp;#039;Bartik&amp;#039;&amp;#039; or &amp;#039;&amp;#039;Stark&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Then place it into &amp;#039;&amp;#039;/themes&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;rename&amp;#039;&amp;#039;&amp;#039; all convenient files and &amp;#039;&amp;#039;&amp;#039;change files&amp;#039;&amp;#039;&amp;#039;: css, templates, js, images, etc.&lt;br /&gt;
&lt;br /&gt;
This is the simplest way to create our theme &amp;#039;&amp;#039;&amp;#039;without much effort&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Exercise 2 ⌘===&lt;br /&gt;
Let&amp;#039;s create &amp;#039;&amp;#039;BlaBla&amp;#039;&amp;#039; theme.&lt;br /&gt;
&lt;br /&gt;
Changes to do:&lt;br /&gt;
* Copy &amp;#039;&amp;#039;Bartik&amp;#039;&amp;#039; theme from &amp;#039;&amp;#039;your_website/themes&amp;#039;&amp;#039; to &amp;#039;&amp;#039;your_website/themes&amp;#039;&amp;#039;&lt;br /&gt;
* Find all instances of &amp;#039;&amp;#039;&amp;#039;bartik&amp;#039;&amp;#039;&amp;#039; name in all copied files and replace it with &amp;#039;&amp;#039;&amp;#039;blabla&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Make site name font &amp;#039;&amp;#039;&amp;#039;24px&amp;#039;&amp;#039;&amp;#039; and site slogan &amp;#039;&amp;#039;&amp;#039;red&amp;#039;&amp;#039;&amp;#039; (style.css)&lt;br /&gt;
&lt;br /&gt;
== Subthemes ⌘==&lt;br /&gt;
[[File:SubTheme.jpg|450px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Themes which can inherit css, js, etc from base theme and override those files, partly or completely.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;(https://www.drupal.org/theme-guide/8/creating-a-sub-theme)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise 3.1. ⌘===&lt;br /&gt;
&lt;br /&gt;
# Create sub-theme with &amp;#039;&amp;#039;Bartik&amp;#039;&amp;#039; theme, call it &amp;#039;&amp;#039;&amp;#039;Kitrab&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
## Create &amp;#039;&amp;#039;themes/kitrab&amp;#039;&amp;#039; folder&lt;br /&gt;
## Make file &amp;#039;&amp;#039;&amp;#039;kitrab.info.yml&amp;#039;&amp;#039;&amp;#039;&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
name: Kitrab - my own drupal sub-theme&lt;br /&gt;
type: theme&lt;br /&gt;
description: This is a kitrab sub theme of Bartik&lt;br /&gt;
core: 8.x&lt;br /&gt;
base theme: bartik&lt;br /&gt;
libraries:&lt;br /&gt;
  - kitrab/global-styling&lt;br /&gt;
regions:&lt;br /&gt;
  header: Header&lt;br /&gt;
  featured: Featured&lt;br /&gt;
  content: Content&lt;br /&gt;
  sidebar_first: First sidebar&lt;br /&gt;
  sidebar_second: Second sidebar&lt;br /&gt;
  footer: Footer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
## Add second file &amp;#039;&amp;#039;&amp;#039;kitrab.libraries.yml&amp;#039;&amp;#039;&amp;#039;&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
global-styling:&lt;br /&gt;
  css:&lt;br /&gt;
    component:&lt;br /&gt;
      css/style.css: {}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
## Inheriting Block Placement - &amp;#039;&amp;#039;config/install&amp;#039;&amp;#039; (look at the &amp;#039;&amp;#039;mayo&amp;#039;&amp;#039; example)&lt;br /&gt;
## Inheriting Block Templates - create file &amp;#039;&amp;#039;&amp;#039;kitrab.theme&amp;#039;&amp;#039;&amp;#039;&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Implements hook_theme_suggestions_HOOK_alter for blocks.&lt;br /&gt;
 */&lt;br /&gt;
function kitrab_theme_suggestions_block_alter(&amp;amp;$suggestions, $variables) {&lt;br /&gt;
&lt;br /&gt;
  // Load theme suggestions for blocks from parent theme.&lt;br /&gt;
  foreach ($suggestions as &amp;amp;$suggestion) {&lt;br /&gt;
    $suggestion = str_replace(&amp;#039;kitrab_&amp;#039;, &amp;#039;bartik_&amp;#039;, $suggestion);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise 3.2. ⌘===&lt;br /&gt;
# Create sub-theme with &amp;#039;&amp;#039;Bootstrap&amp;#039;&amp;#039; theme:&lt;br /&gt;
#* Make sure &amp;#039;&amp;#039;Bootstrap&amp;#039;&amp;#039; theme is already enabled (drush en)&lt;br /&gt;
#** copy &amp;#039;&amp;#039;&amp;#039;cdn&amp;#039;&amp;#039;&amp;#039; from &amp;#039;&amp;#039;starterkits&amp;#039;&amp;#039; folder into &amp;#039;&amp;#039;/themes/&amp;#039;&amp;#039;&lt;br /&gt;
#** follow all necessary steps from the docs below:&lt;br /&gt;
#*** &amp;lt;small&amp;gt;bootstrap\docs\Sub-Theming.md&amp;lt;/small&amp;gt;&lt;br /&gt;
#* Override at least one &amp;#039;&amp;#039;&amp;#039;css&amp;#039;&amp;#039;&amp;#039; file in your &amp;#039;&amp;#039;sub-theme&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Panels and other modules related to theming ⌘==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[File:ModulesTheming.jpg|450px]] ||&lt;br /&gt;
* Field Layout and Drupal Layout Builder&lt;br /&gt;
* Responsive Image&lt;br /&gt;
* Panels and Panelizer/Page Manager&lt;br /&gt;
* Display Suite&lt;br /&gt;
* Paragraphs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Field Layout ⌘===&lt;br /&gt;
* ATM has status &amp;#039;&amp;#039;experimental&amp;#039;&amp;#039;&lt;br /&gt;
* The module applies &amp;#039;&amp;#039;&amp;#039;predefined layouts&amp;#039;&amp;#039;&amp;#039; to &amp;quot;entity displays&amp;quot;&lt;br /&gt;
** Can be &amp;#039;&amp;#039;overridden on specific pages&amp;#039;&amp;#039; using &amp;#039;&amp;#039;&amp;#039;Layout Builder&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Allows us to &amp;#039;&amp;#039;&amp;#039;arrange fields&amp;#039;&amp;#039;&amp;#039; into regions on forms and displays of entities (nodes, users, etc)&lt;br /&gt;
* Manages two separate layouts for entities: for view and for form displays&lt;br /&gt;
* The layout control is in other modules&lt;br /&gt;
** Layouts are found using modules in &amp;#039;&amp;#039;&amp;#039;Layout Discovery&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*** They have Twig files and CSS for layouts&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Panelizer&amp;#039;&amp;#039;&amp;#039; and similar modules can &amp;#039;&amp;#039;&amp;#039;feed in layouts&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Drupal Layout Builder ⌘===&lt;br /&gt;
* Currently &amp;#039;&amp;#039;&amp;#039;experimental&amp;#039;&amp;#039;&amp;#039;, expected to reach stability in Drupal 8.7 in the spring of 2019&lt;br /&gt;
* Lets us define the &amp;#039;&amp;#039;&amp;#039;layout of any fieldable entity&amp;#039;&amp;#039;&amp;#039; type (content type, user, etc), or its individual entity&lt;br /&gt;
** We just select from the &amp;#039;&amp;#039;&amp;#039;predefined sections&amp;#039;&amp;#039;&amp;#039; and add blocks and fields to them as we wish&lt;br /&gt;
* The module’s UI is simple and intuitively understandable for administrators&lt;br /&gt;
** It is equipped with the &amp;#039;&amp;#039;&amp;#039;drag-and-drop feature&amp;#039;&amp;#039;&amp;#039; to swap the blocks and shape our page&lt;br /&gt;
* For developers - &amp;#039;&amp;#039;&amp;#039;layouts&amp;#039;&amp;#039;&amp;#039; can be defined in a module or theme and have Twig templates&lt;br /&gt;
&lt;br /&gt;
=== Responsive Image ⌘===&lt;br /&gt;
* Outputs &amp;#039;&amp;#039;&amp;#039;responsive images&amp;#039;&amp;#039;&amp;#039; using the HTML5 picture tag&lt;br /&gt;
* Provides &lt;br /&gt;
** an image &amp;#039;&amp;#039;&amp;#039;formatter&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;breakpoint&amp;#039;&amp;#039;&amp;#039; mappings&lt;br /&gt;
* Uses&lt;br /&gt;
** Defining responsive image styles&lt;br /&gt;
*** &amp;#039;&amp;#039;&amp;#039;Fallback&amp;#039;&amp;#039;&amp;#039; image style&lt;br /&gt;
*** Breakpoint groups: &amp;#039;&amp;#039;&amp;#039;viewport&amp;#039;&amp;#039;&amp;#039; sizing vs art &amp;#039;&amp;#039;&amp;#039;direction&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*** Breakpoint settings: &amp;#039;&amp;#039;&amp;#039;sizes&amp;#039;&amp;#039;&amp;#039; vs image &amp;#039;&amp;#039;&amp;#039;styles&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*** Sizes &amp;#039;&amp;#039;&amp;#039;field&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*** Image styles for sizes&lt;br /&gt;
** Using responsive image styles in Image fields&lt;br /&gt;
&lt;br /&gt;
=== Panels and Panelizer/Page Manager ⌘===&lt;br /&gt;
Panels module is a &amp;#039;&amp;#039;&amp;#039;drag and drop content manager&amp;#039;&amp;#039;&amp;#039; that&lt;br /&gt;
* lets us visually &amp;#039;&amp;#039;&amp;#039;design a layout&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
* and &amp;#039;&amp;#039;&amp;#039;place content&amp;#039;&amp;#039;&amp;#039; within that layout&lt;br /&gt;
&lt;br /&gt;
==== Panels con&amp;#039;t ⌘====&lt;br /&gt;
Panels&lt;br /&gt;
* Allows a site admins to create &amp;#039;&amp;#039;&amp;#039;customized layouts&amp;#039;&amp;#039;&amp;#039; for multiple uses&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Supports styles&amp;#039;&amp;#039;&amp;#039; straight from the styleguide&lt;br /&gt;
* Features a &amp;#039;&amp;#039;&amp;#039;layout builder&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Uses &amp;#039;&amp;#039;&amp;#039;Contexts&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Includes a pluggable &amp;#039;&amp;#039;&amp;#039;caching mechanism&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Can be integrated with &amp;#039;&amp;#039;&amp;#039;Organic Groups&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Integrates with &amp;#039;&amp;#039;&amp;#039;Views&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;small&amp;gt;More here: https://www.drupal.org/node/2457747&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Panels in use ⌘====&lt;br /&gt;
* Panel nodes&lt;br /&gt;
* Panel Pages (with variants)&lt;br /&gt;
* Panelized content types, with the option to panelize individual nodes&lt;br /&gt;
&amp;lt;small&amp;gt;And much more: https://www.drupal.org/node/2457747&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Panelizer vs Page Manager ⌘====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Panelizer !! Page Manager&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
* does mostly the same as core&amp;#039;s Layout Builder&lt;br /&gt;
** don&amp;#039;t use them both at the same time (lots of overlapping code, etc)&lt;br /&gt;
* allows to attach Panels to &amp;#039;&amp;#039;&amp;#039;any node&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* provides a &amp;#039;&amp;#039;&amp;#039;single entity type&amp;#039;&amp;#039;&amp;#039; (a panel)&lt;br /&gt;
** works for many entity types&lt;br /&gt;
** with Page Manager template takes over the page rendering of the entity&lt;br /&gt;
||&lt;br /&gt;
* supports the creation of new pages, allows placing blocks within page&lt;br /&gt;
* provides &amp;quot;page variants&amp;quot;, each with their &amp;#039;&amp;#039;&amp;#039;own selection conditions&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* can be used to take over an existing page&lt;br /&gt;
** i.e. overrides &amp;#039;&amp;#039;/node/%&amp;#039;&amp;#039; to change what is displayed (view node)&lt;br /&gt;
* utilizes the core Conditions, Context, and Blocks APIs&lt;br /&gt;
* will not include any Layout GUI&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Display Suite ⌘===&lt;br /&gt;
Yet another drug and drop &amp;#039;&amp;#039;&amp;#039;display manager&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Arranges&amp;#039;&amp;#039;&amp;#039; nodes, views, comments, user data etc. the way we want &lt;br /&gt;
** without having to work our way through dozens of template files&lt;br /&gt;
** has a &amp;#039;&amp;#039;&amp;#039;predefined&amp;#039;&amp;#039;&amp;#039; list of layouts&lt;br /&gt;
* Allows to define &amp;#039;&amp;#039;&amp;#039;custom&amp;#039;&amp;#039;&amp;#039; view modes&lt;br /&gt;
&lt;br /&gt;
==== Display Suite con&amp;#039;t ⌘====&lt;br /&gt;
* Exportables&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;own custom fields&amp;#039;&amp;#039;&amp;#039; in the backend or in our code&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;custom layouts&amp;#039;&amp;#039;&amp;#039; in our theme&lt;br /&gt;
* Change labels, add styles or &amp;#039;&amp;#039;&amp;#039;override field settings&amp;#039;&amp;#039;&amp;#039; (semantic fields)&lt;br /&gt;
* Full integration with &amp;#039;&amp;#039;&amp;#039;Views and Panels&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Powerful extension: &amp;#039;&amp;#039;&amp;#039;Field Group&amp;#039;&amp;#039;&amp;#039; module&lt;br /&gt;
&lt;br /&gt;
=== Paragraphs ⌘===&lt;br /&gt;
Add more editing power to &amp;#039;&amp;#039;&amp;#039;end-users&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Simple text block, image, complex and configurable slideshow, etc&lt;br /&gt;
* New &amp;#039;&amp;#039;&amp;#039;field type&amp;#039;&amp;#039;&amp;#039; that works like Entity Reference&amp;#039;s&lt;br /&gt;
* Examples https://paragraphs.site-showcase.com/&lt;br /&gt;
&lt;br /&gt;
=== Exercise 4.1. ⌘===&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Layout Builder&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;Field Layout&amp;#039;&amp;#039;&amp;#039; exercise&lt;br /&gt;
## Create your own content type (map something from your own business/company) - Course Outline&lt;br /&gt;
##* Add at least 2 custom fields - Duration(number-days), Requirements(text)&lt;br /&gt;
## For the whole content type and for each content item make it &amp;#039;&amp;#039;&amp;#039;layout-able&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
## For the whole content type change the &amp;#039;&amp;#039;&amp;#039;section&amp;#039;&amp;#039;&amp;#039; layout into this [[File:3colLayout.png]]&lt;br /&gt;
##* Place your fields - at least one in each &amp;#039;&amp;#039;&amp;#039;sub-region&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
##* Create a node of this type&lt;br /&gt;
## For another node instance (create it&amp;#039;s content first) change the section layout into this [[File:2colLayout.png]]&lt;br /&gt;
##* Place your fields in a different way&lt;br /&gt;
## For the form display change the layout into &amp;quot;Two column bricks&amp;quot;&lt;br /&gt;
##* Place the fields, at least one in each &amp;#039;&amp;#039;sub-region&amp;#039;&amp;#039;&lt;br /&gt;
=== Exercise 4.2. ⌘===&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Image Responsive&amp;#039;&amp;#039;&amp;#039; exercise&lt;br /&gt;
#* Make image field in &amp;#039;Article&amp;#039; responsive &lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Panels and Panelizer/Page Manager&amp;#039;&amp;#039;&amp;#039; exercise&lt;br /&gt;
#* Make custom panel page &amp;quot;Themers Guide&amp;quot;&lt;br /&gt;
#** Provide 2 variants - d7ver, d8ver&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Display Suite&amp;#039;&amp;#039;&amp;#039; exercise&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Paragraphs&amp;#039;&amp;#039;&amp;#039; exercise&lt;br /&gt;
&lt;br /&gt;
== Theme system ⌘==&lt;br /&gt;
[[File:ThemeSystem.jpg|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The theme system, which controls the output of Drupal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;(https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Render%21theme.api.php/group/themeable/8.2.x)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Themable drupal elements (via theme function or template file):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;(https://api.drupal.org/api/drupal/core%21includes%21theme.inc/8.2.x)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Theme system con&amp;#039;t ⌘===&lt;br /&gt;
* Allows a theme to have &amp;#039;&amp;#039;&amp;#039;huge control&amp;#039;&amp;#039;&amp;#039; over the appearance of the site&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;markup&amp;#039;&amp;#039;&amp;#039; and the &amp;#039;&amp;#039;&amp;#039;CSS&amp;#039;&amp;#039;&amp;#039; used to style the markup&lt;br /&gt;
* Modules &amp;#039;&amp;#039;&amp;#039;don&amp;#039;t write HTML&amp;#039;&amp;#039;&amp;#039; markup directly&lt;br /&gt;
* They instead return &amp;#039;&amp;#039;&amp;#039;&amp;quot;render arrays&amp;quot;&amp;#039;&amp;#039;&amp;#039;, structured hierarchical arrays which include&lt;br /&gt;
** the &amp;#039;&amp;#039;&amp;#039;data&amp;#039;&amp;#039;&amp;#039; to be rendered into HTML (also XML or other formats)&lt;br /&gt;
** and &amp;#039;&amp;#039;&amp;#039;options&amp;#039;&amp;#039;&amp;#039; that affect the markup&lt;br /&gt;
* Those arrays are rendered by recursive calls to &amp;#039;&amp;#039;&amp;#039;drupal_render()&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Traverse the depth of the render array &amp;#039;&amp;#039;&amp;#039;hierarchy&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** At each level, the &amp;#039;&amp;#039;&amp;#039;theme system&amp;#039;&amp;#039;&amp;#039; does the actual rendering&lt;br /&gt;
&lt;br /&gt;
=== Theme engines ⌘===&lt;br /&gt;
&lt;br /&gt;
Drupal 8 uses Twig engine&lt;br /&gt;
&lt;br /&gt;
==== Twig Template Engine ⌘====&lt;br /&gt;
[[File:TwigEngine.jpg|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Handles integration of PHP templates with the Drupal theme system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;(https://www.drupal.org/theme-guide/8/twig)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Twig syntax - quick intro&lt;br /&gt;
** &amp;lt;small&amp;gt;https://twig.symfony.com/doc/2.x/templates.html&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Twig - helping modules ⌘====&lt;br /&gt;
* Registering &amp;quot;component libraries&amp;quot; defined by our theme or module as Twig namespaces&lt;br /&gt;
** &amp;lt;small&amp;gt;https://www.drupal.org/project/components&amp;lt;/small&amp;gt;&lt;br /&gt;
* Template suggestions&lt;br /&gt;
** &amp;lt;small&amp;gt;https://www.drupal.org/project/twigsuggest&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Theme Hooks ⌘===&lt;br /&gt;
[[File:Hook.png|200px]]&lt;br /&gt;
&lt;br /&gt;
==== Overriding Theme Hooks ⌘====&lt;br /&gt;
&lt;br /&gt;
=== Preprocessing for Template Files ⌘===&lt;br /&gt;
* render_example&lt;br /&gt;
&lt;br /&gt;
==== Preprocessing for Theme Functions ⌘====&lt;br /&gt;
&lt;br /&gt;
=== Theme hook suggestions ⌘===&lt;br /&gt;
&lt;br /&gt;
==== Altering theme hook suggestions ⌘====&lt;br /&gt;
&lt;br /&gt;
=== Assets ⌘===&lt;br /&gt;
&lt;br /&gt;
=== Exercise 5 ⌘===&lt;br /&gt;
&amp;lt;!-- TODO: improve these exercises --&amp;gt;&lt;br /&gt;
# Change existing twig template &lt;br /&gt;
# Create our own twig template &lt;br /&gt;
# Preprocess for template file&lt;br /&gt;
# Preprocess for theme function&lt;br /&gt;
# Suggest with theme hook&lt;br /&gt;
# Create and manage some assets&lt;br /&gt;
&lt;br /&gt;
== Creating a new theme from scratch ⌘==&lt;br /&gt;
[[File:ThemeFromScratch.jpg|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&amp;#039;s create &amp;#039;Difficult Dirty&amp;#039; theme.&lt;br /&gt;
&lt;br /&gt;
=== Steps ⌘===&lt;br /&gt;
General steps:&lt;br /&gt;
# Create or modify an HTML file(s)&lt;br /&gt;
# Create or modify a CSS file(s)&lt;br /&gt;
# Create an &amp;#039;.info.yml&amp;#039; file&lt;br /&gt;
# Standardize the file names according to Drupal conventions&lt;br /&gt;
# Insert available variables into template&lt;br /&gt;
# Create additional files for individual node types, blocks, etc&lt;br /&gt;
&lt;br /&gt;
=== File .info.yml ⌘===&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name: Theme Name&lt;br /&gt;
type: theme&lt;br /&gt;
description: A description for Theme.&lt;br /&gt;
core: 8.x&lt;br /&gt;
libraries:&lt;br /&gt;
  - themname/global-styling&lt;br /&gt;
stylesheets-remove:&lt;br /&gt;
  - &amp;#039;@classy/css/components/tabs.css&amp;#039;&lt;br /&gt;
  - core/assets/vendor/normalize-css/normalize.css&lt;br /&gt;
regions:&lt;br /&gt;
  header: Header&lt;br /&gt;
  content: Content  # the content region is required&lt;br /&gt;
  sidebar_first: &amp;#039;Sidebar first&amp;#039;&lt;br /&gt;
  footer: Footer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Related theme settings docs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;(https://www.drupal.org/theme-guide/8/defining-a-theme)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Exercise 6 ⌘====&lt;br /&gt;
Create theme &amp;#039;Difficult Dirty&amp;#039; from scratch:&lt;br /&gt;
* make dir here &amp;#039;your_site/themes/custom/difficultdirty&amp;#039;&lt;br /&gt;
* in newly created dir add file &amp;#039;difficultdirty.info.yml&amp;#039; with following content and enable the theme and test the website:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name: Theme Name&lt;br /&gt;
type: theme&lt;br /&gt;
description: A description for Theme.&lt;br /&gt;
core: 8.x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CSS file ⌘===&lt;br /&gt;
* To simplify process and speed up things (one day course) we will use parts of existing theme called &amp;quot;Drupal8 Zymphonies&amp;quot;&lt;br /&gt;
** https://ftp.drupal.org/files/projects/drupal8_zymphonies_theme-8.x-1.4.zip&lt;br /&gt;
&lt;br /&gt;
==== Exercise 7 ⌘====&lt;br /&gt;
Prepare css file:&lt;br /&gt;
* Recreate structure of&lt;br /&gt;
** css files&lt;br /&gt;
** related config/settings from &amp;#039;&amp;#039;&amp;#039;.yml&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;.theme&amp;#039;&amp;#039;&amp;#039; files&lt;br /&gt;
&lt;br /&gt;
=== Structure of a Drupal Page ⌘===&lt;br /&gt;
* Hierarchical set of twig templates &lt;br /&gt;
** Stark example&lt;br /&gt;
** Bartik example&lt;br /&gt;
&lt;br /&gt;
==== From Stark Theme ⌘====&lt;br /&gt;
[[File:TwigCallGraphStark.png]]&lt;br /&gt;
&lt;br /&gt;
==== From Bartik Theme ⌘====&lt;br /&gt;
[[File:TwigCallGraphBartik.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
=== Template Files ⌘===&lt;br /&gt;
==== Exercise 8 ⌘====&lt;br /&gt;
== Theming Blocks and Content Types ⌘==&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Devel Module(s), Other Helpers ⌘==&lt;br /&gt;
&lt;br /&gt;
[[File:DddThemes.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;Source: http://img.clipartlook.com&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Drupal Devel Suite ⌘===&lt;br /&gt;
* Devel suite&lt;br /&gt;
** Devel&lt;br /&gt;
** Devel Generate&lt;br /&gt;
** Devel Kint&lt;br /&gt;
** Drupal Web Profiler&lt;br /&gt;
*** Assets, Blocks, Cache, Config, Database, Devel, Events,&lt;br /&gt;
*** Extensions, Forms, Http, Mail, PHP Config, Performance Timing, Request,&lt;br /&gt;
*** Routing, Services, State, Theme, Timeline, User, Views &lt;br /&gt;
&lt;br /&gt;
=== Drupal Devel ⌘===&lt;br /&gt;
* Suite of modules that provides&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;helper&amp;#039;&amp;#039;&amp;#039; functions, admin &amp;#039;&amp;#039;&amp;#039;pages&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** additional development &amp;#039;&amp;#039;&amp;#039;Drush commands&amp;#039;&amp;#039;&amp;#039; to use during development (&amp;#039;&amp;#039;fn-hook&amp;#039;&amp;#039;, &amp;#039;&amp;#039;fn-event&amp;#039;&amp;#039;, ...)&lt;br /&gt;
* Main uses&lt;br /&gt;
** Inspecting &amp;#039;&amp;#039;&amp;#039;Service Container&amp;#039;&amp;#039;&amp;#039; (its Services and Parameters)&lt;br /&gt;
** Inspecting &amp;#039;&amp;#039;&amp;#039;Routes&amp;#039;&amp;#039;&amp;#039; (routing data from .routing.yml&amp;#039;s and from classes subscribing to route build/alter events)&lt;br /&gt;
** Inspecting &amp;#039;&amp;#039;&amp;#039;Events&amp;#039;&amp;#039;&amp;#039; (listeners registered in the event dispatcher)&lt;br /&gt;
* Devel api &amp;lt;small&amp;gt;https://api.drupal.org/api/devel/8.x-1.x&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Drupal Devel Generate ⌘===&lt;br /&gt;
* Bulk creates nodes, users, comment, terms for development&lt;br /&gt;
* Has Drush integration&lt;br /&gt;
&lt;br /&gt;
=== Devel Kint ⌘===&lt;br /&gt;
Useful during development&lt;br /&gt;
* Gives &amp;#039;&amp;#039;&amp;#039;dpr()&amp;#039;&amp;#039;&amp;#039; function - pretty prints variables&lt;br /&gt;
* Similar helpers - &amp;#039;&amp;#039;&amp;#039;dpm()&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;dvm()&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Drupal Web Profiler ⌘===&lt;br /&gt;
* Adds a &amp;#039;&amp;#039;&amp;#039;debug bar&amp;#039;&amp;#039;&amp;#039; at bottom of all pages&lt;br /&gt;
** a query list, cache hit/miss data, memory profiling, page speed, php info, session info, etc&lt;br /&gt;
** we can collect the time needed to instantiate every single service used in a request&lt;br /&gt;
*** see &amp;#039;&amp;#039;../README.md&amp;#039;&amp;#039; file for instructions&lt;br /&gt;
&lt;br /&gt;
=== Theme registry ⌘===&lt;br /&gt;
* Variable which keeps all the theme related items&lt;br /&gt;
** &amp;#039;&amp;#039;devel/theme/registry&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Theme debug mode ⌘===&lt;br /&gt;
* Enable Twig Debugging in &amp;#039;&amp;#039;sites/default/services.yml&amp;#039;&amp;#039;&lt;br /&gt;
** If the file doesn&amp;#039;t yet exist, copy &amp;#039;&amp;#039;default.services.yml&amp;#039;&amp;#039; to &amp;#039;&amp;#039;services.yml&amp;#039;&amp;#039;&lt;br /&gt;
** Set the debug variable to true, clear cache&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
parameters:&lt;br /&gt;
  twig.config:&lt;br /&gt;
    debug: true &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Inspect or view source&lt;br /&gt;
&lt;br /&gt;
== Popular Drupal 8 Themes ⌘==&lt;br /&gt;
* Non comprehensive but still rich list of good and popular Drupal 8 themes &lt;br /&gt;
** https://www.drupal.org/project/bootstrap&lt;br /&gt;
*** combined with https://www.drupal.org/project/bootstrap_layouts&lt;br /&gt;
** https://www.drupal.org/project/zen&lt;br /&gt;
** https://www.drupal.org/project/omega&lt;br /&gt;
** https://www.drupal.org/project/material_base&lt;br /&gt;
** https://www.drupal.org/project/bones_theme&lt;br /&gt;
** https://www.drupal.org/project/hops&lt;br /&gt;
** https://www.drupal.org/project/drupal8_parallax_theme&lt;br /&gt;
** https://www.drupal.org/project/cog&lt;br /&gt;
** https://www.drupal.org/project/bootstrap_sass&lt;br /&gt;
* Interesting alternative for drupal administration theme&lt;br /&gt;
** https://www.drupal.org/project/agnian_material_admin&lt;br /&gt;
* &amp;quot;No coding&amp;quot; theme with theme generator&lt;br /&gt;
** https://www.drupal.org/project/adaptivetheme&lt;br /&gt;
&lt;br /&gt;
== Drupal 8 Distributions ⌘==&lt;br /&gt;
* A couple of the good Drupal 8 Distributions&lt;br /&gt;
** https://www.drupal.org/project/varbase&lt;br /&gt;
** https://www.drupal.org/project/quick_start&lt;br /&gt;
** https://www.drupal.org/project/panopoly&lt;br /&gt;
** https://www.drupal.org/project/droopler&lt;br /&gt;
** https://www.drupal.org/project/wxt&lt;br /&gt;
** https://www.drupal.org/project/champion&lt;br /&gt;
*** HAX way (-: (&amp;lt;small&amp;gt;https://www.drupal.org/project/hax&amp;lt;/small&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== Drupal themes future? ⌘==&lt;br /&gt;
[[File:DecoupledDrupal.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;Source: https://dri.es/how-to-decouple-drupal-in-2019&amp;lt;/small&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lsokolowski</name></author>
	</entry>
</feed>