Коллекция особняков ACADEMIA
Камерные отели, расположенные в особняках
в центре Санкт-Петербурга с приватной атмосферой и историческими интерьерами
Гостеприимство как искусство!
Спецпредложения
Графский Петербург
Особый отдых в формате пышных аристократических традиций
ПЕТЕРБУРГ: ПОГРУЖЕНИЕ В ИСТОРИЮ
Отдых в особняке Шувалова с комплиментарным посещением лекции
АЭРОФЛОТ БОНУС
До 1 000 миль за каждую ночь проживания в особняках!
Промокод GENIUS
Получите бонус при первом бронировании на сайте
Раннее бронирование
Планируйте поездку заранее от 3 ночей с сентября по декабрь скидка от 15%
День рождения
Специальные привилегии для именинников и скидка 15% от 2 ночей
Свадебное предложение
Свадебное предложение ACADEMIA — это гармония исторических интерьеров и безупречного сервиса
Длительное проживание
Скидка 20% на проживание от 5 ночей
ГРАФ ШУВАЛОВ ПРИГЛАШАЕТ
НА ДЕНЬ РОЖДЕНИЯ ОСОБНЯКА!
В этот праздничный день дарим особенные подарки для гостей особняка: винное казино в Игорном доме графа Шувалова, мастер-класс по живописи с графиней, приветственную наливку, розыгрыш приятных сюрпризов, десерт в подарок в ресторане
и встречу с графской семьей.
Все мероприятия в этот день бесплатны для гостей особняка,
количество мест ограничено.
Забронируйте номер в ACADEMIA Особняк Шувалова на 26 июля
и разделите праздник с нами!
(() => {
// ================= КОНФИГУРАЦИЯ КОНТЕНТА =================
const SLIDE_CONTENT = {
default: {
title: "ГДЕ ПРОВЕСТИ МАЙСКИЕ ВЫХОДНЫЕ В САНКТ-ПЕТЕРБУРГЕ",
text: '<p>Весна в Петербурге всегда нетороплива, мечтательна и наполнена вдохновением. Приглашаем вас попробовать Графские завтраки, стать званым гостем на гастрономическом ужине в баре-ресторане.<br/>Послушать живую музыку и получить коктейль в подарок на вечеринке в честь открытия летней террасы во французской Брассери 8 мая.<br/><br/>Выбирайте свой особняк ACADEMIA для ваших майских выходных, <a href="/booking/?date=2026-05-01&nights=2&adults=2&children-age=&access-code=&hotel_id=41018 ">бронируйте ваш номер на официальном сайте</a> и участвуйте в розыгрыше приятных подарков от ACADEMIA и наших партнеров!<br/><br/>Проведите свои выходные в коллекции особняков ACADEMIA!</p>',
buttonText: "ВЫБРАТЬ НОМЕР",
buttonUrl: "/booking/?date=2026-05-01&nights=2&adults=2&children-age=&access-code=&hotel_id=41018",
},
1: {
title: "Майский розыгрыш подарков",
text: '<p>Выбирайте любой из особняков ACADEMIA для ваших майских выходных, <a href="/booking/?date=2026-05-01&nights=2&adults=2&children-age=&access-code=&hotel_id=41018">бронируйте на официальном сайте</a> и участвуйте в розыгрыше приятных подарков от ACADEMIA и наших партнеров!<br/><br/><strong>Для номеров высоких категорий будут разыграны:</strong><br/>- визит в ACADEMIA СПА<br/>- представительский трансфер<br/>- приветственный сет в номер<br/>- завтрак.<br/><br/><strong>Для стандартных категорий номеров мы подготовили подарочные сертификаты от наших партнеров:</strong> RXBSHOES, Ruskala Brand, KIRICLAN, Amazing cacao и Императорского фарфорового завода.</p>',
},
};
// ================= СЕЛЕКТОРЫ =================
const SELECTORS = {
slider: ".brxe-slider", // Контейнер слайдера
slide: ".swiper-slide", // Слайды
activeSlide: ".swiper-slide-active", // Активный слайд
header: "#sliderHeader",
text: "#sliderText",
button: "#sliderBtn",
};
// ================= СОСТОЯНИЕ =================
const currentContent = {
title: null,
text: null,
buttonText: null,
buttonUrl: null,
};
// ================= ОБНОВЛЕНИЕ КОНТЕНТА =================
function updateContent(slideIndex) {
const els = {
header: document.querySelector(SELECTORS.header),
text: document.querySelector(SELECTORS.text),
button: document.querySelector(SELECTORS.button),
};
if (!els.button) return; // Если нет кнопки - выходим
const slideConfig = SLIDE_CONTENT[slideIndex] || {};
const def = SLIDE_CONTENT.default;
// Формируем новое состояние (с fallback на default)
const newContent = {
title: slideConfig.title !== undefined ? slideConfig.title : def.title,
text: slideConfig.text !== undefined ? slideConfig.text : def.text,
buttonText:
slideConfig.buttonText !== undefined
? slideConfig.buttonText
: def.buttonText,
buttonUrl:
slideConfig.buttonUrl !== undefined
? slideConfig.buttonUrl
: def.buttonUrl,
};
// Обновляем только изменившиеся поля
if (newContent.title !== currentContent.title && els.header) {
els.header.textContent = newContent.title;
currentContent.title = newContent.title;
}
if (newContent.text !== currentContent.text && els.text) {
els.text.innerHTML = newContent.text; // innerHTML для поддержки HTML тегов
currentContent.text = newContent.text;
}
if (newContent.buttonText !== currentContent.buttonText) {
els.button.textContent = newContent.buttonText;
currentContent.buttonText = newContent.buttonText;
}
if (newContent.buttonUrl !== currentContent.buttonUrl) {
els.button.href = newContent.buttonUrl;
currentContent.buttonUrl = newContent.buttonUrl;
}
}
// ================= ПОЛУЧЕНИЕ ИНДЕКСА АКТИВНОГО СЛАЙДА =================
function getActiveSlideIndex() {
const activeSlide = document.querySelector(SELECTORS.activeSlide);
if (!activeSlide) return 0;
// Пробуем получить индекс из разных атрибутов
const index =
activeSlide.getAttribute("data-swiper-slide-index") ||
activeSlide.getAttribute("data-brx-swiper-index") ||
0;
return parseInt(index, 10);
}
// ================= ИНИЦИАЛИЗАЦИЯ =================
function init() {
const slider = document.querySelector(SELECTORS.slider);
if (!slider) {
setTimeout(init, 300); // Повторяем если слайдер еще не загружен
return;
}
// Начальное обновление
const initialIndex = getActiveSlideIndex();
updateContent(initialIndex);
// Способ 1: Используем события Swiper (если доступен)
if (typeof Swiper !== "undefined") {
const swiperInstance = slider.swiper;
if (swiperInstance) {
swiperInstance.on("slideChange", function () {
updateContent(this.activeIndex);
});
}
}
// Способ 2: MutationObserver (универсальный, работает всегда)
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
if (
mutation.type === "attributes" &&
mutation.attributeName === "class" &&
mutation.target.classList.contains("swiper-slide")
) {
// Проверяем, появился ли класс swiper-slide-active
if (mutation.target.classList.contains("swiper-slide-active")) {
const index = getActiveSlideIndex();
updateContent(index);
}
}
});
});
// Наблюдаем за всеми слайдами
const slides = document.querySelectorAll(SELECTORS.slide);
slides.forEach((slide) => {
observer.observe(slide, { attributes: true, attributeFilter: ["class"] });
});
// Также наблюдаем за добавлением новых слайдов (для динамических слайдеров)
const wrapper = slider.querySelector(".swiper-wrapper");
if (wrapper) {
const wrapperObserver = new MutationObserver(() => {
const newSlides = wrapper.querySelectorAll(SELECTORS.slide);
newSlides.forEach((slide) => {
observer.observe(slide, {
attributes: true,
attributeFilter: ["class"],
});
});
});
wrapperObserver.observe(wrapper, { childList: true });
}
}
// ================= ЗАПУСК =================
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", init);
} else {
init();
}
})();
Особняки с историей в центре Петербурга
Коллекция отелей ACADEMIA
ACADEMIA
Особняк Шувалова
Изысканный отель в особняке XIX века
с богатой историей в центре Петербурга
- Объект культурного наследия в историческом центре
- Уникальные исторические резиденции
- Подлинные детали в интерьере и предметы антиквариата
- Консьерж-сервис
- Представительский трансфер
- Бар-ресторан Академиа Шувалова
- ACADEMIA СПА
- Атмосфера впечатлений
- Фены Dyson в Исторических резиденциях
- Рады вашему питомцу
- Объект культурного наследия в историческом центре
- Уникальные исторические резиденции
- Подлинные детали в интерьере и предметы антиквариата
- Консьерж-сервис
- Представительский трансфер
- Бар-ресторан Академиа Шувалова
- ACADEMIA СПА
- Атмосфера впечатлений
- Фены Dyson в Исторических резиденциях
- Рады вашему питомцу
ACADEMIA
Особняк Теплова
Клубный отель-особняк
с приватной атмосферой, рядом с Английской набережной и Адмиралтейством
- Объект культурного наследия на Галерной улице
- Атмосфера неспешного и уединенного отдыха
- Элегантный отель в особняке Теплова
- Панорамный сьюты
- Приветственное угощение при заселении
- Изысканные интерьеры в Екатерининском классицизме
- Служба заботы ACADEMIA
- Просторные номера и сьюты с кухнями
- Представительский трансфер
- Рады вашему питомцу
- Объект культурного наследия на Галерной улице
- Атмосфера неспешного и уединенного отдыха
- Элегантный отель в особняке Теплова
- Панорамный сьюты
- Приветственное угощение при заселении
- Изысканные интерьеры в Екатерининском классицизме
- Служба заботы ACADEMIA
- Просторные номера и сьюты с кухнями
- Представительский трансфер
- Рады вашему питомцу
ACADEMIA
Васильевский
Классический отель
в тихом центре Петербурга на Васильевском острове
- Отель с дизайнерским интерьером рядом с Дворцовой набережной
- Просторные номера и люксы с кухнями
- Элегантные ванны на ножках у окна
- Номера для гостей с ограниченными возможностями
- Служба заботы ACADEMIA
- Приветственное угощение при заселении
- Представительский трансфер
- Французский ресторан Brasserie by ACADEMIA
- Рады вашему питомцу
- Отель с дизайнерским интерьером рядом с Дворцовой набережной
- Просторные номера и люксы с кухнями
- Элегантные ванны на ножках у окна
- Номера для гостей с ограниченными возможностями
- Служба заботы ACADEMIA
- Приветственное угощение при заселении
- Представительский трансфер
- Французский ресторан Brasserie by ACADEMIA
- Рады вашему питомцу
Сервис, который становится главой вашей истории
Каждый момент вашего пребывания — это маленькая история, наполненная вниманием, уютом и заботой.
В ACADEMIA гостеприимство становится частью вашей истории. Мы знаем, что путешествие — это не только дорога, но и эмоции, которые остаются с вами надолго.