🎨 Добавлен полный редактор стилей и поле image_url для туров

 Новые функции:
- Поле image_url в модели туров для изменения изображений через админ-панель
- Расширенная модель настроек сайта с категориями: colors, typography, images, effects, layout
- Динамический CSS генератор на основе настроек (/dynamic-styles.css)
- API для управления настройками сайта (/api/site-settings)

🎯 Редактор стилей:
- Управление цветами (основные, акцентные, текст, фон)
- Настройка типографики (шрифты, размеры, межстрочный интервал)
- Управление изображениями (фоны, логотипы, фавикон)
- Эффекты (прозрачность, тени, размытие, скругления)
- Макет (высота секций, размеры контейнеров)
- Пользовательский CSS код

🛠️ Техническая реализация:
- SiteSettingsHelper с кешированием для производительности
- CSS переменные для динамического изменения стилей
- Автоматическая миграция базы данных
- Интеграция с AdminJS для удобного управления
- Загрузка настроек в шаблоны для доступности

📊 База данных:
- Расширена таблица site_settings (добавлено поле category)
- Новые типы настроек: color, file
- 27 предустановленных настроек для полного контроля над дизайном
- Автоматическое применение миграций при старте приложения
This commit is contained in:
2025-11-29 22:03:00 +09:00
parent a461fea9d9
commit ed871fc4d1
8 changed files with 528 additions and 28 deletions

View File

@@ -7,10 +7,13 @@
<meta name="description" content="<%= siteDescription %>">
<!-- Favicon -->
<link rel="icon" href="/images/favicon.ico">
<link rel="icon" href="<%= siteSettings.favicon_url || '/images/favicon.ico' %>">
<!-- Google Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&family=Playfair+Display:wght@400;600;700&display=swap" rel="stylesheet">
<% if (siteSettings.google_fonts_url && siteSettings.google_fonts_url.trim()) { %>
<link href="<%= siteSettings.google_fonts_url %>" rel="stylesheet">
<% } %>
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
@@ -26,6 +29,8 @@
<!-- Custom CSS -->
<link href="/css/main.css" rel="stylesheet">
<!-- Dynamic Site Settings CSS -->
<link href="/dynamic-styles.css" rel="stylesheet">
<!-- Open Graph Meta Tags -->
<meta property="og:title" content="<%= title || siteName %>">
@@ -42,7 +47,9 @@
<nav class="navbar navbar-expand-lg navbar-dark bg-primary fixed-top">
<div class="container">
<a class="navbar-brand" href="/">
<img src="/images/korea-logo.png" alt="Korea Tourism" height="40" class="me-2">
<% if (siteSettings.site_logo_url && siteSettings.site_logo_url.trim()) { %>
<img src="<%= siteSettings.site_logo_url %>" alt="<%= siteName %>" height="40" class="me-2">
<% } %>
<span class="fw-bold"><%= siteName %></span>
</a>