462 lines
27 KiB
HTML
462 lines
27 KiB
HTML
<!doctype html>
|
||
<html lang="ru">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
<title>Каталог | Книжный интернет-магазин "Тома"</title>
|
||
<!-- Bootstrap CSS -->
|
||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||
<!-- Bootstrap Icons -->
|
||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.1/font/bootstrap-icons.css" />
|
||
<!-- Ваш CSS -->
|
||
|
||
<link rel="stylesheet" crossorigin href="/assets/style-k5itloYG.css">
|
||
</head>
|
||
<body>
|
||
<!-- Навигация -->
|
||
<nav class="navbar navbar-expand-lg navbar-light bg-light fixed-top shadow-sm">
|
||
<div class="container">
|
||
<a class="navbar-brand d-flex align-items-center" href="index.html">
|
||
<img src="/assets/logo-DsrEtJYJ.png" alt="Логотип" class="logo me-2" />
|
||
<span class="d-none d-lg-block">Книжный магазин "Тома"</span>
|
||
<span class="d-lg-none">"Тома"</span>
|
||
</a>
|
||
|
||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarContent">
|
||
<span class="navbar-toggler-icon"></span>
|
||
</button>
|
||
|
||
<div class="collapse navbar-collapse" id="navbarContent">
|
||
<ul class="navbar-nav ms-auto">
|
||
<li class="nav-item dropdown">
|
||
<a
|
||
class="nav-link dropdown-toggle"
|
||
href="#"
|
||
id="navbarDropdown"
|
||
role="button"
|
||
data-bs-toggle="dropdown"
|
||
aria-expanded="false"
|
||
>
|
||
Страницы
|
||
</a>
|
||
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||
<li><a class="dropdown-item" href="index.html">Главная</a></li>
|
||
<li><a class="dropdown-item" href="catalog.html">Каталог</a></li>
|
||
<li><a class="dropdown-item" href="discounts.html">Скидки</a></li>
|
||
<li><a class="dropdown-item" href="basket.html">Корзина</a></li>
|
||
<li><a class="dropdown-item" href="contactUs.html">Контакты</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<!-- Основной контент -->
|
||
<main class="container mt-5 pt-5">
|
||
<h2 class="text-center mb-5">Каталог книг</h2>
|
||
|
||
<!-- Фантастика -->
|
||
<section class="mb-5">
|
||
<div class="genre-title bg-light p-3 rounded text-center mb-4">
|
||
<h3>Фантастика</h3>
|
||
</div>
|
||
<button class="btn btn-success" data-bs-toggle="modal" data-bs-target="#addBookModal">
|
||
<i class="bi bi-plus-circle"></i> Добавить книгу
|
||
</button>
|
||
|
||
<div class="row g-4" id="fantasy-books">
|
||
<!-- Существующие книги будут здесь -->
|
||
<div class="col-md-6">
|
||
<div class="card h-100 border-0 shadow-sm">
|
||
<div class="row g-0">
|
||
<div class="col-md-4">
|
||
<img
|
||
src="/assets/dune-Co1F1vkB.jpg"
|
||
class="img-fluid rounded-start h-100"
|
||
alt="Дюна"
|
||
style="object-fit: cover"
|
||
/>
|
||
</div>
|
||
<div class="col-md-8">
|
||
<div class="card-body">
|
||
<h5 class="card-title">Дюна</h5>
|
||
<p class="card-text text-muted">Фрэнк Герберт</p>
|
||
<p class="card-text">
|
||
Эпическая история о борьбе за контроль над планетой Арракис, источником
|
||
самого ценного вещества во вселенной.
|
||
</p>
|
||
<div class="d-flex justify-content-between align-items-center">
|
||
<p class="h5 mb-0">500 руб.</p>
|
||
<button class="btn btn-primary">В корзину</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="col-md-6">
|
||
<div class="card h-100 border-0 shadow-sm">
|
||
<div class="row g-0">
|
||
<div class="col-md-4">
|
||
<img
|
||
src="/assets/foundation-5XPRZ_kD.jpg"
|
||
class="img-fluid rounded-start h-100"
|
||
alt="Основание"
|
||
style="object-fit: cover"
|
||
/>
|
||
</div>
|
||
<div class="col-md-8">
|
||
<div class="card-body">
|
||
<h5 class="card-title">Основание</h5>
|
||
<p class="card-text text-muted">Айзек Азимов</p>
|
||
<p class="card-text">
|
||
Сага о падении и возрождении галактической империи, основанная на научных
|
||
принципах.
|
||
</p>
|
||
<div class="d-flex justify-content-between align-items-center">
|
||
<p class="h5 mb-0">600 руб.</p>
|
||
<button class="btn btn-primary">В корзину</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Детектив -->
|
||
<section class="mb-5">
|
||
<div class="genre-title bg-light p-3 rounded text-center mb-4">
|
||
<h3>Детектив</h3>
|
||
</div>
|
||
|
||
<div class="row g-4">
|
||
<div class="col-md-6">
|
||
<div class="card h-100 border-0 shadow-sm">
|
||
<div class="row g-0">
|
||
<div class="col-md-4">
|
||
<img
|
||
src="/assets/murder_on_the_orient_express-CZUCH3sF.jpg"
|
||
class="img-fluid rounded-start h-100"
|
||
alt="Убийство в Восточном экспрессе"
|
||
style="object-fit: cover"
|
||
/>
|
||
</div>
|
||
<div class="col-md-8">
|
||
<div class="card-body">
|
||
<h5 class="card-title">Убийство в Восточном экспрессе</h5>
|
||
<p class="card-text text-muted">Агата Кристи</p>
|
||
<p class="card-text">
|
||
Загадочное убийство на поезде, где каждый пассажир может быть подозреваемым.
|
||
</p>
|
||
<div class="d-flex justify-content-between align-items-center">
|
||
<p class="h5 mb-0">750 руб.</p>
|
||
<button class="btn btn-primary">В корзину</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="col-md-6">
|
||
<div class="card h-100 border-0 shadow-sm">
|
||
<div class="row g-0">
|
||
<div class="col-md-4">
|
||
<img
|
||
src="/assets/the_girl_with_the_dragon_tattoo-CgrgasX2.jpg"
|
||
class="img-fluid rounded-start h-100"
|
||
alt="Девушка с татуировкой дракона"
|
||
style="object-fit: cover"
|
||
/>
|
||
</div>
|
||
<div class="col-md-8">
|
||
<div class="card-body">
|
||
<h5 class="card-title">Девушка с татуировкой дракона</h5>
|
||
<p class="card-text text-muted">Стиг Ларссон</p>
|
||
<p class="card-text">
|
||
История о расследовании исчезновения девушки, связанная с мрачными тайнами
|
||
семьи.
|
||
</p>
|
||
<div class="d-flex justify-content-between align-items-center">
|
||
<p class="h5 mb-0">700 руб.</p>
|
||
<button class="btn btn-primary">В корзину</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Роман -->
|
||
<section class="mb-5">
|
||
<div class="genre-title bg-light p-3 rounded text-center mb-4">
|
||
<h3>Роман</h3>
|
||
</div>
|
||
|
||
<div class="row g-4">
|
||
<div class="col-md-6">
|
||
<div class="card h-100 border-0 shadow-sm">
|
||
<div class="row g-0">
|
||
<div class="col-md-4">
|
||
<img
|
||
src="/assets/pride_and_prejudice-DkQ_n7hh.jpg"
|
||
class="img-fluid rounded-start h-100"
|
||
alt="Гордость и предубеждение"
|
||
style="object-fit: cover"
|
||
/>
|
||
</div>
|
||
<div class="col-md-8">
|
||
<div class="card-body">
|
||
<h5 class="card-title">Гордость и предубеждение</h5>
|
||
<p class="card-text text-muted">Джейн Остин</p>
|
||
<p class="card-text">
|
||
Классический роман о любви и социальном статусе в Англии XIX века.
|
||
</p>
|
||
<div class="d-flex justify-content-between align-items-center">
|
||
<p class="h5 mb-0">650 руб.</p>
|
||
<button class="btn btn-primary">В корзину</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="col-md-6">
|
||
<div class="card h-100 border-0 shadow-sm">
|
||
<div class="row g-0">
|
||
<div class="col-md-4">
|
||
<img
|
||
src="/assets/the_great_gatsby-qOYOk9u7.jpg"
|
||
class="img-fluid rounded-start h-100"
|
||
alt="Великий Гэтсби"
|
||
style="object-fit: cover"
|
||
/>
|
||
</div>
|
||
<div class="col-md-8">
|
||
<div class="card-body">
|
||
<h5 class="card-title">Великий Гэтсби</h5>
|
||
<p class="card-text text-muted">Фрэнсис Скотт Фицджеральд</p>
|
||
<p class="card-text">
|
||
История о любви, богатстве и утраченных мечтах в эпоху джаза.
|
||
</p>
|
||
<div class="d-flex justify-content-between align-items-center">
|
||
<p class="h5 mb-0">500 руб.</p>
|
||
<button class="btn btn-primary">В корзину</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Фэнтези -->
|
||
<section class="mb-5">
|
||
<div class="genre-title bg-light p-3 rounded text-center mb-4">
|
||
<h3>Фэнтези</h3>
|
||
</div>
|
||
|
||
<div class="row g-4">
|
||
<div class="col-md-6">
|
||
<div class="card h-100 border-0 shadow-sm">
|
||
<div class="row g-0">
|
||
<div class="col-md-4">
|
||
<img
|
||
src="/assets/harry_potter-DFeuOAF5.webp"
|
||
class="img-fluid rounded-start h-100"
|
||
alt="Гарри Поттер"
|
||
style="object-fit: cover"
|
||
/>
|
||
</div>
|
||
<div class="col-md-8">
|
||
<div class="card-body">
|
||
<h5 class="card-title">Гарри Поттер и философский камень</h5>
|
||
<p class="card-text text-muted">Дж.К. Роулинг</p>
|
||
<p class="card-text">Приключения молодого волшебника в школе магии Хогвартс.</p>
|
||
<div class="d-flex justify-content-between align-items-center">
|
||
<p class="h5 mb-0">800 руб.</p>
|
||
<button class="btn btn-primary">В корзину</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="col-md-6">
|
||
<div class="card h-100 border-0 shadow-sm">
|
||
<div class="row g-0">
|
||
<div class="col-md-4">
|
||
<img
|
||
src="/assets/the_hobbit-CkJ8H01T.webp"
|
||
class="img-fluid rounded-start h-100"
|
||
alt="Хоббит"
|
||
style="object-fit: cover"
|
||
/>
|
||
</div>
|
||
<div class="col-md-8">
|
||
<div class="card-body">
|
||
<h5 class="card-title">Хоббит</h5>
|
||
<p class="card-text text-muted">Дж.Р.Р. Толкин</p>
|
||
<p class="card-text">
|
||
Путешествие Бильбо Бэггинса в мир приключений и драконов.
|
||
</p>
|
||
<div class="d-flex justify-content-between align-items-center">
|
||
<p class="h5 mb-0">750 руб.</p>
|
||
<button class="btn btn-primary">В корзину</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</main>
|
||
|
||
<!-- Модальное окно для добавления книги -->
|
||
<div class="modal fade" id="addBookModal" tabindex="-1" aria-labelledby="addBookModalLabel" aria-hidden="true">
|
||
<div class="modal-dialog">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<h5 class="modal-title" id="addBookModalLabel">Добавить новую книгу</h5>
|
||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||
</div>
|
||
<div class="modal-body">
|
||
<form id="addBookForm">
|
||
<div class="mb-3">
|
||
<label for="bookTitle" class="form-label">Название книги</label>
|
||
<input type="text" class="form-control" id="bookTitle" required />
|
||
</div>
|
||
<div class="mb-3">
|
||
<label for="bookAuthor" class="form-label">Автор</label>
|
||
<input type="text" class="form-control" id="bookAuthor" required />
|
||
</div>
|
||
<div class="mb-3">
|
||
<label for="bookPrice" class="form-label">Цена (руб.)</label>
|
||
<input type="number" class="form-control" id="bookPrice" required />
|
||
</div>
|
||
<div class="mb-3">
|
||
<label for="bookDescription" class="form-label">Описание</label>
|
||
<textarea class="form-control" id="bookDescription" rows="3" required></textarea>
|
||
</div>
|
||
<div class="mb-3">
|
||
<label for="bookImage" class="form-label"
|
||
>Имя файла изображения (из папки images)</label
|
||
>
|
||
<input type="text" class="form-control" id="bookImage" required />
|
||
</div>
|
||
</form>
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Отмена</button>
|
||
<button type="button" class="btn btn-primary" id="saveBookBtn">Сохранить</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Подвал -->
|
||
<footer class="bg-light py-4 mt-5">
|
||
<div class="container">
|
||
<div class="row">
|
||
<div class="col-md-6 mb-4 mb-md-0">
|
||
<h5 class="mb-3">Контакты</h5>
|
||
<ul class="list-unstyled">
|
||
<li><i class="bi bi-envelope me-2"></i> info@toma.ru</li>
|
||
<li><i class="bi bi-phone me-2"></i> +7 (123) 456-78-90</li>
|
||
<li><i class="bi bi-clock me-2"></i> Пн-Пт 9:00-18:00</li>
|
||
<li><i class="bi bi-geo-alt me-2"></i> г. Москва, ул. Литераторов, д. 1</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="col-md-6 text-md-end">
|
||
<h5 class="mb-3">Социальные сети</h5>
|
||
<div class="social-media">
|
||
<a href="#" class="text-decoration-none me-3"><i class="bi bi-facebook fs-3"></i></a>
|
||
<a href="#" class="text-decoration-none me-3"><i class="bi bi-vk fs-3"></i></a>
|
||
<a href="#" class="text-decoration-none"><i class="bi bi-telegram fs-3"></i></a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
|
||
<!-- Bootstrap JS -->
|
||
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.min.js"></script>
|
||
|
||
<!-- Скрипт для добавления книг -->
|
||
<script>
|
||
document.addEventListener("DOMContentLoaded", function () {
|
||
const saveBookBtn = document.getElementById("saveBookBtn");
|
||
const addBookForm = document.getElementById("addBookForm");
|
||
const fantasyBooksContainer = document.getElementById("fantasy-books");
|
||
const addBookModal = new bootstrap.Modal(document.getElementById("addBookModal"));
|
||
|
||
saveBookBtn.addEventListener("click", function () {
|
||
if (addBookForm.checkValidity()) {
|
||
// Получаем значения из формы
|
||
const title = document.getElementById("bookTitle").value;
|
||
const author = document.getElementById("bookAuthor").value;
|
||
const price = document.getElementById("bookPrice").value;
|
||
const description = document.getElementById("bookDescription").value;
|
||
const image = document.getElementById("bookImage").value;
|
||
|
||
// Создаем HTML для новой карточки книги
|
||
const bookCard = `
|
||
<div class="col-md-6">
|
||
<div class="card h-100 border-0 shadow-sm">
|
||
<div class="row g-0">
|
||
<div class="col-md-4">
|
||
<img
|
||
src="images/${image}"
|
||
class="img-fluid rounded-start h-100"
|
||
alt="${title}"
|
||
style="object-fit: cover"
|
||
/>
|
||
</div>
|
||
<div class="col-md-8">
|
||
<div class="card-body">
|
||
<h5 class="card-title">${title}</h5>
|
||
<p class="card-text text-muted">${author}</p>
|
||
<p class="card-text">${description}</p>
|
||
<div class="d-flex justify-content-between align-items-center">
|
||
<p class="h5 mb-0">${price} руб.</p>
|
||
<button class="btn btn-primary">В корзину</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
`;
|
||
|
||
// Добавляем новую карточку в раздел "Фантастика"
|
||
fantasyBooksContainer.insertAdjacentHTML("beforeend", bookCard);
|
||
|
||
// Закрываем модальное окно и очищаем форму
|
||
addBookModal.hide();
|
||
addBookForm.reset();
|
||
} else {
|
||
// Показываем сообщения об ошибках валидации
|
||
addBookForm.classList.add("was-validated");
|
||
}
|
||
});
|
||
|
||
// Сбрасываем состояние валидации при закрытии модального окна
|
||
document.getElementById("addBookModal").addEventListener("hidden.bs.modal", function () {
|
||
addBookForm.classList.remove("was-validated");
|
||
});
|
||
});
|
||
</script>
|
||
</body>
|
||
</html>
|