Step 7 (S-44791)
Step on Stepik: https://stepik.org/lesson/14828/step/7
[00:00 - 00:17] следующая особенность про которую следует поговорить а эта особенность есть не у всех шаблонизаторов но она есть это так называемая наследование шаблонов а зачем это нужно чтобы понять зачем то нужно мы рассмотрим макет сайта
[00:17 - 00:35] здесь представлен макет который мы предлагали студентам для реализации проекта но в принципе это типичный сайт похожий на stack overflow вопрос ответ давайте посмотрим структуру страниц то есть как как условного линзы страница
[00:35 - 00:53] во 1 странице есть а шапка очевидно что эта шапка одинаково на всех страниц но в большинстве случаев это так и есть шапка спадает со всех страниц у нее может отличаться от это правая часть
[00:53 - 01:09] авторизованном не авторизован но в целом шаг совпадают а далее страница разделена на 2 части центральную колонку
[01:09 - 01:26] и правую колонку очевидно также что правая колонка также совпадают на большинстве страниц от это правой колонке она спадает на большинстве страниц а содержимое центральной колонке
[01:26 - 01:41] а содержать центральной колонки отличается каким образом сделать так чтоб нам не приходилось дублировать а верстку правой колонке и шапке
[01:41 - 01:57] есть варианты 2 мы можем вынести эту верстку в отдельные шаблоны исключать их с помощью директиву include либо 2 вариант мы можем использовать наследование шаблонов наследование шаблонов это очень похоже на
[01:57 - 02:14] наследование языке программирования а при наследовании выделяется некоторый базовый шаблон бориса что мы такие шаблоны еще иногда называют layout лэйаут потому что они задают общее расположение блоков на странице
[02:14 - 02:31] что мы видим а мы видим что в шаблоне указана общая структура то есть доктор а все страницы заголовок а ты здесь не указано но в общем то частности
[02:31 - 02:46] а внутри внутри верстки встречаются специальные теги блок и ян блок а в некоторых случаях этих тегов есть некоторое содержимое
[02:46 - 03:05] а если проводить аналогию с языком программирования а шаблон быстро что мы это базовый класс а блоки это виртуальные методы а некоторые нет а в некоторых методов есть реализация по умолчанию
[03:05 - 03:20] например в некоторых нет сдается вообще верстка страниц как выглядят верстка одержимая
[03:20 - 03:38] шаблоны конкретной страницы например мы рассмотрим шаблон главной страницы которые отрисовываются по урлу слэш а в 1 строчке важно команда команда extend команды к стенс показывает
[03:38 - 03:57] что данный шаблон он не самостоятельный что наследуется от другого шаблона и как мы видим содержимое оно себя оно разделено на отдельные блоки вот блок блок то есть а что мы находится внутри блока а
[03:57 - 04:14] шаблон конкретной страницы соответствует а если мы говорим про opeth классу которые наследуются от базового соответственно блоке перекрывают все блоки которые указаны в базовом классе
[04:14 - 04:29] у каждого блока есть имя например а вот блог имя content этот блок перекрывает соответствующее ему блок в базовом классе а что происходит когда а
[04:29 - 04:47] вы пытаетесь помощью шаблонизатора рисовать вот этот шаблон то есть шаблон конкретной страницы пока называется индекса что married шаблонизатор видит что это не самостоятельный шаблона что он наследуется
[04:47 - 05:02] директива экстаз поэтому он начинает выполнение отрисовку с родительского шаблона в какой то момент времени а в родительском шаблоне шаблонизатор а встречает директиву блок
[05:02 - 05:18] шаблонизатор помнишь на самом деле он отрисовывает не боится что мы до некоторой конкретной шаблон поэтому смотрят определенный блок в конкретном шаблоне в этом шаблоне блок определен поэтому выводятся именно он
[05:18 - 05:35] а внутри блоков есть возможность вызывать блок супер это вызов родительского то есть когда отрисовывается title блок title конкретного шаблона сначала отрисовывается родительский ему то есть вот это значение
[05:35 - 05:52] а потом соответственно вот вот эта строчка не очень популярны функционал а далее а далее идет блок экстра класс шаблонизатор проверяет если блок экстра хет а
[05:52 - 06:09] в конкретном шаблоне индекса что мы такого блока здесь нет поэтому выводится то что есть что то здесь в блок пустой ничего не вводится а далее выводится заголовок и мы доходим до блока content
[06:09 - 06:24] опять шаблонизатор смотрит если блок content в конкретном о шаблоне шаблоне главной странице да этот блог есть поэтому выводится именно
[06:24 - 06:40] а блок content из главных страниц а таким образом у нас а структура шаблонов которые наследуются друг от друга нам логично структуре а структуре класс
[06:40 - 06:57] ну а если мы не все знаете про паттерны проектирования такой паттерн называется template метод
[06:57 - 07:13] а что мы добиваемся таким подходом что мы вообще добиваемся а наследование шаблонов существует несколько вещей во 1 ну 1 самое важное это исключение
[07:13 - 07:28] дублирование верстке то есть мы видим что в каждом шаблоне встречается только та верстка которая специфично для данной страницы твердая которые есть на всех страницах она указывается 1 раз а в шаблоне лэйаут
[07:28 - 07:45] а в принципе того чтобы там можно было бы добиться с помощью директиву include то есть с помощью подключения шаблон но в чем + а подхода в том что она сохраняется парных тегов а вот посмотрите на
[07:45 - 08:01] вы увидите что все теги открывающийся закрывающийся открывающийся закрывающийся все теги находятся в 1 шаблоне это очень удобно это гарантирует что у нас а структура что моя страничка останется правильно
[08:01 - 08:20] если мы используем include директиву то у нас а шапка сайта ну то есть вот эта часть и футер сайта как правило находятся в разных шаблонов поэтому нам нужно следить чтобы все таки которые открываются в 1 файле они закрывались другом
[08:20 - 08:37] это тяжело и часто приводит к ошибкам при наследовании шаблонов такой проблемы не возникает в принципе раз этого не может использоваться более сложная структура
[08:37 - 08:52] например если у вас есть какой то профиль и все страницы профиля обладает похожей структурой вы можете создать а базовый шаблон от него отнаследовать ну с да славится базовый шаблон
[08:52 - 09:11] от него наследуются какой то шаблон профиле от него наследуются например главная страница профиля
[09:11 - 09:23] то есть наследование может быть также не только 1 уровня а произвольная произвольное количество уровней наследования может быть это нормально поддерживается шаблонизатором