diff --git a/docs/en/02_Developer_Guides/01_Templates/01_Syntax.md b/docs/en/02_Developer_Guides/01_Templates/01_Syntax.md index 5806195be..36c7a21ed 100644 --- a/docs/en/02_Developer_Guides/01_Templates/01_Syntax.md +++ b/docs/en/02_Developer_Guides/01_Templates/01_Syntax.md @@ -3,10 +3,9 @@ summary: A look at the operations, variables and language controls you can use w # Template Syntax -SilverStripe templates are plain text files that have `.ss` extension and located within the `templates` directory of -a module, theme, or your `mysite` folder. A template can contain any markup language (e.g HTML, CSV, JSON..) and before -being rendered to the user, they're processed through [api:SSViewer]. This process replaces placeholders such as `$Var` -with real content from your [model](../model) and allows you to define logic controls like `<% if $Var %>`. +A template can contain any markup language (e.g HTML, CSV, JSON..) and before being rendered to the user, they're +processed through [api:SSViewer]. This process replaces placeholders such as `$Var` with real content from your +[model](../model) and allows you to define logic controls like `<% if $Var %>`. An example of a SilverStripe template is below: @@ -45,6 +44,17 @@ Templates can be used for more than HTML output. You can use them to output your text-based format. +## Template file location + +SilverStripe templates are plain text files that have `.ss` extension and located within the `templates` directory of +a module, theme, or your `mysite` folder. + +By default, templates will have the same name as the class they are used to render. So, your Page class will +be rendered with the `templates/Page.ss` template. + +When the class has a namespace, the namespace will be interpreted as subfolder within the `templates` path. For, example, the class `SilverStripe\Control\Controller` will be rendered with the +`templates/SilverStripe/Control/Controller.ss` template. + ## Variables Variables are placeholders that will be replaced with data from the [DataModel](../model/) or the current @@ -190,11 +200,15 @@ You can use inequalities like `<`, `<=`, `>`, `>=` to compare numbers. ## Includes -Within SilverStripe templates we have the ability to include other templates from the `template/Includes` directory -using the `<% include %>` tag. +Within SilverStripe templates we have the ability to include other templates using the `<% include %>` tag. The includes +will be searched for using the same filename look-up rules as a regular template, so this will include +`templates/Includes/Sidebar.ss` :::ss - <% include SideBar %> + <% include Includes\SideBar %> + +Note that in SilverStripe 3, you didn't have to specify a namespace in your `include` tag, as the template engine didn't +use namespaces. As of SilverStripe 4, the template namespaces need to match the folder structure of your template files. The `include` tag can be particularly helpful for nested functionality and breaking large templates up. In this example, the include only happens if the user is logged in. diff --git a/docs/en/02_Developer_Guides/01_Templates/05_Template_Inheritance.md b/docs/en/02_Developer_Guides/01_Templates/05_Template_Inheritance.md index 9b213d25f..edb1a19a2 100644 --- a/docs/en/02_Developer_Guides/01_Templates/05_Template_Inheritance.md +++ b/docs/en/02_Developer_Guides/01_Templates/05_Template_Inheritance.md @@ -101,3 +101,7 @@ footer and navigation will remain the same and we don't want to replicate this w Hi! +If your classes have in a namespace, the Layout folder will be a found inside of the appropriate namespace folder. + +For example, the layout template for `SilverStripe\Control\Controller` will be +found at `templates/SilverStripe/Control/Layout/Controller.ss`.