This commit is contained in:
2026-07-05 13:59:26 +03:00
parent 5e986b9372
commit 046fb8922c
6 changed files with 448 additions and 0 deletions

View File

@@ -68,6 +68,29 @@
color: var(--color-muted); color: var(--color-muted);
} }
.portfolio-hero__links {
grid-column: 1 / -1;
display: flex;
flex-wrap: wrap;
gap: 12px;
}
.portfolio-hero__link {
border: 1px solid var(--color-line);
border-radius: 999px;
background: var(--color-surface);
color: var(--color-text);
font-weight: 800;
text-decoration: none;
padding: 10px 15px;
transition: border-color 0.2s ease, color 0.2s ease;
}
.portfolio-hero__link:hover {
border-color: var(--color-accent);
color: var(--color-accent-dark);
}
.portfolio-gallery { .portfolio-gallery {
padding: 28px 0 76px; padding: 28px 0 76px;
background: var(--color-bg); background: var(--color-bg);
@@ -127,6 +150,13 @@
transform: scale(1.04); transform: scale(1.04);
} }
.portfolio-gallery__action {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 18px;
}
.portfolio-lead { .portfolio-lead {
padding: 70px 0; padding: 70px 0;
background: var(--color-surface-soft); background: var(--color-surface-soft);

View File

@@ -40,6 +40,10 @@
.service-hero, .service-hero,
.service-details, .service-details,
.service-commerce, .service-commerce,
.service-prices,
.service-terms,
.service-reviews,
.service-related,
.service-formats, .service-formats,
.service-process, .service-process,
.service-faq, .service-faq,
@@ -69,6 +73,10 @@
.service-details__grid, .service-details__grid,
.service-commerce__grid, .service-commerce__grid,
.service-prices__grid,
.service-terms__grid,
.service-reviews__grid,
.service-related__grid,
.service-formats__grid, .service-formats__grid,
.home-categories__grid, .home-categories__grid,
.home-commerce__grid, .home-commerce__grid,
@@ -96,6 +104,10 @@
.service-hero__inner, .service-hero__inner,
.service-details__inner, .service-details__inner,
.service-commerce__inner, .service-commerce__inner,
.service-prices__inner,
.service-terms__inner,
.service-reviews__inner,
.service-related__inner,
.service-formats__inner, .service-formats__inner,
.service-process__inner, .service-process__inner,
.service-faq__inner, .service-faq__inner,

View File

@@ -65,6 +65,10 @@
.service-details, .service-details,
.service-commerce, .service-commerce,
.service-prices,
.service-terms,
.service-reviews,
.service-related,
.service-process, .service-process,
.service-lead { .service-lead {
padding: 70px 0; padding: 70px 0;
@@ -72,6 +76,10 @@
.service-details__inner, .service-details__inner,
.service-commerce__inner, .service-commerce__inner,
.service-prices__inner,
.service-terms__inner,
.service-reviews__inner,
.service-related__inner,
.service-process__inner, .service-process__inner,
.service-lead__inner { .service-lead__inner {
width: min(100% - 40px, var(--container)); width: min(100% - 40px, var(--container));
@@ -143,6 +151,110 @@
margin-top: 10px; margin-top: 10px;
} }
.service-prices {
background: var(--color-bg);
}
.service-prices__inner,
.service-terms__inner,
.service-reviews__inner,
.service-related__inner {
display: grid;
gap: 30px;
}
.service-prices__head,
.service-terms__head,
.service-reviews__head,
.service-related__head {
display: grid;
gap: 18px;
max-width: 850px;
}
.service-prices__lead {
max-width: 760px;
color: var(--color-muted);
font-size: var(--fz-md);
}
.service-prices__grid,
.service-terms__grid,
.service-reviews__grid,
.service-related__grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 18px;
}
.service-price-card,
.service-term-card,
.service-review-card,
.service-related-card {
display: grid;
gap: 10px;
border: 1px solid var(--color-line);
border-radius: var(--radius-md);
background: var(--color-surface);
padding: 22px;
box-shadow: var(--shadow-soft);
}
.service-price-card__price {
color: var(--color-accent-dark);
font-size: var(--fz-lg);
font-weight: 800;
line-height: 1.1;
}
.service-price-card__title,
.service-term-card__title {
font-size: var(--fz-md);
font-weight: 800;
line-height: 1.2;
}
.service-price-card__text,
.service-term-card__text,
.service-review-card__text,
.service-related-card__text {
color: var(--color-muted);
}
.service-terms,
.service-reviews {
background: var(--color-surface-soft);
}
.service-review-card__author {
margin-top: 8px;
color: var(--color-text);
font-weight: 800;
}
.service-review-card__occasion {
color: var(--color-accent-dark);
font-size: var(--fz-sm);
font-weight: 800;
}
.service-related-card {
color: inherit;
text-decoration: none;
transition: transform 0.2s ease, border-color 0.2s ease;
}
.service-related-card:hover {
border-color: var(--color-accent);
transform: translateY(-2px);
}
.service-related-card__title {
color: var(--color-text);
font-size: var(--fz-md);
font-weight: 800;
}
.service-formats { .service-formats {
padding: 70px 0; padding: 70px 0;
background: var(--color-surface-soft); background: var(--color-surface-soft);

View File

@@ -340,6 +340,14 @@ function sev_tort_pages() {
function sev_tort_page_config( $slug, $label, $title, $description, $h1, $lead, $image, $content = array(), $style = 'service-page.css' ) { function sev_tort_page_config( $slug, $label, $title, $description, $h1, $lead, $image, $content = array(), $style = 'service-page.css' ) {
$seo_meta = sev_tort_seo_meta_map(); $seo_meta = sev_tort_seo_meta_map();
$seo = isset( $seo_meta[ $slug ] ) ? $seo_meta[ $slug ] : array(); $seo = isset( $seo_meta[ $slug ] ) ? $seo_meta[ $slug ] : array();
$addons = sev_tort_content_addons( $slug );
if ( isset( $addons['faq'] ) ) {
$content['faq'] = array_merge( isset( $content['faq'] ) ? $content['faq'] : array(), $addons['faq'] );
unset( $addons['faq'] );
}
$content = array_replace( $content, $addons );
return array( return array(
'slug' => $slug, 'slug' => $slug,
@@ -357,6 +365,191 @@ function sev_tort_page_config( $slug, $label, $title, $description, $h1, $lead,
); );
} }
function sev_tort_content_addons( $slug ) {
$common_related = array(
array( 'title' => 'Цены', 'text' => 'Посмотреть ориентиры по стоимости и понять, что влияет на расчет.', 'url' => '/ceny/' ),
array( 'title' => 'Начинки', 'text' => 'Выбрать вкус: шоколад, ягоды, карамель, сливочные и легкие сочетания.', 'url' => '/nachinki/' ),
array( 'title' => 'Портфолио', 'text' => 'Посмотреть реальные стили декора и сохранить референс для заявки.', 'url' => '/portfolio/' ),
array( 'title' => 'Доставка и оплата', 'text' => 'Уточнить условия доставки, самовывоза, оплаты и предоплаты.', 'url' => '/dostavka-i-oplata/' ),
);
$category_addons = array(
'torty-na-zakaz' => array(
'price_cards' => array(
array( 'title' => 'Бенто', 'price' => '1 500-1 800 ₽', 'text' => 'Базовый формат около 500-550 г с надписью или простым декором.' ),
array( 'title' => 'Праздничные торты', 'price' => '2 000-2 500 ₽/кг', 'text' => 'Ориентир для детских, тематических и тортов на день рождения.' ),
array( 'title' => 'Сложный декор', 'price' => 'индивидуально', 'text' => 'Фигурки, съедобная печать, многоярусность и срочность считаются отдельно.' ),
),
'related_links' => $common_related,
),
'bento' => array(
'price_cards' => array(
array( 'title' => 'Базовый бенто', 'price' => '1 500-1 800 ₽', 'text' => 'Около 500-550 г, подходит для подарка, свидания или короткого поздравления.' ),
array( 'title' => 'Бенто макси', 'price' => '2 200-2 500 ₽', 'text' => 'Около 1 кг, когда нужен компактный торт на несколько порций.' ),
array( 'title' => 'Персональный декор', 'price' => 'по задаче', 'text' => 'Надпись, сердечки, мем, цветовая гамма или иллюстрация по референсу.' ),
),
'faq' => array(
array( 'q' => 'Чем отличается бенто макси от обычного бенто?', 'a' => 'Обычный бенто обычно весит около 500-550 г, а бенто макси ближе к 1 кг и подходит, если торт нужен не только как символический подарок.' ),
array( 'q' => 'Можно ли выбрать надпись для бенто?', 'a' => 'Да, можно прислать короткую фразу, имя, дату, шутку или пример надписи. Мы подскажем, что поместится на торте аккуратно.' ),
),
'related_links' => $common_related,
),
'detskie' => array(
'price_cards' => array(
array( 'title' => 'Базовый детский торт', 'price' => '2 000-2 500 ₽/кг', 'text' => 'Ориентир для торта с кремовым декором, ягодами, цифрой или простой темой.' ),
array( 'title' => 'Герои и фигурки', 'price' => 'выше базового', 'text' => 'Мастичные фигурки, машинки, единороги и съедобная печать увеличивают стоимость.' ),
array( 'title' => 'Доставка к празднику', 'price' => '0 ₽ от 2 500 ₽', 'text' => 'Доставляем по районам Севастополя или готовим заказ к самовывозу.' ),
),
'faq' => array(
array( 'q' => 'Можно ли сделать торт с машинками, единорогом или героем мультфильма?', 'a' => 'Да, пришлите тему и примеры. Мы предложим декор, который реально выполнить в нужный срок и под ваш бюджет.' ),
array( 'q' => 'Есть ли ограничения по начинкам для детского торта?', 'a' => 'Жестких ограничений нет. Обычно для детей выбирают понятные мягкие вкусы, но начинку можно подобрать индивидуально.' ),
),
'related_links' => $common_related,
),
'svadebnye' => array(
'price_cards' => array(
array( 'title' => 'Базовый ярусный торт', 'price' => 'от 3 000-4 000 ₽', 'text' => 'Итог зависит от веса, числа ярусов, начинки и оформления.' ),
array( 'title' => 'Сложная композиция', 'price' => '10 000-13 000 ₽+', 'text' => 'Многоярусность, цветы, ленты, монограмма и сложная сборка считаются индивидуально.' ),
array( 'title' => 'Доставка на площадку', 'price' => 'по условиям', 'text' => 'Согласуем адрес, время передачи и безопасную упаковку для свадебного торта.' ),
),
'faq' => array(
array( 'q' => 'Сколько порций закладывать на свадебный торт?', 'a' => 'Ориентир зависит от меню, количества гостей и подачи. В заявке укажите число гостей, а мы подскажем комфортный вес.' ),
array( 'q' => 'Можно ли сделать монограмму или декор в цветах свадьбы?', 'a' => 'Да, можно прислать палитру, фото декора зала и референсы. Подберем оформление под общий стиль свадьбы.' ),
),
'related_links' => $common_related,
),
'korporativnye' => array(
'price_cards' => array(
array( 'title' => 'Торт с логотипом', 'price' => '3 500-5 000 ₽+', 'text' => 'Цена зависит от размера, брендирования, цветовой палитры и способа нанесения логотипа.' ),
array( 'title' => 'Большой торт для команды', 'price' => 'по весу', 'text' => 'Рассчитаем вес под количество сотрудников, клиентов или гостей мероприятия.' ),
array( 'title' => 'Оплата от компании', 'price' => 'расчетный счет', 'text' => 'Доступны наличные, перевод, карта и оплата на расчетный счет.' ),
),
'faq' => array(
array( 'q' => 'Можно ли оплатить корпоративный торт по расчетному счету?', 'a' => 'Да, для корпоративных заказов доступна оплата на расчетный счет. Условия согласуем после заявки.' ),
array( 'q' => 'Какие материалы нужны для торта с логотипом?', 'a' => 'Лучше прислать логотип, фирменные цвета и пожелания по надписи. Если есть брендбук, можно отправить его тоже.' ),
),
'related_links' => $common_related,
),
'na-den-rozhdeniya' => array(
'price_cards' => array(
array( 'title' => 'Торт на день рождения', 'price' => '2 000-2 500 ₽/кг', 'text' => 'Базовый ориентир для праздничного торта с надписью, цифрой возраста или декором.' ),
array( 'title' => 'Индивидуальная тема', 'price' => 'выше базового', 'text' => 'Хобби, персонажи, сложные детали и съедобная печать влияют на итоговую цену.' ),
array( 'title' => 'Доставка в день праздника', 'price' => '0 ₽ от 2 500 ₽', 'text' => 'Доставляем по Севастополю или передаем заказ на самовывоз.' ),
),
'faq' => array(
array( 'q' => 'Можно ли сделать торт по хобби именинника?', 'a' => 'Да, можно прислать описание человека, любимые цвета, хобби и примеры. Мы предложим идею, которую можно аккуратно перенести в декор.' ),
array( 'q' => 'Можно ли заказать торт с цифрой возраста?', 'a' => 'Да, цифру можно добавить в декор, надпись или сделать частью общей композиции.' ),
),
'related_links' => $common_related,
),
'srochnyj-zakaz' => array(
'price_cards' => array(
array( 'title' => 'Срочный бенто', 'price' => 'от 1 500 ₽', 'text' => 'Возможен при свободном окне и простом декоре.' ),
array( 'title' => 'Срочный праздничный торт', 'price' => 'по расчету', 'text' => 'Срок, вес и сложность оформления влияют на возможность заказа.' ),
array( 'title' => 'Быстрая доставка', 'price' => '0 ₽ от 2 500 ₽', 'text' => 'Если заказ готов, согласуем доставку по Севастополю или самовывоз.' ),
),
'faq' => array(
array( 'q' => 'Что написать в срочной заявке?', 'a' => 'Укажите дату и время, повод, примерный вес, адрес доставки и желаемый декор. Так мы быстрее поймем, что можно успеть.' ),
array( 'q' => 'Можно ли срочно сделать сложные фигурки?', 'a' => 'Чаще всего нет: сложный декор требует подготовки. При срочном заказе предложим более быстрые и аккуратные варианты.' ),
),
'related_links' => $common_related,
),
);
$service_addons = array(
'ceny' => array(
'price_cards' => array(
array( 'title' => 'Бенто 500-550 г', 'price' => '1 500-1 800 ₽', 'text' => 'Базовый мини-торт с надписью или простым декором.' ),
array( 'title' => 'Бенто макси около 1 кг', 'price' => '2 200-2 500 ₽', 'text' => 'Больше порций при компактном формате подарочного торта.' ),
array( 'title' => 'Детские и день рождения', 'price' => '2 000-2 500 ₽/кг', 'text' => 'Точная цена зависит от темы, начинки, печати, фигурок и срочности.' ),
array( 'title' => 'Свадебные', 'price' => 'от 3 000-4 000 ₽', 'text' => 'Многоярусные и сложные композиции могут стоить 10 000-13 000 ₽ и выше.' ),
array( 'title' => 'Корпоративные', 'price' => '3 500-5 000 ₽+', 'text' => 'Логотип, фирменные цвета и масштаб брендирования считаются индивидуально.' ),
array( 'title' => 'Доставка', 'price' => '0 ₽ от 2 500 ₽', 'text' => 'Если заказ дешевле 2 500 ₽, доставка по Севастополю стоит 500 ₽.' ),
),
'conditions' => array(
array( 'title' => 'Предоплата', 'text' => 'Для фиксации заказа нужна предоплата 30% после согласования даты, веса, декора и стоимости.' ),
array( 'title' => 'Способы оплаты', 'text' => 'Доступны наличные, перевод, карта и оплата на расчетный счет.' ),
array( 'title' => 'Индивидуальный расчет', 'text' => 'Сложные фигурки, съедобная печать, многоярусность, срочность и доставка влияют на итоговую сумму.' ),
),
'related_links' => $common_related,
),
'dostavka-i-oplata' => array(
'intro' => array(
'title' => 'Доставка по всем районам Севастополя',
'text' => 'Доставляем торты по Севастополю, согласуем удобный интервал и аккуратную передачу заказа. Также доступен самовывоз после подтверждения готовности.',
),
'cards' => array(
array( 'title' => 'Бесплатная доставка', 'text' => 'При стоимости заказа от 2 500 ₽ доставка по Севастополю бесплатная.' ),
array( 'title' => 'Доставка 500 ₽', 'text' => 'Если сумма заказа меньше 2 500 ₽, доставка стоит 500 ₽.' ),
array( 'title' => 'Самовывоз', 'text' => 'Можно забрать торт самостоятельно в согласованное время.' ),
),
'formats_title' => 'Как можно оплатить заказ',
'formats' => array( 'Наличными', 'Переводом', 'Картой', 'На расчетный счет', 'Предоплата 30%', 'Остаток после согласования' ),
'conditions' => array(
array( 'title' => 'Как подготовиться к доставке', 'text' => 'Укажите точный адрес, дату, желаемый интервал и контактный телефон получателя.' ),
array( 'title' => 'Как хранить торт', 'text' => 'После получения держите торт в холодильнике и доставайте незадолго до подачи.' ),
array( 'title' => 'Перенос заказа', 'text' => 'Если дата изменилась, сообщите заранее: проверим свободное окно и возможность переноса.' ),
),
'faq' => array(
array( 'q' => 'Доставляете ли вы во все районы Севастополя?', 'a' => 'Да, доставка доступна по всем районам Севастополя. Время и адрес согласуем при подтверждении заказа.' ),
array( 'q' => 'Когда доставка бесплатная?', 'a' => 'Доставка бесплатная при стоимости заказа от 2 500 ₽. Если заказ дешевле, доставка стоит 500 ₽.' ),
array( 'q' => 'Какая предоплата нужна?', 'a' => 'Для фиксации заказа нужна предоплата 30% после согласования всех деталей.' ),
),
'related_links' => $common_related,
),
'otzyvy' => array(
'intro' => array(
'title' => 'Что обычно отмечают клиенты',
'text' => 'В отзывах чаще всего важны вкус, аккуратность декора, совпадение с референсом, бережная доставка и понятная коммуникация перед заказом.',
),
'reviews' => array(
array( 'name' => 'Анна', 'occasion' => 'День рождения', 'text' => 'Заказывали торт с надписью и ягодами. Все согласовали быстро, торт приехал аккуратно упакованным, по вкусу получился нежный и не приторный.' ),
array( 'name' => 'Марина', 'occasion' => 'Детский праздник', 'text' => 'Нужен был торт в яркой теме для ребенка. Помогли выбрать начинку и подсказали, какой декор лучше успеем сделать к дате.' ),
array( 'name' => 'Игорь', 'occasion' => 'Корпоратив', 'text' => 'Делали торт с логотипом для команды. Понравилось, что заранее уточнили вес, цвета и способ оплаты, а доставку привезли вовремя.' ),
),
'conditions' => array(
array( 'title' => 'Фото после праздника', 'text' => 'Если клиент присылает фото торта на столе, добавляем его в портфолио с разрешения.' ),
array( 'title' => 'Отзывы из мессенджеров', 'text' => 'Скриншоты отзывов лучше размещать только реальные, с согласия клиента и без личных данных.' ),
array( 'title' => 'Что помогает заказу', 'text' => 'Чем точнее референс, дата и количество гостей, тем быстрее получается рассчитать торт.' ),
),
'related_links' => $common_related,
),
'kontakty' => array(
'intro' => array(
'title' => 'Как быстрее получить расчет',
'text' => 'Напишите дату праздника, повод, примерное количество гостей, желаемую начинку, адрес доставки и приложите фото-референс, если он есть.',
),
'cards' => array(
array( 'title' => 'ИП', 'text' => 'Максимов Антон Сергеевич.' ),
array( 'title' => 'Доставка', 'text' => 'По всем районам Севастополя. Бесплатно при заказе от 2 500 ₽, иначе 500 ₽.' ),
array( 'title' => 'Оплата', 'text' => 'Наличные, перевод, карта или расчетный счет. Предоплата 30%.' ),
),
'formats_title' => 'Что указать в заявке',
'formats' => array( 'Дата и время', 'Повод', 'Количество гостей', 'Желаемый декор', 'Начинка', 'Адрес доставки' ),
'conditions' => array(
array( 'title' => 'Телефон', 'text' => sev_tort_site_phone() ),
array( 'title' => 'Telegram', 'text' => 'Можно отправить референсы, пожелания и фото примеров.' ),
array( 'title' => 'Самовывоз', 'text' => 'Доступен по предварительному согласованию времени выдачи.' ),
),
'related_links' => $common_related,
),
'faq' => array(
'conditions' => array(
array( 'title' => 'Нет ограничений по начинкам', 'text' => 'Можно обсудить любые популярные сочетания, которые подходят под формат и срок заказа.' ),
array( 'title' => 'Предоплата 30%', 'text' => 'Заказ фиксируется после согласования деталей и внесения предоплаты.' ),
array( 'title' => 'Доставка по Севастополю', 'text' => 'Бесплатно от 2 500 ₽, иначе 500 ₽. Самовывоз тоже доступен.' ),
),
'related_links' => $common_related,
),
);
if ( isset( $category_addons[ $slug ] ) ) {
return $category_addons[ $slug ];
}
return isset( $service_addons[ $slug ] ) ? $service_addons[ $slug ] : array();
}
function sev_tort_seo_meta_map() { function sev_tort_seo_meta_map() {
return array( return array(
'torty-na-zakaz' => array( 'torty-na-zakaz' => array(

View File

@@ -72,6 +72,14 @@ function sev_tort_portfolio_image_groups() {
} }
$portfolio_groups = sev_tort_portfolio_image_groups(); $portfolio_groups = sev_tort_portfolio_image_groups();
$portfolio_links = array(
array( 'title' => 'Бенто', 'url' => '/bento/' ),
array( 'title' => 'Детские', 'url' => '/detskie/' ),
array( 'title' => 'Свадебные', 'url' => '/svadebnye/' ),
array( 'title' => 'Корпоративные', 'url' => '/korporativnye/' ),
array( 'title' => 'На день рождения', 'url' => '/na-den-rozhdeniya/' ),
array( 'title' => 'Цены', 'url' => '/ceny/' ),
);
get_header(); get_header();
?> ?>
@@ -87,6 +95,11 @@ get_header();
<span class="portfolio-hero__meta-number"><?php echo esc_html( array_sum( array_map( static function ( $group ) { return count( $group['images'] ); }, $portfolio_groups ) ) ); ?></span> <span class="portfolio-hero__meta-number"><?php echo esc_html( array_sum( array_map( static function ( $group ) { return count( $group['images'] ); }, $portfolio_groups ) ) ); ?></span>
<span class="portfolio-hero__meta-text">примеров тортов в галерее</span> <span class="portfolio-hero__meta-text">примеров тортов в галерее</span>
</div> </div>
<nav class="portfolio-hero__links" aria-label="Разделы портфолио">
<?php foreach ( $portfolio_links as $item ) : ?>
<a class="portfolio-hero__link" href="<?php echo esc_url( home_url( $item['url'] ) ); ?>"><?php echo esc_html( $item['title'] ); ?></a>
<?php endforeach; ?>
</nav>
</div> </div>
</section> </section>
@@ -105,6 +118,10 @@ get_header();
</figure> </figure>
<?php endforeach; ?> <?php endforeach; ?>
</div> </div>
<div class="portfolio-gallery__action">
<button class="button-main" type="button" data-lead-open data-lead-source="Заявка из портфолио: <?php echo esc_attr( $group['title'] ); ?>">Повторить похожий стиль</button>
<a class="button-link" href="<?php echo esc_url( home_url( '/ceny/' ) ); ?>">Посмотреть цены</a>
</div>
</div> </div>
<?php endforeach; ?> <?php endforeach; ?>
</div> </div>

View File

@@ -9,6 +9,10 @@ $intro = isset( $content['intro'] ) ? $content['intro'] : array();
$cards = isset( $content['cards'] ) ? $content['cards'] : array(); $cards = isset( $content['cards'] ) ? $content['cards'] : array();
$formats = isset( $content['formats'] ) ? $content['formats'] : array(); $formats = isset( $content['formats'] ) ? $content['formats'] : array();
$faq = isset( $content['faq'] ) ? $content['faq'] : array(); $faq = isset( $content['faq'] ) ? $content['faq'] : array();
$prices = isset( $content['price_cards'] ) ? $content['price_cards'] : array();
$terms = isset( $content['conditions'] ) ? $content['conditions'] : array();
$reviews = isset( $content['reviews'] ) ? $content['reviews'] : array();
$links = isset( $content['related_links'] ) ? $content['related_links'] : array();
get_header(); get_header();
?> ?>
@@ -92,6 +96,28 @@ get_header();
</section> </section>
<?php endif; ?> <?php endif; ?>
<?php if ( $prices ) : ?>
<section class="service-prices">
<div class="service-prices__inner">
<div class="service-prices__head">
<span class="section-kicker">Ориентиры</span>
<h2 class="section-title">Цены и условия расчета</h2>
<p class="service-prices__lead">Финальная стоимость зависит от веса, начинки, декора, срочности и доставки. Ниже указаны ориентиры, точный расчет сделаем после заявки.</p>
</div>
<div class="service-prices__grid">
<?php foreach ( $prices as $item ) : ?>
<article class="service-price-card">
<span class="service-price-card__price"><?php echo esc_html( $item['price'] ); ?></span>
<h3 class="service-price-card__title"><?php echo esc_html( $item['title'] ); ?></h3>
<p class="service-price-card__text"><?php echo esc_html( $item['text'] ); ?></p>
</article>
<?php endforeach; ?>
</div>
<button class="button-main" type="button" data-lead-open data-lead-source="Получить расчет: блок цен <?php echo esc_attr( $page['label'] ); ?>">Получить точный расчет</button>
</div>
</section>
<?php endif; ?>
<?php if ( $formats ) : ?> <?php if ( $formats ) : ?>
<section class="service-formats"> <section class="service-formats">
<div class="service-formats__inner"> <div class="service-formats__inner">
@@ -108,6 +134,45 @@ get_header();
</section> </section>
<?php endif; ?> <?php endif; ?>
<?php if ( $terms ) : ?>
<section class="service-terms">
<div class="service-terms__inner">
<div class="service-terms__head">
<span class="section-kicker">Важно</span>
<h2 class="section-title">Условия заказа</h2>
</div>
<div class="service-terms__grid">
<?php foreach ( $terms as $item ) : ?>
<article class="service-term-card">
<h3 class="service-term-card__title"><?php echo esc_html( $item['title'] ); ?></h3>
<p class="service-term-card__text"><?php echo esc_html( $item['text'] ); ?></p>
</article>
<?php endforeach; ?>
</div>
</div>
</section>
<?php endif; ?>
<?php if ( $reviews ) : ?>
<section class="service-reviews">
<div class="service-reviews__inner">
<div class="service-reviews__head">
<span class="section-kicker">Отзывы</span>
<h2 class="section-title">Что говорят клиенты</h2>
</div>
<div class="service-reviews__grid">
<?php foreach ( $reviews as $item ) : ?>
<article class="service-review-card">
<p class="service-review-card__text"><?php echo esc_html( $item['text'] ); ?></p>
<span class="service-review-card__author"><?php echo esc_html( $item['name'] ); ?></span>
<span class="service-review-card__occasion"><?php echo esc_html( $item['occasion'] ); ?></span>
</article>
<?php endforeach; ?>
</div>
</div>
</section>
<?php endif; ?>
<section class="service-process"> <section class="service-process">
<div class="service-process__inner"> <div class="service-process__inner">
<div class="service-process__content"> <div class="service-process__content">
@@ -145,6 +210,25 @@ get_header();
</section> </section>
<?php endif; ?> <?php endif; ?>
<?php if ( $links ) : ?>
<section class="service-related">
<div class="service-related__inner">
<div class="service-related__head">
<span class="section-kicker">Полезно</span>
<h2 class="section-title">Разделы, которые помогут с выбором</h2>
</div>
<div class="service-related__grid">
<?php foreach ( $links as $item ) : ?>
<a class="service-related-card" href="<?php echo esc_url( home_url( $item['url'] ) ); ?>">
<span class="service-related-card__title"><?php echo esc_html( $item['title'] ); ?></span>
<span class="service-related-card__text"><?php echo esc_html( $item['text'] ); ?></span>
</a>
<?php endforeach; ?>
</div>
</div>
</section>
<?php endif; ?>
<section class="service-lead" id="lead-form"> <section class="service-lead" id="lead-form">
<div class="service-lead__inner"> <div class="service-lead__inner">
<div class="service-lead__content"> <div class="service-lead__content">