Tema:
É como o OpenCart chama o conjunto que envolve o javascript, imagens, e os templates.
Template:
São os arquivos .tpl em si, que determinam o "molde" de cada página, bloco ou seção nas páginas que o visitante vê.
Layout:
São as "camadas", pré-criadas ou personalizadas por você, que determinam quais módulos aquele "Layout" deve carregar.
Você pode associar, em seguida, quais Layouts são chamados em cada página.
Exemplo de uso do Layout:
Enquanto o Layout "Product" é chamado exclusivamente na rota product/product (que é a tela do produto, com detalhes, opções, foto, preço e botão comprar), o Layout "Home" só é chamado na página principal da loja.
Então se você determinar que o módulo "Categorias" deve ser exibido nesse Layout "Products", a página do produto passa a ter a lista de categorias. Se você determinar que o módulo "Categorias" deve ser exibido no Layout "Home", a lista de categorias só vai aparecer na página principal da loja.
Se você quiser um módulo em mais de 1 página (home, products e categorias, por exemplo), você pode criar um novo Layout "XYZ", e configurá-lo para ser exibido nessas 3 páginas (common/home, product/product e product/category), e então configurar os dois módulos para serem exibidos no Layout XYZ.
Pode parecer complicado a princípio, mas depois que você acostuma, é bem prático, especialmente se você tiver 2 ou mais módulos para serem exibidos exatamente nas mesmas páginas, pois não precisa selecionar 3 Layouts nos 3 módulos, basta selecionar esse novo Layout associado às 3 páginas que deseja
