Structure
Every twig template hostware renders comes from one of three places: the core storefront, an active module, or the sales channel's current theme. Each place has a namespace, and the namespace is how you address a template and how the framework decides which version wins when several exist.
hostware builds its storefront on top of the Twig engine, so every override you write is a normal Twig file. What is special is that hostware transparently walks all three sources for you and merges them.
Namespaces
A namespace is the part of a template path before ::. It answers "which project owns this file". You use a namespace whenever you extend or include a template.
storefront::
The core hostware templates. Every base layout, page, and component in the shop lives here. Themes and modules extend files under this namespace to change how the storefront looks or behaves. Example: storefront::home.twig, storefront::component/product/card.twig.
<modulename>::
Templates shipped by a module. The namespace is the module's directory name in lowercase. The module DashservVps, for instance, exposes its templates as dashservvps::path/to/template.twig. Use this namespace to reference or extend files another module ships.
theme.<name>::
Templates that belong to a theme's own resources/views/ tree. Themes get a theme. prefix so their namespace never collides with a module of the same name. The theme called evolution, for example, exposes internal partials as theme.evolution::cms/elements/components/evo_feature_box_item. You mostly reach for this when a theme references its own partials from inside another theme file.
Where a theme lives on disk
Themes are folders under custom/themes/<vendor>/<name>. Everything inside resources/views/ follows the same relative path layout as the core storefront, so a theme template at resources/views/storefront/home.twig is what overrides storefront::home.twig. Read Create a new theme for the directory shape and activation flow.
hw_extends and hw_include
Two Twig tags drive the override system. Both walk the same three-source chain (theme, active modules, core), but they behave differently once they find a template.
{% hw_extends 'storefront::home.twig' %}takes the found template as a parent, letting you override its blocks. Use this to change parts of a page.{% hw_include 'storefront::component/product/card.twig' %}drops the found template inline. Use this to reuse a partial. Because it walks the same chain, a theme's replacement of a component is picked up wherever it is included.
Both tags require the namespace form (storefront::path), never a bare path. Without a namespace the template resolver rejects the call.
What to read next
See Template extension order for the exact tree hostware builds and the priority theme-then-module-then-core. See Extending a template file for the block-by-block override pattern you use in practice.