Send a block... into a block?
It seems to be what you need is Twigs extend functionality. What you have here is a very common template structure so there is nothing out of the ordinary!

Firstly, going from your code I'd recommend your main layout template file looks something like this. The idea here being that these elements will not change for each page, but the content or information displayed inside them will. This template file is where you would also load in your CSS, Javascript etc.

&lt;body&gt;
    {% include 'components/header' %}

    &lt;main class="main"&gt;
        {% block content %}{% endblock %}
    &lt;/main&gt;

    {% include 'components/footer' %}
&lt;/body&gt;


Say you have a page that will sit on www.yoursite.co.uk/about. You could create a template file in your templates folder called about.twig, and to use your base template file it would look something like this:

{% extends "path/to/main/layout" %}

{% block content %}

    &lt;p&gt;The content for your about page&lt;/p&gt;

{% endblock %}


Hope that clears it up for you!