🔧 FIX: Исправлен URL pattern 'about_view' → 'about' + Динамический фильтр категорий услуг из БД
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2025-11-25 13:06:48 +09:00
parent 9c3a932386
commit 975bc4ee61
3 changed files with 28 additions and 53 deletions

View File

@@ -7,7 +7,7 @@
<div id="navcol-5" class="collapse navbar-collapse">
<ul class="navbar-nav ms-auto">
<li class="nav-item"><a class="nav-link active" href="{% url 'services' %}">Услуги</a></li>
<li class="nav-item"><a class="nav-link" href="{% url 'about_view' %}">О нас</a></li>
<li class="nav-item"><a class="nav-link" href="{% url 'about' %}">О нас</a></li>
</ul>
</div>
</div>

View File

@@ -27,28 +27,21 @@
<div class="container-modern">
<!-- Service Categories Filter -->
<div class="text-center mb-5">
<div class="btn-group" role="group" aria-label="Категории услуг">
<button type="button" class="btn btn-outline-primary active" data-filter="all">
<div class="btn-group flex-wrap justify-content-center" role="group" aria-label="Категории услуг">
<a href="?category=all" class="btn btn-outline-primary {% if selected_category == 'all' %}active{% endif %} mb-2">
Все услуги
</button>
<button type="button" class="btn btn-outline-primary" data-filter="web">
Веб-разработка
</button>
<button type="button" class="btn btn-outline-primary" data-filter="mobile">
Мобильные приложения
</button>
<button type="button" class="btn btn-outline-primary" data-filter="design">
Дизайн
</button>
<button type="button" class="btn btn-outline-primary" data-filter="other">
Другое
</button>
</a>
{% for category in categories %}
<a href="?category={{ category.name|lower }}" class="btn btn-outline-primary {% if selected_category == category.name|lower %}active{% endif %} mb-2">
{{ category.name }}
</a>
{% endfor %}
</div>
</div>
<div class="row g-4" id="services-container">
{% for service in services %}
<div class="col-lg-4 col-md-6 service-item" data-category="{{ service.category.name|lower }}">
<div class="col-lg-4 col-md-6 service-item">
<div class="card-modern h-100">
<div class="position-relative overflow-hidden" style="height: 200px;">
{% if service.video %}
@@ -383,39 +376,6 @@
{% block extra_scripts %}
<script>
// Service filtering
document.addEventListener('DOMContentLoaded', function() {
const filterButtons = document.querySelectorAll('[data-filter]');
const serviceItems = document.querySelectorAll('.service-item');
filterButtons.forEach(button => {
button.addEventListener('click', function() {
const filter = this.getAttribute('data-filter');
// Update active button
filterButtons.forEach(btn => btn.classList.remove('active'));
this.classList.add('active');
// Filter services
serviceItems.forEach(item => {
if (filter === 'all' || item.getAttribute('data-category').includes(filter)) {
item.style.display = 'block';
setTimeout(() => {
item.style.opacity = '1';
item.style.transform = 'translateY(0)';
}, 50);
} else {
item.style.opacity = '0';
item.style.transform = 'translateY(20px)';
setTimeout(() => {
item.style.display = 'none';
}, 300);
}
});
});
});
});
// Service modal
function openServiceModal(serviceId, serviceName) {
document.getElementById('serviceId').value = serviceId;