Skip to content

Construindo uma interface modular

Hugo edited this page Jan 23, 2015 · 1 revision

Uma interface modular consiste em um conjunto de módulos de código separados que juntos formam um todo. O mkt-virtual-theme possui diversas funções para facilitar todo esse processo. As principais são get_component e the_component.

Criando componentes

Componentes são apenas arquivos PHP. Usando a função the_component, você pode inserí-lo dentro de outros arquivos PHP.

Vamos começar definindo um componente chamado header.php:

<header>
    <h1><?php bloginfo('name'); ?></h1>
</header>

Usando the_component podemos colocá-lo dentro do nosso template front-page.php:

the_component('header');

Isso irá inserir todo o conteúdo do arquivo header.php no arquivo front-page.php. Este arquivo não é apenas copiado. Todo o código dentro dele é executado.

Você também pode passar argumentos para um componente, através de um array. Essa é uma técnica bem poderosa, que permite que você altere componentes para adaptá-los a cada contexto. Estes argumentos estão disponíveis no componente dentro da variável $args. Então, se usássemos the_component('header', array('class' => 'light')), aplicaríamos a classe no header.php dessa forma:

<header class="<?php echo args['class'] ?>">
    <h1><?php bloginfo('name'); ?></h1>
</header>

Em um site real, uma página possui muito mais informações do que apenas um header. O the_component também pode ser utilizado repetidamente. Um exemplo mais real:

/**
 * front-page.php
 */

the_component('components/header');
the_component('components/posts-list');
the_component('components/newsletter-form');
the_component('components/footer');
/**
 * archive.php
 */

the_component('components/header');
the_component('components/posts-list');
the_component('components/dates-list');
the_component('components/newsletter-form');
the_component('components/footer');

Dessa forma temos componentes altamente reutilizáveis, que juntos podem compor uma série de páginas e até outros componentes.

Você deve ter percebido que ocultamos o head e que também não foi necessário usar funções como get_header e get_footer para abrir e fechar o documento HTML que será gerado. Isso aconteceu pois o mkt-virtual-theme conta com um sistema de layouts.

Sistema de layouts

Um sistema de layouts significa que podemos definir uma "casca" que ficará em volta de todos os nossos templates. Cada "casca" é chamada de layout. O layout padrão é o default, mas você pode criar novos dentro da pasta layouts na raiz do tema.

Todos os layouts possuem acesso à variável $args['content'], onde fica armazenado o conteúdo dos templates que deve ser "injetado" no layout. Então, um layout tem uma estrutura parecida com essa:

<!DOCTYPE HTML>
<html>
    <head>
        <title>Site</title>
    </head>
    <body>
        <?php echo $args['content'] ?>
    </body>
</html>

Você pode mudar o layout de uma página definindo a variável $layout com o nome do layout desejado. Usando $layout = 'logged_in' em uma página, ela seria carregada dentro do layout layout/logged_in.php.


Essas são só algumas das formas de melhorar o código do seu projeto utilizando os helpers do mkt-virtual-theme. Construindo uma interface modular, você torna seu código mais legível, reutilizável e manutenível.

Clone this wiki locally