# Control structure - `extends` / `section` A nice feature of most robust templating engine is the ability to inherit from other view. Picea follows a similar train of tought, since it's also possible create a chain of inheritance using `extends` which have definable parts you can declare using `section`. ## Basic `extends` (string $path) You must provide a valid `$path` from which the template will be inherited. **[PICEA]** So, using this code: *path/base/layout.phtml* ```html {% section "head" %} {{ title() }} - AnExampleApp {% section %}
{% section "main" %}{% endsection %}
``` *path/home.phtml* ```html {% extends "path/base/layout" %} {% title "Home page" %} {% section "main" %}

Welcome !

{# @TODO integrate our new blog engine below ! #}
This is our new blog ! We hope you are gonna enjoy your stay on our new platform !
{% endsection %} ``` **[HTML]** Would render as such : ```html Home page - AnExampleApp

Welcome !

This is our new blog ! We hope you are gonna enjoy your stay on our new platform !
``` ### Inherit an already extended view We could use the previous file `path/home` and generate, let's say, the same page, but without a navigation menu. **[PICEA]** So, using this code: *path/home-navless.phtml* ```html {% extends "path/home" %} {% section "header" %}{% endsection %} ``` **[HTML]** Would render as such : ```html Home page - AnExampleApp

Welcome !

This is our new blog ! We hope you are gonna enjoy your stay on our new platform !
``` Notice that the `
` tag is now empty, since we've redeclared it in our navless view. ## Overview of `section` (string $name, array $options) In your `$name` variable, accepted characters are alpha-numeric and those specific caracters : `.-_:`, so names suches as : `body.content` `my-cool-section:heading` `MyOtherSection` `_another_accepted_name` Allowed options are : string `action` : allowed are `prepend`, `default`, `append` int `order` : if you must ### Actions can also be passed using specials tokens : `section.prepend` and `section.append` can also be used without passing an `action` option. *path/home-nav.phtml* ```html {% extends "path/home" %} {% section "header" %} First link here ! {% endsection %} ``` *path/home-admin-nav.phtml* ```html {% extends "path/home-nav" %} {% section.prepend "header" %}

My new NAV header

{% endsection %} {% section.append "header" %} Second link here ! {% endsection %} ``` **[HTML]** Would render as such : ```html

My new NAV header

First link here ! Second link here ! ```