Раздел "Услуги"
This commit is contained in:
@@ -99,6 +99,7 @@ foreach(['name','email','telephone','address','open', 'comment'] as $item){
|
||||
} else {
|
||||
$data['blog_menu'] = '';
|
||||
}
|
||||
$data['service_menu'] = $this->load->controller('service/menu');
|
||||
$data['search'] = $this->load->controller('common/search');
|
||||
$data['cart'] = $this->load->controller('common/cart');
|
||||
$data['menu'] = $this->load->controller('common/menu');
|
||||
|
||||
@@ -6,8 +6,8 @@ class ControllerServiceCategory extends Controller {
|
||||
$this->load->model('service/service');
|
||||
$this->load->model('tool/image');
|
||||
|
||||
$sort = isset($this->request->get['sort']) ? $this->request->get['sort'] : 'p.date_added';
|
||||
$order = isset($this->request->get['order']) ? $this->request->get['order'] : 'DESC';
|
||||
$sort = isset($this->request->get['sort']) ? $this->request->get['sort'] : 'p.sort_order';
|
||||
$order = isset($this->request->get['order']) ? $this->request->get['order'] : 'ASC';
|
||||
$page = isset($this->request->get['page']) ? (int)$this->request->get['page'] : 1;
|
||||
$limit = isset($this->request->get['limit']) ? (int)$this->request->get['limit'] : (int)$this->config->get('configblog_article_limit');
|
||||
$service_category_path = isset($this->request->get['service_category_id']) ? (string)$this->request->get['service_category_id'] : '';
|
||||
@@ -68,6 +68,7 @@ class ControllerServiceCategory extends Controller {
|
||||
$data['heading_title'] = $category_info['meta_h1'] ? $category_info['meta_h1'] : $category_info['name'];
|
||||
$data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8');
|
||||
$data['button_more'] = $this->language->get('button_more');
|
||||
$data['button_request'] = $this->language->get('button_request');
|
||||
$data['text_empty'] = $this->language->get('text_empty');
|
||||
$data['text_refine'] = $this->language->get('text_refine');
|
||||
|
||||
@@ -95,11 +96,12 @@ class ControllerServiceCategory extends Controller {
|
||||
);
|
||||
|
||||
$service_total = $this->model_service_service->getTotalServices($filter_data);
|
||||
$data['service_total'] = $service_total;
|
||||
$data['services'] = array();
|
||||
|
||||
foreach ($this->model_service_service->getServices($filter_data) as $service) {
|
||||
if ($service['image']) {
|
||||
$image = $this->model_tool_image->resize($service['image'], $this->config->get('configblog_image_article_width'), $this->config->get('configblog_image_article_height'));
|
||||
$image = $this->model_tool_image->resize($service['image'], 610, 818);
|
||||
} else {
|
||||
$image = false;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
class ControllerServiceMenu extends Controller {
|
||||
public function index() {
|
||||
$this->load->model('service/category');
|
||||
|
||||
$data['categories'] = $this->getCategories();
|
||||
|
||||
return $this->load->view('service/menu', $data);
|
||||
}
|
||||
|
||||
private function getCategories($parent_id = 0, $path = '') {
|
||||
$category_data = array();
|
||||
$categories = $this->model_service_category->getCategories($parent_id);
|
||||
|
||||
foreach ($categories as $category) {
|
||||
$category_path = $path ? $path . '_' . $category['service_category_id'] : $category['service_category_id'];
|
||||
|
||||
$category_data[] = array(
|
||||
'name' => $category['name'],
|
||||
'href' => $this->url->link('service/category', 'service_category_id=' . $category_path)
|
||||
);
|
||||
|
||||
$category_data = array_merge($category_data, $this->getCategories($category['service_category_id'], $category_path));
|
||||
}
|
||||
|
||||
return $category_data;
|
||||
}
|
||||
}
|
||||
@@ -68,12 +68,23 @@ class ControllerServiceService extends Controller {
|
||||
|
||||
$data['text_related'] = $this->language->get('text_related');
|
||||
$data['text_related_product'] = $this->language->get('text_related_product');
|
||||
$data['button_more'] = $this->language->get('button_more');
|
||||
$data['button_request'] = $this->language->get('button_request');
|
||||
$data['button_all_services'] = $this->language->get('button_all_services');
|
||||
|
||||
$data['service_id'] = $this->request->get['service_id'];
|
||||
$data['description'] = html_entity_decode($service_info['description'], ENT_QUOTES, 'UTF-8');
|
||||
$data['summary'] = $service_info['meta_description'];
|
||||
$data['category_href'] = $this->url->link('service/category', 'service_category_id=' . $service_category_path);
|
||||
|
||||
$this->load->model('tool/image');
|
||||
|
||||
if ($service_info['image']) {
|
||||
$data['thumb'] = $this->model_tool_image->resize($service_info['image'], 610, 818);
|
||||
} else {
|
||||
$data['thumb'] = '';
|
||||
}
|
||||
|
||||
$data['services'] = array();
|
||||
|
||||
$results = $this->model_service_service->getServiceRelated($this->request->get['service_id']);
|
||||
|
||||
@@ -27,5 +27,6 @@ $_['text_name_asc'] = 'Названию (по возрастанию)';
|
||||
$_['text_name_desc'] = 'Названию (по убыванию)';
|
||||
$_['text_default'] = 'По умолчанию';
|
||||
|
||||
$_['button_more'] = 'подробнее';
|
||||
$_['button_more'] = 'Подробнее';
|
||||
$_['button_request'] = 'Записаться на консультацию';
|
||||
?>
|
||||
@@ -26,4 +26,6 @@ $_['text_related_product'] = 'Сопутствующие товары';
|
||||
$_['text_tax'] = 'Без НДС:';
|
||||
$_['text_service'] = 'Услуги';
|
||||
|
||||
$_['button_more'] = 'подробнее';
|
||||
$_['button_more'] = 'Подробнее';
|
||||
$_['button_request'] = 'Записаться на консультацию';
|
||||
$_['button_all_services'] = 'Все услуги';
|
||||
|
||||
@@ -359,6 +359,520 @@ section{
|
||||
fill: #000 !important;
|
||||
}
|
||||
|
||||
.service-category-page,
|
||||
.service-page {
|
||||
background: linear-gradient(180deg, #f8f6f5 0, #fff 460px);
|
||||
color: #14142b;
|
||||
}
|
||||
|
||||
.service-category-hero,
|
||||
.service-hero {
|
||||
padding: 34px 0 76px;
|
||||
}
|
||||
|
||||
.service-breadcrumb {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 4px;
|
||||
padding: 0;
|
||||
margin: 0 0 38px;
|
||||
list-style: none;
|
||||
color: rgba(20, 20, 43, 0.58);
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.service-breadcrumb span {
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
.service-breadcrumb a:hover,
|
||||
.service-text-link:hover,
|
||||
.service-card__link:hover {
|
||||
color: var(--color-dark-gray);
|
||||
}
|
||||
|
||||
.service-eyebrow {
|
||||
margin-bottom: 12px;
|
||||
color: var(--color-dark-gray);
|
||||
font-size: 13px;
|
||||
line-height: 1.25;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.service-category-hero__grid,
|
||||
.service-hero__grid {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) minmax(230px, 360px);
|
||||
gap: 48px;
|
||||
align-items: end;
|
||||
}
|
||||
|
||||
.service-category-hero h1,
|
||||
.service-hero h1 {
|
||||
max-width: 870px;
|
||||
margin: 0;
|
||||
font-size: clamp(44px, 6.3vw, 88px);
|
||||
line-height: 1.02;
|
||||
}
|
||||
|
||||
.service-category-hero__description,
|
||||
.service-category-hero p,
|
||||
.service-hero__copy p {
|
||||
max-width: 700px;
|
||||
margin: 22px 0 0;
|
||||
color: rgba(20, 20, 43, 0.72);
|
||||
font-size: 18px;
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
.service-category-hero__description p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.service-category-hero__aside {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
min-height: 210px;
|
||||
padding: 28px;
|
||||
background: var(--color-secondary);
|
||||
color: #14142b;
|
||||
font-size: 16px;
|
||||
line-height: 1.45;
|
||||
}
|
||||
|
||||
.service-category-hero__number {
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
font-size: 86px;
|
||||
line-height: 0.9;
|
||||
}
|
||||
|
||||
.service-refine {
|
||||
padding: 0 0 34px;
|
||||
}
|
||||
|
||||
.service-refine__list {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.service-refine__item {
|
||||
padding: 10px 16px;
|
||||
border: 1px solid rgba(20, 20, 43, 0.18);
|
||||
transition: background-color 0.2s, border-color 0.2s;
|
||||
}
|
||||
|
||||
.service-refine__item:hover {
|
||||
background: var(--color-secondary);
|
||||
border-color: var(--color-secondary);
|
||||
color: #14142b;
|
||||
}
|
||||
|
||||
.service-category-content,
|
||||
.service-content-section,
|
||||
.service-related-section {
|
||||
padding: 0 0 84px;
|
||||
}
|
||||
|
||||
.service-category-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.service-card {
|
||||
min-width: 0;
|
||||
background: #fff;
|
||||
border: 1px solid rgba(20, 20, 43, 0.1);
|
||||
transition: box-shadow 0.25s, transform 0.25s;
|
||||
}
|
||||
|
||||
.service-card:hover {
|
||||
box-shadow: 0 20px 44px rgba(20, 20, 43, 0.08);
|
||||
transform: translateY(-5px);
|
||||
}
|
||||
|
||||
.service-card__image {
|
||||
position: relative;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
aspect-ratio: 305 / 409;
|
||||
background: var(--color-secondary);
|
||||
}
|
||||
|
||||
.service-card__image img,
|
||||
.service-related-card__image img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
transition: transform 0.35s;
|
||||
}
|
||||
|
||||
.service-card:hover .service-card__image img,
|
||||
.service-related-card:hover .service-related-card__image img {
|
||||
transform: scale(1.035);
|
||||
}
|
||||
|
||||
.service-card__number {
|
||||
position: absolute;
|
||||
right: 16px;
|
||||
bottom: 12px;
|
||||
color: rgba(255, 255, 255, 0.78);
|
||||
font-size: 42px;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.service-card__body {
|
||||
padding: 22px 20px 24px;
|
||||
}
|
||||
|
||||
.service-card h2,
|
||||
.service-related-card h3 {
|
||||
margin: 0;
|
||||
font-size: 22px;
|
||||
line-height: 1.16;
|
||||
}
|
||||
|
||||
.service-card p,
|
||||
.service-related-card p {
|
||||
margin: 14px 0 17px;
|
||||
color: rgba(20, 20, 43, 0.68);
|
||||
font-size: 15px;
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
.service-card__link,
|
||||
.service-text-link,
|
||||
.service-module-card__link {
|
||||
display: inline-flex;
|
||||
gap: 9px;
|
||||
align-items: center;
|
||||
color: #14142b;
|
||||
font-size: 13px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.service-card__link span,
|
||||
.service-text-link span,
|
||||
.service-module-card__link span {
|
||||
font-size: 20px;
|
||||
line-height: 1;
|
||||
transition: transform 0.2s;
|
||||
}
|
||||
|
||||
.service-card__link:hover span,
|
||||
.service-text-link:hover span,
|
||||
.service-module-card:hover .service-module-card__link span {
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.service-category-pagination {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.service-category-cta {
|
||||
padding-bottom: 84px;
|
||||
}
|
||||
|
||||
.service-category-cta__inner {
|
||||
display: flex;
|
||||
gap: 30px;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 42px;
|
||||
background: var(--color-secondary);
|
||||
}
|
||||
|
||||
.service-category-cta h2,
|
||||
.service-related-head h2,
|
||||
.service-sidebar h2 {
|
||||
margin: 0;
|
||||
font-size: 32px;
|
||||
line-height: 1.14;
|
||||
}
|
||||
|
||||
.service-category-cta p {
|
||||
max-width: 700px;
|
||||
margin: 12px 0 0;
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
.service-module-card {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
color: #14142b;
|
||||
transition: box-shadow 0.25s, transform 0.25s;
|
||||
}
|
||||
|
||||
.service-module-card:hover {
|
||||
color: #14142b;
|
||||
box-shadow: 0 16px 38px rgba(20, 20, 43, 0.12);
|
||||
transform: translateY(-5px);
|
||||
}
|
||||
|
||||
.service-module-card img {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.service-module-card__link {
|
||||
margin-top: 18px;
|
||||
}
|
||||
|
||||
.service-hero__grid {
|
||||
grid-template-columns: minmax(0, 1fr) minmax(280px, 410px);
|
||||
}
|
||||
|
||||
.service-hero__grid--single {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.service-hero__actions {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 22px;
|
||||
align-items: center;
|
||||
margin-top: 32px;
|
||||
}
|
||||
|
||||
.service-hero__visual {
|
||||
max-height: 570px;
|
||||
overflow: hidden;
|
||||
background: var(--color-secondary);
|
||||
}
|
||||
|
||||
.service-hero__visual img {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.service-content-layout {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) minmax(290px, 370px);
|
||||
gap: 56px;
|
||||
align-items: start;
|
||||
}
|
||||
|
||||
.service-content {
|
||||
min-width: 0;
|
||||
color: rgba(20, 20, 43, 0.78);
|
||||
font-size: 17px;
|
||||
line-height: 1.75;
|
||||
}
|
||||
|
||||
.service-content .service-lead {
|
||||
margin-top: 0;
|
||||
color: #14142b;
|
||||
font-size: 23px;
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
.service-content h2 {
|
||||
margin: 42px 0 15px;
|
||||
color: #14142b;
|
||||
font-size: 32px;
|
||||
line-height: 1.18;
|
||||
}
|
||||
|
||||
.service-content ol {
|
||||
padding-left: 23px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.service-content li {
|
||||
padding-left: 6px;
|
||||
margin-bottom: 9px;
|
||||
}
|
||||
|
||||
.service-benefits {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 12px;
|
||||
margin: 28px 0 0;
|
||||
}
|
||||
|
||||
.service-benefits__item {
|
||||
padding: 20px;
|
||||
background: #f8f6f5;
|
||||
border-top: 2px solid var(--color-secondary);
|
||||
}
|
||||
|
||||
.service-benefits__item strong,
|
||||
.service-benefits__item span {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.service-benefits__item strong {
|
||||
margin-bottom: 10px;
|
||||
color: #14142b;
|
||||
font-size: 17px;
|
||||
font-weight: 400;
|
||||
line-height: 1.35;
|
||||
}
|
||||
|
||||
.service-benefits__item span {
|
||||
color: rgba(20, 20, 43, 0.68);
|
||||
font-size: 14px;
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
.service-sidebar {
|
||||
position: sticky;
|
||||
top: 96px;
|
||||
}
|
||||
|
||||
.service-sidebar__card {
|
||||
padding: 30px;
|
||||
background: #f8f6f5;
|
||||
border: 1px solid rgba(20, 20, 43, 0.1);
|
||||
}
|
||||
|
||||
.service-sidebar p {
|
||||
margin: 14px 0 24px;
|
||||
color: rgba(20, 20, 43, 0.7);
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
.service-sidebar .btn {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.service-related-section {
|
||||
padding-top: 72px;
|
||||
border-top: 1px solid rgba(20, 20, 43, 0.1);
|
||||
}
|
||||
|
||||
.service-related-head {
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
.service-related-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.service-related-card {
|
||||
display: grid;
|
||||
grid-template-columns: 150px minmax(0, 1fr);
|
||||
min-width: 0;
|
||||
overflow: hidden;
|
||||
background: #fff;
|
||||
border: 1px solid rgba(20, 20, 43, 0.1);
|
||||
}
|
||||
|
||||
.service-related-card__image {
|
||||
min-height: 250px;
|
||||
overflow: hidden;
|
||||
background: var(--color-secondary);
|
||||
}
|
||||
|
||||
.service-related-card__body {
|
||||
padding: 19px;
|
||||
}
|
||||
|
||||
@media (max-width: 991px) {
|
||||
.service-category-grid {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
.service-content-layout {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 30px;
|
||||
}
|
||||
.service-sidebar {
|
||||
position: static;
|
||||
}
|
||||
.service-related-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.service-category-hero,
|
||||
.service-hero {
|
||||
padding: 24px 0 50px;
|
||||
}
|
||||
.service-breadcrumb {
|
||||
margin-bottom: 28px;
|
||||
font-size: 13px;
|
||||
}
|
||||
.service-category-hero__grid,
|
||||
.service-hero__grid {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 26px;
|
||||
}
|
||||
.service-category-hero h1,
|
||||
.service-hero h1 {
|
||||
font-size: 46px;
|
||||
}
|
||||
.service-category-hero__aside {
|
||||
min-height: 0;
|
||||
padding: 22px;
|
||||
}
|
||||
.service-category-hero__number {
|
||||
font-size: 68px;
|
||||
}
|
||||
.service-category-content,
|
||||
.service-content-section,
|
||||
.service-related-section {
|
||||
padding-bottom: 58px;
|
||||
}
|
||||
.service-category-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.service-category-cta {
|
||||
padding-bottom: 58px;
|
||||
}
|
||||
.service-category-cta__inner {
|
||||
display: block;
|
||||
padding: 27px 22px;
|
||||
}
|
||||
.service-category-cta .btn {
|
||||
width: 100%;
|
||||
margin-top: 18px;
|
||||
}
|
||||
.service-hero__visual {
|
||||
max-height: 400px;
|
||||
}
|
||||
.service-content {
|
||||
font-size: 16px;
|
||||
}
|
||||
.service-content .service-lead {
|
||||
font-size: 20px;
|
||||
}
|
||||
.service-content h2 {
|
||||
margin-top: 34px;
|
||||
font-size: 27px;
|
||||
}
|
||||
.service-benefits {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.service-related-section {
|
||||
padding-top: 52px;
|
||||
}
|
||||
.service-related-card {
|
||||
grid-template-columns: 110px minmax(0, 1fr);
|
||||
}
|
||||
.service-related-card__image {
|
||||
min-height: 220px;
|
||||
}
|
||||
.service-related-card__body {
|
||||
padding: 15px;
|
||||
}
|
||||
.service-related-card h3 {
|
||||
font-size: 19px;
|
||||
}
|
||||
.service-related-card p {
|
||||
display: none;
|
||||
}
|
||||
.service-related-card .service-card__link {
|
||||
margin-top: 18px;
|
||||
}
|
||||
}
|
||||
|
||||
.not-found-page {
|
||||
min-height: 60vh;
|
||||
display: flex;
|
||||
|
||||
@@ -61,6 +61,7 @@
|
||||
<ul class="menu left-menu">
|
||||
{{ menu }}
|
||||
{{ blog_menu }}
|
||||
{{ service_menu }}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="d-lg-none">
|
||||
|
||||
@@ -10,13 +10,14 @@
|
||||
{% for banner in banners %}
|
||||
|
||||
<div class="col-md-3 col-sm-6">
|
||||
<div class="item text-center bg-dominik h-100">
|
||||
<a href="{{ banner.link }}" class="item service-module-card text-center bg-dominik h-100">
|
||||
<img src="{{ banner.image }}" loading="lazy">
|
||||
<div class="banner-text mt-3 mb-3 px-4">
|
||||
<div class="subheading mb-3">{{ banner.title }}</div>
|
||||
<p class="mb-0">{{ banner.text|nl2br }}</p>
|
||||
<span class="service-module-card__link">{{ banner.button ?: 'Подробнее' }} <span>→</span></span>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
{% endfor %}
|
||||
|
||||
@@ -1,56 +1,85 @@
|
||||
{{ header }}
|
||||
{{ content_top }}
|
||||
<section class="section py-5">
|
||||
<main class="service-category-page">
|
||||
<section class="service-category-hero">
|
||||
<div class="container-fluid">
|
||||
<ul class="breadcrumb">
|
||||
<ul class="service-breadcrumb">
|
||||
{% for key,breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a>{% if key + 1 < breadcrumbs|length %}<span class="mx-2">•</span>{% endif %}</li>
|
||||
<li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a>{% if key + 1 < breadcrumbs|length %}<span>•</span>{% endif %}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<div class="service-category-hero__grid">
|
||||
<div>
|
||||
<div class="service-eyebrow">Забота о вашем образе</div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<div class="content">
|
||||
{% if thumb or description %}
|
||||
<div class="row">
|
||||
{% if thumb %}
|
||||
<div class="col-sm-2"><img src="{{ thumb }}" alt="{{ heading_title }}" title="{{ heading_title }}" class="img-thumbnail" /></div>
|
||||
{% endif %}
|
||||
{% if description %}
|
||||
<div class="col-sm-10">{{ description }}</div>
|
||||
<div class="service-category-hero__description">{{ description }}</div>
|
||||
{% else %}
|
||||
<p>Поможем продумать важные детали свадебного образа и подготовиться к вашему особенному дню.</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
<hr>
|
||||
{% endif %}
|
||||
{% if categories %}
|
||||
<h3>{{ text_refine }}</h3>
|
||||
<ul>
|
||||
{% for category in categories %}
|
||||
<li><a href="{{ category.href }}">{{ category.name }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% if services %}
|
||||
<div class="row g-3">
|
||||
{% for service in services %}
|
||||
<div class="col-md-4 col-lg-3 col-sm-6">
|
||||
<div class="product-thumb">
|
||||
{% if service.thumb %}
|
||||
<div class="image"><a href="{{ service.href }}"><img src="{{ service.thumb }}" alt="{{ service.name }}" title="{{ service.name }}" class="img-responsive" /></a></div>
|
||||
{% endif %}
|
||||
<div class="caption">
|
||||
<h4><a href="{{ service.href }}">{{ service.name }}</a></h4>
|
||||
<p class="description">{{ service.description }}</p>
|
||||
<div class="service-category-hero__aside">
|
||||
<span class="service-category-hero__number">{{ service_total }}</span>
|
||||
<span>направления, чтобы платье стало именно вашим</span>
|
||||
</div>
|
||||
<div><a href="{{ service.href }}" class="btn btn-dark">{{ button_more }}</a></div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% elseif not categories %}
|
||||
<p>{{ text_empty }}</p>
|
||||
{% endif %}
|
||||
{{ pagination }}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% if categories %}
|
||||
<section class="service-refine">
|
||||
<div class="container-fluid">
|
||||
<div class="service-eyebrow">{{ text_refine }}</div>
|
||||
<div class="service-refine__list">
|
||||
{% for category in categories %}
|
||||
<a href="{{ category.href }}" class="service-refine__item">{{ category.name }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
|
||||
<section class="service-category-content">
|
||||
<div class="container-fluid">
|
||||
{% if services %}
|
||||
<div class="service-category-grid">
|
||||
{% for service in services %}
|
||||
<article class="service-card">
|
||||
<a href="{{ service.href }}" class="service-card__image">
|
||||
{% if service.thumb %}
|
||||
<img src="{{ service.thumb }}" alt="{{ service.name }}" title="{{ service.name }}" loading="lazy" />
|
||||
{% endif %}
|
||||
<span class="service-card__number">0{{ loop.index }}</span>
|
||||
</a>
|
||||
<div class="service-card__body">
|
||||
<h2><a href="{{ service.href }}">{{ service.name }}</a></h2>
|
||||
<p>{{ service.description }}</p>
|
||||
<a href="{{ service.href }}" class="service-card__link">{{ button_more }} <span>→</span></a>
|
||||
</div>
|
||||
</article>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="service-category-pagination">{{ pagination }}</div>
|
||||
{% elseif not categories %}
|
||||
<div class="service-category-empty">
|
||||
<h2>{{ text_empty }}</h2>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="service-category-cta">
|
||||
<div class="container-fluid">
|
||||
<div class="service-category-cta__inner">
|
||||
<div>
|
||||
<div class="service-eyebrow">Начнем с примерки</div>
|
||||
<h2>Расскажите, какой образ вы представляете</h2>
|
||||
<p>Консультант ответит на вопросы и поможет подобрать удобное время для визита в салон.</p>
|
||||
</div>
|
||||
<a href="#" onclick="SendRequest(0);return false;" class="btn btn-dark">{{ button_request }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
{{ content_bottom }}
|
||||
{{ footer }}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
{% for category in categories %}
|
||||
<li><a href="{{ category.href }}">{{ category.name }}</a></li>
|
||||
{% endfor %}
|
||||
@@ -1,52 +1,88 @@
|
||||
{{ header }}
|
||||
{{ content_top }}
|
||||
<section class="section py-5">
|
||||
<main class="service-page">
|
||||
<section class="service-hero">
|
||||
<div class="container-fluid">
|
||||
<ul class="breadcrumb">
|
||||
<ul class="service-breadcrumb">
|
||||
{% for key,breadcrumb in breadcrumbs %}
|
||||
<li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a>{% if key + 1 < breadcrumbs|length %}<span class="mx-2">•</span>{% endif %}</li>
|
||||
<li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a>{% if key + 1 < breadcrumbs|length %}<span>•</span>{% endif %}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<div class="service-hero__grid{% if not thumb %} service-hero__grid--single{% endif %}">
|
||||
<div class="service-hero__copy">
|
||||
<div class="service-eyebrow">Услуги свадебного салона</div>
|
||||
<h1>{{ heading_title }}</h1>
|
||||
<div class="content">{{ description }}</div>
|
||||
|
||||
{% if products %}
|
||||
<hr>
|
||||
<h3 class="mb-4">{{ text_related_product }}</h3>
|
||||
<div class="row g-3 product-items">
|
||||
{% for product in products %}
|
||||
<div class="col-6 col-lg-4">
|
||||
{% include 'dominik/template/common/product.twig' %}
|
||||
{% if summary %}<p>{{ summary }}</p>{% endif %}
|
||||
<div class="service-hero__actions">
|
||||
<a href="#" onclick="SendRequest(0);return false;" class="btn btn-dark">{{ button_request }}</a>
|
||||
<a href="{{ category_href }}" class="service-text-link">{{ button_all_services }} <span>→</span></a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
{% if thumb %}
|
||||
<div class="service-hero__visual">
|
||||
<img src="{{ thumb }}" alt="{{ heading_title }}" title="{{ heading_title }}" />
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if services %}
|
||||
<hr>
|
||||
<h3 class="mb-4">{{ text_related }}</h3>
|
||||
<div class="row g-3">
|
||||
{% for service in services %}
|
||||
<div class="col-6 col-lg-4">
|
||||
<div class="product-thumb">
|
||||
<div class="image"><a href="{{ service.href }}"><img src="{{ service.thumb }}" alt="{{ service.name }}" title="{{ service.name }}" class="img-responsive" /></a></div>
|
||||
<div class="caption">
|
||||
<h4><a href="{{ service.href }}">{{ service.name }}</a></h4>
|
||||
<p>{{ service.description }}</p>
|
||||
</div>
|
||||
<div class="button-group">
|
||||
<button type="button" onclick="location.href = ('{{ service.href }}');"><i class="fa fa-share"></i></button>
|
||||
<button type="button" data-toggle="tooltip" title="{{ service.date_added }}"><i class="fa fa-clock-o"></i></button>
|
||||
<button type="button" data-toggle="tooltip" title="{{ text_views }} {{ service.viewed }}"><i class="fa fa-eye"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="service-content-section">
|
||||
<div class="container-fluid">
|
||||
<div class="service-content-layout">
|
||||
<article class="service-content">{{ description }}</article>
|
||||
<aside class="service-sidebar">
|
||||
<div class="service-sidebar__card">
|
||||
<div class="service-eyebrow">Персональная консультация</div>
|
||||
<h2>Обсудим ваш образ</h2>
|
||||
<p>Ответим на вопросы, расскажем о деталях услуги и запишем вас на примерку.</p>
|
||||
<a href="#" onclick="SendRequest(0);return false;" class="btn btn-dark">{{ button_request }}</a>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% if products %}
|
||||
<section class="service-related-section">
|
||||
<div class="container-fluid">
|
||||
<div class="service-related-head">
|
||||
<div class="service-eyebrow">Дополните образ</div>
|
||||
<h2>{{ text_related_product }}</h2>
|
||||
</div>
|
||||
<div class="row g-3 product-items">
|
||||
{% for product in products %}
|
||||
<div class="col-6 col-lg-4">{% include 'dominik/template/common/product.twig' %}</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
|
||||
{% if services %}
|
||||
<section class="service-related-section">
|
||||
<div class="container-fluid">
|
||||
<div class="service-related-head">
|
||||
<div class="service-eyebrow">Вам также может подойти</div>
|
||||
<h2>{{ text_related }}</h2>
|
||||
</div>
|
||||
<div class="service-related-grid">
|
||||
{% for service in services %}
|
||||
<article class="service-related-card">
|
||||
<a href="{{ service.href }}" class="service-related-card__image">
|
||||
{% if service.thumb %}<img src="{{ service.thumb }}" alt="{{ service.name }}" title="{{ service.name }}" loading="lazy" />{% endif %}
|
||||
</a>
|
||||
<div class="service-related-card__body">
|
||||
<h3><a href="{{ service.href }}">{{ service.name }}</a></h3>
|
||||
<p>{{ service.description }}</p>
|
||||
<a href="{{ service.href }}" class="service-card__link">{{ button_more }} <span>→</span></a>
|
||||
</div>
|
||||
</article>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
</main>
|
||||
{{ content_bottom }}
|
||||
{{ footer }}
|
||||
|
||||
Reference in New Issue
Block a user