По-умолчанию используется шаблон(макет) frontend/views/layouts/main.php.

Допустим, нужно для главной страницы (действие actionIndex) вывести дополнительно сайдбар в виджете, а для других страниц не выводить. При этом подключение сайдбара хотим осуществить в шаблоне, а не в виде, чтобы вид отвечал только за вывод контента нужного действия. В таком случае нет необходимости создавать два отдельных шаблона, которые будут идентичны за исключением наличия сайдбара и дублировать шапку сайта, подвал и др.
Т.к. в моем примере только для действия actionIndex (главная страницы) не подходит главный шаблон layouts/main.php, достаточно создать подшаблон только для него, а остальные действия будут продолжать напрямую использовать этот главный шаблон.

Создаем подшаблон для главной страницы, например с названием layout_index.
Файл frontend/views/layouts/layout_index.php:
<?php $this->beginContent('@app/views/layouts/main.php'); ?>
    <div class="row">
        <div class="col-sm-9">
            <?= $content ?>
        </div>
        <div class="col-sm-3">
            <h3>Тут сайдбар</h3>
        </div>
    </div>
<?php $this->endContent(); ?>

Содержимое указанное между методами beginContent() и endContent() будет вставлено в главный шаблон, путь к которому (или алиас) указан в качестве аргумента метода beginContent().
В данном случае использована разметка bootstrap для разделения на блоки, т.е. сайдбар займет четвертую часть по ширине.

Используя данный подход, мы сначала получаем контент главной страницы в переменную $content подшаблона layout_index, а когда подключаем главный шаблон main, все содержимое layout_index попадает уже в переменную $content главного шаблона.

Осталось только указать, что для главной страницы мы будем использовать отдельный шаблон:
public function actionIndex()
{
    $this->layout = 'layout_index';
…