Альтернативный подход к шаблонам — нужен ли?

Как правило при условной следующей структуре
<body>
   <div class="wrapper">
        <nav>Главное меню</nav>
            <div>Контент страницы</div>
        <footer>Подвал</footer>
    </div>
<body>

В header.php помещаем открывающийся тег body, главное меню, возможно открывающийся тег блока основного контента.
В footer.php соответственно содержимое подвала и закрывающийся body.

Непосредственно же контент страницы идет в page.php, category.php и т.д.

Столкнулся с ситуацией, когда на главной странице требуется сделать абсолютно другой "лэйаут", условно
<body>
    <div class="main-page">Контент главной страницы</div>
<body>

И "хвосты" верхнего меню и подвала ну совсем не нужны (обернуть их в условный тег конечно можно, но тогда придется оборачивать и общий div обертку.

Пришла идея, оставить только index.php, а так же header.php и footer.php в которых будет исключительно body (ну и head, скрипты, стили).

В index.php сделать следующую конструкцию:
get_header();

if(is_home()) {
    get_template_part('layouts/home');
}

else {
    get_template_part('layouts/default');
}

get_footer();


А в layouts/default.php например
<?php get_template_part( 'parts/nav'); ?>

    <div class="content">
        <?php

        if (is_tax( 'taxonomy' )) {
            get_template_part( 'pages/taxonomy');
        }

        elseif (is_singular('post-type')){
            get_template_part( 'pages/post-type');
        }

        ?>
    </div>
</div>


Это работает, разницы в скорости на локальном сервере я не замечаю.
Но это отход от кодекса...

Гуру, что думаете - стоит так делать или нет, и почему?
  • Вопрос задан
  • 2295 просмотров
Пригласить эксперта
Ответы на вопрос 1
@mr_ko
Javascript, Node.js. React.js, Vue.js, Wordpress
Вариантов есть как минимум два:
1. Сделать отдельный шаблон для главной страницы home.php
2. Сделать главной страницей статическую страницу и для нее сделать отдельный шаблон
<?php
/*
Template Name: Главная страница
*/
.........
?>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы