homework/Views/Shared/_Layout.cshtml
2026-09-14 01:49:15 +05:00

125 lines
7.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="ru">
<head>
@* кодировка UTF-8 — чтобы русские буквы отображались корректно *@
<meta charset="utf-8" />
@* viewport — чтобы сайт нормально смотрелся на телефонах *@
@* width=device-width — ширина = ширина экрана, initial-scale=1.0 — без масштабирования *@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@* Open Graph — чтобы при ссылке в соцсети показывалось красивое превью *@
<meta property="og:title" content="ТехноМир — Интернет-магазин техники" />
<meta property="og:description" content="Лучшие цены на ноутбуки, смартфоны, планшеты и наушники" />
<meta property="og:type" content="website" />
@* заголовок страницы — берётся из ViewData["Title"], который задаётся в каждом представлении *@
<title>@ViewData["Title"] — ТехноМир</title>
@* подключаем Bootstrap 5 через CDN (Content Delivery Network) *@
@* это значит что CSS-файл подгружается с сервера Bootstrap, а не лежит у нас *@
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YcnS/1p0KQLI8apkWKaIl2pCeM0oG6mDcK0h"
crossorigin="anonymous" />
@* подключаем наш кастомный CSS — он лежит в wwwroot/css/site.css *@
@* asp-append-version="true" — добавляет хеш к файлу, чтобы браузер перезагружал CSS при изменениях *@
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
@* иконка сайта (favicon) — маленькая картинка во вкладке браузера *@
<link rel="icon" type="image/x-icon" href="~/favicon.ico" />
</head>
@* data-theme — атрибут для переключения темы (светлая/тёмная) *@
<body data-theme="light">
@* === ШАПКА САЙТА (HEADER) === *@
<header>
@* навигационная панель Bootstrap — сверху сайта *@
@* navbar-expand-sm — на маленьких экранах схлопывается в бургер *@
@* navbar-dark — тёмный стиль навбара (белый текст на тёмном фоне) *@
@* bg-primary — фон навбара — наш акцентный цвет *@
<nav class="navbar navbar-expand-sm navbar-dark bg-primary shadow-sm mb-3">
<div class="container">
@* логотип / название сайта — ссылка на главную *@
@* asp-controller="Home" asp-action="Index" — Tag Helper, который генерирует href="/" *@
<a class="navbar-brand fw-bold" asp-controller="Home" asp-action="Index">
ТехноМир
</a>
@* кнопка-бургер — появляется на маленьких экранах *@
@* data-bs-target="#mainNav" — ссылается на ID меню, которое нужно свернуть/развернуть *@
<button class="navbar-toggler" type="button"
data-bs-toggle="collapse" data-bs-target="#mainNav"
aria-controls="mainNav" aria-expanded="false" aria-label="Меню">
@* иконка-бургер (три полоски) *@
<span class="navbar-toggler-icon"></span>
</button>
@* само меню — сворачивается на маленьких экранах *@
<div class="collapse navbar-collapse" id="mainNav">
@* список ссылок навигации *@
<ul class="navbar-nav me-auto">
@* Главная *@
<li class="nav-item">
<a class="nav-link" asp-controller="Home" asp-action="Index">Главная</a>
</li>
@* Каталог *@
<li class="nav-item">
<a class="nav-link" asp-controller="Catalog" asp-action="Index">Каталог</a>
</li>
@* О системе *@
<li class="nav-item">
<a class="nav-link" asp-controller="Home" asp-action="About">О системе</a>
</li>
@* Контакты *@
<li class="nav-item">
<a class="nav-link" asp-controller="Home" asp-action="Contacts">Контакты</a>
</li>
</ul>
@* кнопка переключения темы — справа в навбаре *@
<button id="themeToggle" class="btn btn-outline-light btn-sm" title="Переключить тему">
@* по умолчанию показываем луну (переключиться на тёмную) *@
<span id="themeIcon">&#9790;</span>
</button>
</div>
</div>
</nav>
</header>
@* === ОСНОВНОЕ СОДЕРЖИМОЕ СТРАНИЦЫ === *@
@* контейнер — ограничивает ширину контента, чтобы на широком экране не растягивался *@
<div class="container">
@* main — основной блок, сюда подставляется содержимое текущей страницы *@
@* RenderBody() — вот сюда вставляется то, что написано в Index.cshtml, About.cshtml и т.д. *@
<main role="main" class="pb-4">
@RenderBody()
</main>
</div>
@* === ПОДВАЛ (FOOTER) === *@
@* footer — самый низ сайта *@
<footer class="footer mt-auto py-3 bg-dark text-light">
<div class="container text-center">
@* группа, ФИО и год — как просили в задании *@
<span class="text-muted">
РПО 23/1 &mdash; Борисов Иван Сергеевич &mdash; 2026
</span>
</div>
</footer>
@* === СКРИПТЫ === *@
@* подключаем Bootstrap JS-бандл (включает Popper.js — нужен для выпадающих меню и тултипов) *@
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"
integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"
crossorigin="anonymous"></script>
@* наш скрипт — переключение темы *@
<script src="~/js/site.js" asp-append-version="true"></script>
@* рендерим дополнительные скрипты, если они нужны конкретной странице *@
@* required: false — секция необязательная, страницы без неё не ошибутся *@
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>