I encountered this exact problem and solved it by using a single column, single row layout for all my pages. Like this:
<aura:component implements="forceCommunity:layout" description="Custom Content Layout" access="global">
<aura:attribute name="content" type="Aura.Component[]" required="false"/>
<div class="contentPanel">
{!v.content}
</div>
</aura:component>
Then on each page component I put my custom header and footer components. It just occurred to me that I may be able to put these header and footer components on the above layout, with some css tweaking.
The header component:
<aura:component implements="forceCommunity:availableForAllPageTypes" access="global">
<div class="custom-footer ">
<div class="" style="width:100%">
<img src="/sfsites/c/resource/YourImage" style="height:27px;" />
</div>
</div>
</aura:component>
The footer css:
.THIS.custom-footer {
height: 122px;
background-color: #f00;
text-align: center;
align-items: center;
margin-top: auto;
width: 100%;
flex: 0 0 auto;
}
I then carefully structured my page components to flex like this:
<div class="custom-main">
<c:my_LoginHeader />
<div class="custom-content">
<!--main content here-->
</div>
<c:my_LoginFooter />
</div>
With css like this:
.THIS .custom-main {
display: flex;
flex-direction: column;
height: 100vh;
}
.THIS .custom-content {
max-width: 700px;
margin: auto;
width: 100%;
}
This structure means I can have a 100% width footer but still manipulate the inner content independently.
It's been working well, but I may try moving it into the theme component as I mentioned. How did you do it (I'd be very interested to see, esp if it's more elegant).