From 409668ac50076ea3c116fa1fbb0c831b550ce0c5 Mon Sep 17 00:00:00 2001 From: "Anton.AE" Date: Sat, 4 Jul 2026 19:40:48 +0300 Subject: [PATCH 1/5] fix --- wp-config.php | 3 +- .../assets/css/layout.css | 73 ++++++++++++ .../assets/css/style-core.css | 4 + .../sevastopol-tort-child/assets/js/site.js | 104 ++++++++++++++++++ .../themes/sevastopol-tort-child/footer.php | 11 +- .../sevastopol-tort-child/front-page.php | 8 +- .../themes/sevastopol-tort-child/header.php | 7 +- .../sevastopol-tort-child/inc/forms.php | 22 +++- .../sevastopol-tort-child/inc/theme-data.php | 16 +-- .../page-templates/page-portfolio.php | 2 +- .../page-templates/page-service.php | 4 +- .../template-parts/lead-form.php | 9 +- 12 files changed, 236 insertions(+), 27 deletions(-) diff --git a/wp-config.php b/wp-config.php index 779acfb..ab6aec5 100644 --- a/wp-config.php +++ b/wp-config.php @@ -89,7 +89,8 @@ define( 'WP_DEBUG', false ); /* Add any custom values between this line and the "stop editing" line. */ - +define( 'SEV_TORT_TELEGRAM_BOT_TOKEN', '8607238298:AAH_dZ-EgzFOpT0LtmYuiy4ifcsvLZxXwPk' ); +define( 'SEV_TORT_TELEGRAM_CHAT_ID', '-1003995055932' ); /* That's all, stop editing! Happy publishing. */ diff --git a/wp-content/themes/sevastopol-tort-child/assets/css/layout.css b/wp-content/themes/sevastopol-tort-child/assets/css/layout.css index 5fa10c4..d487ac3 100644 --- a/wp-content/themes/sevastopol-tort-child/assets/css/layout.css +++ b/wp-content/themes/sevastopol-tort-child/assets/css/layout.css @@ -241,7 +241,10 @@ align-items: center; min-height: 46px; border-bottom: 1px solid var(--color-line); + color: var(--color-text); + font: inherit; font-weight: 700; + text-align: left; } .site-footer { @@ -315,6 +318,15 @@ box-shadow: var(--shadow-soft); } +.lead-form__trap { + position: absolute; + left: -10000px; + width: 1px; + height: 1px; + opacity: 0; + pointer-events: none; +} + .lead-form__head { display: grid; gap: 8px; @@ -381,6 +393,67 @@ color: var(--color-success); } +.lead-modal { + position: fixed; + inset: 0; + z-index: 120; + display: grid; + place-items: center; + padding: 20px; +} + +.lead-modal[hidden] { + display: none; +} + +.lead-modal__overlay { + position: absolute; + inset: 0; + background: rgba(44, 33, 29, 0.58); +} + +.lead-modal__dialog { + position: relative; + width: min(100%, 520px); + max-height: calc(100vh - 40px); + overflow: auto; +} + +.lead-modal__close { + position: absolute; + top: 14px; + right: 14px; + z-index: 2; + width: 36px; + height: 36px; + border-radius: 50%; + background: var(--color-surface-soft); +} + +.lead-modal__close::before, +.lead-modal__close::after { + position: absolute; + top: 17px; + left: 10px; + width: 16px; + height: 2px; + border-radius: 2px; + background: var(--color-text); + content: ""; +} + +.lead-modal__close::before { + transform: rotate(45deg); +} + +.lead-modal__close::after { + transform: rotate(-45deg); +} + +.lead-modal .lead-form { + padding-top: 54px; +} + .cookie-note { position: fixed; right: 24px; diff --git a/wp-content/themes/sevastopol-tort-child/assets/css/style-core.css b/wp-content/themes/sevastopol-tort-child/assets/css/style-core.css index c8d974f..2c3ddf2 100644 --- a/wp-content/themes/sevastopol-tort-child/assets/css/style-core.css +++ b/wp-content/themes/sevastopol-tort-child/assets/css/style-core.css @@ -48,6 +48,10 @@ body.menu-is-open { overflow: hidden; } +body.lead-modal-is-open { + overflow: hidden; +} + .button-main, .lead-form__button { display: inline-flex; diff --git a/wp-content/themes/sevastopol-tort-child/assets/js/site.js b/wp-content/themes/sevastopol-tort-child/assets/js/site.js index ae37dc5..9e52d81 100644 --- a/wp-content/themes/sevastopol-tort-child/assets/js/site.js +++ b/wp-content/themes/sevastopol-tort-child/assets/js/site.js @@ -7,6 +7,11 @@ var catalogButton = document.querySelector('.site-header__menu-button'); var cookieNote = document.querySelector('[data-cookie-note]'); var cookieButton = document.querySelector('[data-cookie-accept]'); + var leadModal = document.querySelector('[data-lead-modal]'); + var leadOpenNodes = document.querySelectorAll('[data-lead-open]'); + var leadCloseNodes = document.querySelectorAll('[data-lead-close]'); + var phoneInputs = document.querySelectorAll('[data-phone-mask]'); + var emailInputs = document.querySelectorAll('[data-email-mask]'); function setMenuState(isOpen) { if (!menu || !toggle) { @@ -19,6 +24,67 @@ toggle.setAttribute('aria-expanded', isOpen ? 'true' : 'false'); } + function setLeadModalState(isOpen, source) { + if (!leadModal) { + return; + } + + leadModal.hidden = !isOpen; + body.classList.toggle('lead-modal-is-open', isOpen); + + if (!isOpen) { + return; + } + + var pageInput = leadModal.querySelector('input[name="lead_page"]'); + var sourceInput = leadModal.querySelector('input[name="lead_source"]'); + var firstInput = leadModal.querySelector('input[name="lead_name"]'); + + if (pageInput) { + pageInput.value = document.title + ' | ' + window.location.pathname; + } + + if (sourceInput) { + sourceInput.value = source || 'Попап заявки'; + } + + if (firstInput) { + window.setTimeout(function () { + firstInput.focus(); + }, 80); + } + } + + function applyPhoneMask(input) { + var digits = input.value.replace(/\D/g, ''); + + if (digits.charAt(0) === '8') { + digits = '7' + digits.slice(1); + } + + if (digits.charAt(0) === '7') { + digits = digits.slice(1); + } + + digits = digits.slice(0, 10); + + var value = '+7'; + if (digits.length > 0) { + value += ' (' + digits.slice(0, 3); + } + if (digits.length >= 3) { + value += ') ' + digits.slice(3, 6); + } + if (digits.length >= 6) { + value += '-' + digits.slice(6, 8); + } + if (digits.length >= 8) { + value += '-' + digits.slice(8, 10); + } + + input.value = value; + } + if (menu && toggle) { toggle.addEventListener('click', function () { setMenuState(!menu.classList.contains('is-open')); @@ -46,6 +112,44 @@ }); } + leadOpenNodes.forEach(function (node) { + node.addEventListener('click', function (event) { + event.preventDefault(); + setMenuState(false); + setLeadModalState(true, node.getAttribute('data-lead-source') || node.textContent.trim()); + }); + }); + + leadCloseNodes.forEach(function (node) { + node.addEventListener('click', function () { + setLeadModalState(false); + }); + }); + + document.addEventListener('keydown', function (event) { + if (event.key === 'Escape') { + setLeadModalState(false); + } + }); + + phoneInputs.forEach(function (input) { + input.addEventListener('focus', function () { + if (!input.value) { + input.value = '+7'; + } + }); + + input.addEventListener('input', function () { + applyPhoneMask(input); + }); + }); + + emailInputs.forEach(function (input) { + input.addEventListener('input', function () { + input.value = input.value.replace(/\s/g, '').toLowerCase(); + }); + }); + if (cookieNote && cookieButton && window.localStorage) { if (localStorage.getItem('sevTortCookieAccepted') !== 'yes') { cookieNote.hidden = false; diff --git a/wp-content/themes/sevastopol-tort-child/footer.php b/wp-content/themes/sevastopol-tort-child/footer.php index 241deeb..c7d4ef2 100644 --- a/wp-content/themes/sevastopol-tort-child/footer.php +++ b/wp-content/themes/sevastopol-tort-child/footer.php @@ -35,8 +35,8 @@ if ( ! defined( 'ABSPATH' ) ) { Контакты @@ -48,6 +48,13 @@ if ( ! defined( 'ABSPATH' ) ) { + - 'Обсудить торт', 'page' => 'Главная' ) ); ?> + 'Обсудить торт', 'page' => 'Главная', 'source' => 'Встроенная форма: блок Как мы работаем' ) ); ?>
@@ -178,8 +178,8 @@ get_header();

Напишите нам в мессенджер или оставьте заявку, чтобы получить 2-3 идеи оформления и ориентир по цене.

diff --git a/wp-content/themes/sevastopol-tort-child/header.php b/wp-content/themes/sevastopol-tort-child/header.php index e557d56..3fbbc17 100644 --- a/wp-content/themes/sevastopol-tort-child/header.php +++ b/wp-content/themes/sevastopol-tort-child/header.php @@ -43,7 +43,7 @@ if ( ! defined( 'ABSPATH' ) ) {
  • Контакты
  • - Заказать торт + - WhatsApp - Telegram + diff --git a/wp-content/themes/sevastopol-tort-child/inc/forms.php b/wp-content/themes/sevastopol-tort-child/inc/forms.php index a8843d2..4867961 100644 --- a/wp-content/themes/sevastopol-tort-child/inc/forms.php +++ b/wp-content/themes/sevastopol-tort-child/inc/forms.php @@ -16,20 +16,32 @@ function sev_tort_handle_lead_form() { sev_tort_redirect_form_status( 'consent' ); } + if ( ! empty( $_POST['lead_company'] ) ) { + sev_tort_redirect_form_status( 'success' ); + } + $name = isset( $_POST['lead_name'] ) ? sanitize_text_field( wp_unslash( $_POST['lead_name'] ) ) : ''; $phone = isset( $_POST['lead_phone'] ) ? sanitize_text_field( wp_unslash( $_POST['lead_phone'] ) ) : ''; + $email = isset( $_POST['lead_email'] ) ? sanitize_email( wp_unslash( $_POST['lead_email'] ) ) : ''; $message = isset( $_POST['lead_message'] ) ? sanitize_textarea_field( wp_unslash( $_POST['lead_message'] ) ) : ''; $page = isset( $_POST['lead_page'] ) ? sanitize_text_field( wp_unslash( $_POST['lead_page'] ) ) : ''; + $source = isset( $_POST['lead_source'] ) ? sanitize_text_field( wp_unslash( $_POST['lead_source'] ) ) : ''; - if ( '' === $phone ) { + if ( '' === $phone || ! preg_match( '/^\+7 \([0-9]{3}\) [0-9]{3}-[0-9]{2}-[0-9]{2}$/', $phone ) ) { + sev_tort_redirect_form_status( 'error' ); + } + + if ( '' !== $email && ! is_email( $email ) ) { sev_tort_redirect_form_status( 'error' ); } $text = "Новая заявка с сайта sevastopol-tort.ru\n"; - $text .= "Страница: " . $page . "\n"; - $text .= "Имя: " . ( $name ? $name : 'не указано' ) . "\n"; - $text .= "Телефон: " . $phone . "\n"; - $text .= "Комментарий: " . ( $message ? $message : 'не указан' ); + $text .= 'Страница: ' . ( $page ? $page : 'не указана' ) . "\n"; + $text .= 'Источник: ' . ( $source ? $source : 'не указан' ) . "\n"; + $text .= 'Имя: ' . ( $name ? $name : 'не указано' ) . "\n"; + $text .= 'Телефон: ' . $phone . "\n"; + $text .= 'Почта: ' . ( $email ? $email : 'не указана' ) . "\n"; + $text .= 'Комментарий: ' . ( $message ? $message : 'не указан' ); $sent = sev_tort_send_telegram_message( $text ); diff --git a/wp-content/themes/sevastopol-tort-child/inc/theme-data.php b/wp-content/themes/sevastopol-tort-child/inc/theme-data.php index 41529f2..0f6d48b 100644 --- a/wp-content/themes/sevastopol-tort-child/inc/theme-data.php +++ b/wp-content/themes/sevastopol-tort-child/inc/theme-data.php @@ -5,20 +5,20 @@ if ( ! defined( 'ABSPATH' ) ) { } function sev_tort_site_phone() { - return '+7 (978) 000-00-00'; + return '+7 (911) 774-89-23'; } function sev_tort_site_phone_href() { - return 'tel:+79780000000'; + return 'tel:+7 (911) 774-8923'; } -function sev_tort_whatsapp_url() { - return 'https://wa.me/79780000000'; -} +// function sev_tort_whatsapp_url() { +// return 'https://wa.me/79780000000'; +// } -function sev_tort_telegram_url() { - return 'https://t.me/sevastopol_tort'; -} +// function sev_tort_telegram_url() { +// return 'https://t.me/sevastopol_tort'; +// } function sev_tort_pages() { return array( diff --git a/wp-content/themes/sevastopol-tort-child/page-templates/page-portfolio.php b/wp-content/themes/sevastopol-tort-child/page-templates/page-portfolio.php index 903b100..c9e9ef7 100644 --- a/wp-content/themes/sevastopol-tort-child/page-templates/page-portfolio.php +++ b/wp-content/themes/sevastopol-tort-child/page-templates/page-portfolio.php @@ -117,7 +117,7 @@ get_header();

    Понравился стиль из портфолио?

    Отправьте пример, дату и пожелания по весу. Подскажем начинку, стоимость и ближайший свободный срок.

    - 'portfolio' ) ); ?> + 'Оставить заявку', 'page' => 'Портфолио', 'source' => 'Встроенная форма: портфолио' ) ); ?>
    diff --git a/wp-content/themes/sevastopol-tort-child/page-templates/page-service.php b/wp-content/themes/sevastopol-tort-child/page-templates/page-service.php index 6f8ba93..303591b 100644 --- a/wp-content/themes/sevastopol-tort-child/page-templates/page-service.php +++ b/wp-content/themes/sevastopol-tort-child/page-templates/page-service.php @@ -20,7 +20,7 @@ get_header();

    - Получить расчет + Написать в Telegram
    @@ -115,7 +115,7 @@ get_header();

    Расскажите, какой торт нужен

    Укажите дату, повод, примерный вес и пожелания по декору. Если пока нет точной идеи, поможем подобрать варианты.

    - 'Получить расчет', 'page' => $page['title'] ) ); ?> + 'Получить расчет', 'page' => $page['title'], 'source' => 'Встроенная форма: страница ' . $page['label'] ) ); ?> diff --git a/wp-content/themes/sevastopol-tort-child/template-parts/lead-form.php b/wp-content/themes/sevastopol-tort-child/template-parts/lead-form.php index a75ddd0..85f770b 100644 --- a/wp-content/themes/sevastopol-tort-child/template-parts/lead-form.php +++ b/wp-content/themes/sevastopol-tort-child/template-parts/lead-form.php @@ -5,10 +5,13 @@ if ( ! defined( 'ABSPATH' ) ) { $form_title = isset( $args['title'] ) ? $args['title'] : 'Оставить заявку'; $form_page = isset( $args['page'] ) ? $args['page'] : ''; +$form_source = isset( $args['source'] ) ? $args['source'] : 'Встроенная форма'; ?>
    + +
    @@ -20,7 +23,11 @@ $form_page = isset( $args['page'] ) ? $args['page'] : ''; +
    diff --git a/wp-content/themes/sevastopol-tort-child/header.php b/wp-content/themes/sevastopol-tort-child/header.php index 3fbbc17..38623e2 100644 --- a/wp-content/themes/sevastopol-tort-child/header.php +++ b/wp-content/themes/sevastopol-tort-child/header.php @@ -67,8 +67,8 @@ if ( ! defined( 'ABSPATH' ) ) {
    - + WhatsApp + Telegram
    From 9a24c53b8ebfbec6c94eb24703f4cd6364ee4a82 Mon Sep 17 00:00:00 2001 From: "Anton.AE" Date: Sat, 4 Jul 2026 19:48:58 +0300 Subject: [PATCH 3/5] fix --- .../themes/sevastopol-tort-child/footer.php | 33 ++++++++++++++++++- .../sevastopol-tort-child/inc/theme-data.php | 12 +++---- .../template-parts/lead-form.php | 7 ++-- 3 files changed, 42 insertions(+), 10 deletions(-) diff --git a/wp-content/themes/sevastopol-tort-child/footer.php b/wp-content/themes/sevastopol-tort-child/footer.php index dace043..ddcea08 100644 --- a/wp-content/themes/sevastopol-tort-child/footer.php +++ b/wp-content/themes/sevastopol-tort-child/footer.php @@ -52,7 +52,38 @@ if ( ! defined( 'ABSPATH' ) ) {
    diff --git a/wp-content/themes/sevastopol-tort-child/functions.php b/wp-content/themes/sevastopol-tort-child/functions.php index de50a68..1b24a06 100644 --- a/wp-content/themes/sevastopol-tort-child/functions.php +++ b/wp-content/themes/sevastopol-tort-child/functions.php @@ -85,12 +85,6 @@ function sev_tort_meta_tags() { $robots = ! empty( $page['indexable'] ) ? 'index, follow' : 'noindex, nofollow'; printf( '' . "\n", esc_attr( $robots ) ); - if ( 'politika-konfidencialnosti' === $page['slug'] ) { - printf( '' . "\n", esc_attr( 'Политика в отношении обработки персональных данных посетителей сайта sevastopol-tort.ru.' ) ); - printf( '' . "\n", esc_url( home_url( '/' . $page['slug'] . '/' ) ) ); - return; - } - if ( ! empty( $page['description'] ) ) { printf( '' . "\n", esc_attr( $page['description'] ) ); } @@ -106,10 +100,6 @@ function sev_tort_document_title( $title ) { return $title; } - if ( 'politika-konfidencialnosti' === $page['slug'] ) { - return 'Политика в отношении обработки персональных данных'; - } - return $page['title']; } diff --git a/wp-content/themes/sevastopol-tort-child/page-templates/page-policy.php b/wp-content/themes/sevastopol-tort-child/page-templates/page-policy.php index c20d4fc..c8a46d5 100644 --- a/wp-content/themes/sevastopol-tort-child/page-templates/page-policy.php +++ b/wp-content/themes/sevastopol-tort-child/page-templates/page-policy.php @@ -5,149 +5,42 @@ if ( ! defined( 'ABSPATH' ) ) { $page = sev_tort_current_page_config(); -$policy_sections = array( - array( - 'title' => '1. Общие положения', - 'items' => array( - array( 'type' => 'p', 'text' => 'Настоящая политика обработки персональных данных составлена в соответствии с требованиями Федерального закона от 27.07.2006 № 152-ФЗ «О персональных данных» (далее — Закон) и определяет порядок обработки персональных данных и меры по обеспечению безопасности персональных данных, предпринимаемые ИП Максимов Антон Сергеевич (далее – Оператор).' ), - array( 'type' => 'p', 'text' => '1.1. Оператор ставит своей важнейшей целью и условием осуществления своей деятельности соблюдение прав и свобод человека и гражданина при обработке его персональных данных, в том числе защиты прав на неприкосновенность частной жизни, личную и семейную тайну.' ), - array( 'type' => 'p', 'text' => '1.2. Настоящая политика Оператора в отношении обработки персональных данных (далее – Политика) применяется ко всей информации, которую Оператор может получить о посетителях веб-сайта https://sevastopol-tort.ru/.' ), - ), - ), - array( - 'title' => '2. Основные понятия, используемые в Политике', - 'items' => array( - array( 'type' => 'p', 'text' => '2.1. Автоматизированная обработка персональных данных – обработка персональных данных с помощью средств вычислительной техники.' ), - array( 'type' => 'p', 'text' => '2.2. Блокирование персональных данных – временное прекращение обработки персональных данных, за исключением случаев, если обработка необходима для уточнения персональных данных.' ), - array( 'type' => 'p', 'text' => '2.3. Веб-сайт – совокупность графических и информационных материалов, а также программ для ЭВМ и баз данных, обеспечивающих их доступность в сети интернет по сетевому адресу https://sevastopol-tort.ru/.' ), - array( 'type' => 'p', 'text' => '2.4. Информационная система персональных данных — совокупность содержащихся в базах данных персональных данных и обеспечивающих их обработку информационных технологий и технических средств.' ), - array( 'type' => 'p', 'text' => '2.5. Обезличивание персональных данных — действия, в результате которых невозможно определить без использования дополнительной информации принадлежность персональных данных конкретному Пользователю или иному субъекту персональных данных.' ), - array( 'type' => 'p', 'text' => '2.6. Обработка персональных данных – любое действие или совокупность действий, совершаемых с использованием средств автоматизации или без использования таких средств с персональными данными, включая сбор, запись, систематизацию, накопление, хранение, уточнение, извлечение, использование, передачу, обезличивание, блокирование, удаление и уничтожение персональных данных.' ), - array( 'type' => 'p', 'text' => '2.7. Оператор – государственный орган, муниципальный орган, юридическое или физическое лицо, самостоятельно или совместно с другими лицами организующие и (или) осуществляющие обработку персональных данных, а также определяющие цели обработки персональных данных, состав персональных данных, подлежащих обработке, и действия, совершаемые с персональными данными.' ), - array( 'type' => 'p', 'text' => '2.8. Персональные данные – любая информация, относящаяся прямо или косвенно к определенному или определяемому Пользователю веб-сайта https://sevastopol-tort.ru/.' ), - array( 'type' => 'p', 'text' => '2.9. Пользователь – любой посетитель веб-сайта https://sevastopol-tort.ru/.' ), - array( 'type' => 'p', 'text' => '2.10. Предоставление персональных данных – действия, направленные на раскрытие персональных данных определенному лицу или определенному кругу лиц.' ), - array( 'type' => 'p', 'text' => '2.11. Распространение персональных данных – любые действия, направленные на раскрытие персональных данных неопределенному кругу лиц или на ознакомление с персональными данными неограниченного круга лиц.' ), - array( 'type' => 'p', 'text' => '2.12. Трансграничная передача персональных данных – передача персональных данных на территорию иностранного государства органу власти иностранного государства, иностранному физическому или иностранному юридическому лицу.' ), - array( 'type' => 'p', 'text' => '2.13. Уничтожение персональных данных – любые действия, в результате которых персональные данные уничтожаются безвозвратно с невозможностью дальнейшего восстановления.' ), - ), - ), - array( - 'title' => '3. Категории субъектов персональных данных', - 'items' => array( - array( 'type' => 'p', 'text' => '3.1. Оператор обрабатывает персональные данные следующих категорий субъектов:' ), - array( 'type' => 'list', 'items' => array( - 'Пользователи веб-сайта (посетители).', - 'Лица, оставившие заявку через формы обратной связи.', - 'Лица, подписавшиеся на рассылку при наличии такой возможности на сайте.', - ) ), - ), - ), - array( - 'title' => '4. Персональные данные, обрабатываемые Оператором', - 'items' => array( - array( 'type' => 'p', 'text' => '4.1. Оператор может обрабатывать следующие персональные данные Пользователя:' ), - array( 'type' => 'list', 'items' => array( - 'Фамилия, имя, отчество.', - 'Электронный адрес.', - 'Номера телефонов.', - 'Комментарий к заказу или обращению, который Пользователь самостоятельно указывает в форме.', - ) ), - array( 'type' => 'p', 'text' => '4.2. Также на сайте происходит сбор и обработка обезличенных данных о посетителях, в том числе файлов cookie, с помощью сервисов интернет-статистики: Яндекс Метрика.' ), - array( 'type' => 'p', 'text' => '4.3. Вышеперечисленные данные далее по тексту Политики объединены общим понятием «персональные данные».' ), - ), - ), - array( - 'title' => '5. Цели обработки персональных данных', - 'items' => array( - array( 'type' => 'p', 'text' => '5.1. Цели обработки персональных данных Пользователя:' ), - array( 'type' => 'list', 'items' => array( - 'Информирование Пользователя посредством отправки электронных сообщений или сообщений в мессенджерах.', - 'Связь с Пользователем для расчета стоимости торта, уточнения состава заказа, даты, доставки и других деталей.', - 'Заключение и исполнение договоров с Пользователем.', - 'Улучшение качества сайта, его содержания и удобства использования.', - ) ), - array( 'type' => 'p', 'text' => '5.2. Оператор имеет право направлять Пользователю уведомления о продуктах, услугах, специальных предложениях и различных событиях. Пользователь может отказаться от получения информационных сообщений, направив Оператору обращение через контактные данные, указанные на сайте.' ), - array( 'type' => 'p', 'text' => '5.3. Обезличенные данные Пользователей, собираемые с помощью сервисов интернет-статистики, служат для сбора информации о действиях Пользователей на сайте, улучшения качества сайта и его содержания.' ), - ), - ), - array( - 'title' => '6. Правовые основания обработки персональных данных', - 'items' => array( - array( 'type' => 'p', 'text' => '6.1. Оператор обрабатывает персональные данные Пользователя только при наличии отдельного, явно выраженного согласия, предоставляемого Пользователем при заполнении форм на сайте. Согласие оформляется с помощью активного чекбокса в форме обратной связи.' ), - array( 'type' => 'p', 'text' => '6.2. Оператор обрабатывает обезличенные данные о Пользователе (cookie) в случае, если это разрешено в настройках браузера Пользователя и если Пользователь дал соответствующее согласие через всплывающее уведомление на сайте.' ), - ), - ), - array( - 'title' => '7. Порядок и условия обработки персональных данных', - 'items' => array( - array( 'type' => 'p', 'text' => '7.1. Оператор обеспечивает сохранность персональных данных и принимает все возможные меры, исключающие доступ к персональным данным неуполномоченных лиц.' ), - array( 'type' => 'p', 'text' => '7.2. Персональные данные Пользователя не будут переданы третьим лицам, за исключением случаев, связанных с исполнением действующего законодательства, а также случаев, необходимых для обработки заявки и связи с Пользователем.' ), - array( 'type' => 'p', 'text' => '7.3. Срок обработки персональных данных — не более 5 лет с момента последнего взаимодействия с Пользователем либо до момента отзыва согласия, если отзыв произошел раньше.' ), - array( 'type' => 'p', 'text' => '7.4. По истечении срока обработки или при отзыве согласия персональные данные подлежат уничтожению в течение 30 календарных дней, если иное не предусмотрено законом.' ), - ), - ), - array( - 'title' => '8. Права субъекта персональных данных и ответы на запросы', - 'items' => array( - array( 'type' => 'p', 'text' => '8.1. Пользователь вправе:' ), - array( 'type' => 'list', 'items' => array( - 'Получить доступ к своим персональным данным.', - 'Требовать уточнения, блокирования или уничтожения своих персональных данных.', - 'Отозвать согласие на обработку персональных данных.', - 'Обжаловать действия Оператора.', - ) ), - array( 'type' => 'p', 'text' => '8.2. Для реализации своих прав Пользователь направляет запрос Оператору через контактные данные, указанные на сайте. Оператор отвечает на запрос в течение 10 рабочих дней.' ), - ), - ), - array( - 'title' => '9. Трансграничная передача персональных данных', - 'items' => array( - array( 'type' => 'p', 'text' => '9.1. Оператор до начала осуществления трансграничной передачи персональных данных обязан убедиться в надежной защите прав субъектов персональных данных на территории иностранного государства.' ), - array( 'type' => 'p', 'text' => '9.2. Трансграничная передача персональных данных на территории иностранных государств, не отвечающих требованиям Закона, может осуществляться только при наличии письменного согласия субъекта персональных данных.' ), - array( 'type' => 'p', 'text' => '9.3. Оператор может использовать Яндекс Метрику. Обработка данных при этом осуществляется на территории РФ. Использование сервисов, влекущих трансграничную передачу персональных данных, не осуществляется без дополнительного основания, предусмотренного законом.' ), - ), - ), - array( - 'title' => '10. Заключительные положения', - 'items' => array( - array( 'type' => 'p', 'text' => '10.1. Пользователь может получить любые разъяснения по вопросам обработки его персональных данных, обратившись к Оператору через контактные данные, указанные на сайте.' ), - array( 'type' => 'p', 'text' => '10.2. В данном документе будут отражены любые изменения политики обработки персональных данных Оператором. Политика действует бессрочно до замены ее новой версией.' ), - array( 'type' => 'p', 'text' => '10.3. Актуальная версия Политики в свободном доступе расположена в сети Интернет по адресу https://sevastopol-tort.ru/politika-konfidencialnosti/.' ), - ), - ), -); - get_header(); ?>
    Документы сайта -

    Политика в отношении обработки персональных данных

    -

    Документ определяет порядок обработки персональных данных посетителей сайта https://sevastopol-tort.ru/.

    +

    +

    - -
    -

    -
    - - -
      - -
    • - -
    - -

    - - -
    -
    - +
    +

    1. Общие положения

    +

    Настоящая политика описывает порядок обработки персональных данных пользователей сайта sevastopol-tort.ru. Пользователь передает данные добровольно при отправке формы обратной связи.

    +
    +
    +

    2. Какие данные собираются

    +

    Сайт может получать имя, телефон, комментарий к заказу, технические cookie и данные, необходимые для корректной работы формы.

    +
    +
    +

    3. Цели обработки

    +

    Данные используются для связи с пользователем, расчета стоимости торта, согласования деталей заказа, улучшения работы сайта и выполнения требований закона.

    +
    +
    +

    4. Передача данных

    +

    Заявки могут передаваться в Telegram-чат администратора сайта для оперативной обработки. Данные не продаются третьим лицам.

    +
    +
    +

    5. Cookie

    +

    Сайт использует cookie для сохранения согласия с уведомлением, стабильной работы интерфейса и аналитики после ее подключения.

    +
    +
    +

    6. Отзыв согласия

    +

    Пользователь может запросить удаление или уточнение своих данных, связавшись с администратором сайта через контактные данные, указанные на странице контактов.

    +
    From fc0871ab875605ebbe3c8b98ad9cb6e1974df25c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D1=82=D0=BE=D0=BD?= Date: Sat, 4 Jul 2026 20:05:01 +0300 Subject: [PATCH 5/5] images-portfolio --- .../assets/css/layout.css | 7 + .../assets/css/policy-page.css | 32 +++- .../themes/sevastopol-tort-child/footer.php | 2 +- .../sevastopol-tort-child/functions.php | 10 ++ .../page-templates/page-policy.php | 159 +++++++++++++++--- 5 files changed, 182 insertions(+), 28 deletions(-) diff --git a/wp-content/themes/sevastopol-tort-child/assets/css/layout.css b/wp-content/themes/sevastopol-tort-child/assets/css/layout.css index 5f22a2a..d487ac3 100644 --- a/wp-content/themes/sevastopol-tort-child/assets/css/layout.css +++ b/wp-content/themes/sevastopol-tort-child/assets/css/layout.css @@ -479,6 +479,13 @@ font-size: var(--fz-sm); } +.cookie-note__link { + color: var(--color-accent-dark); + font-weight: 800; + text-decoration: underline; + text-underline-offset: 3px; +} + .cookie-note__button { min-height: 42px; border-radius: 999px; diff --git a/wp-content/themes/sevastopol-tort-child/assets/css/policy-page.css b/wp-content/themes/sevastopol-tort-child/assets/css/policy-page.css index 506caab..56d0810 100644 --- a/wp-content/themes/sevastopol-tort-child/assets/css/policy-page.css +++ b/wp-content/themes/sevastopol-tort-child/assets/css/policy-page.css @@ -54,7 +54,37 @@ line-height: 1.2; } +.policy-content__body { + display: grid; + gap: 12px; + margin-top: 16px; +} + .policy-content__text { - margin-top: 12px; + color: var(--color-muted); + line-height: 1.72; +} + +.policy-content__list { + display: grid; + gap: 8px; + list-style: none; color: var(--color-muted); } + +.policy-content__list-item { + position: relative; + padding-left: 20px; + line-height: 1.68; +} + +.policy-content__list-item::before { + position: absolute; + left: 0; + top: 0.68em; + width: 6px; + height: 6px; + border-radius: 50%; + background: var(--color-accent); + content: ""; +} diff --git a/wp-content/themes/sevastopol-tort-child/footer.php b/wp-content/themes/sevastopol-tort-child/footer.php index 5fe0d39..ddcea08 100644 --- a/wp-content/themes/sevastopol-tort-child/footer.php +++ b/wp-content/themes/sevastopol-tort-child/footer.php @@ -88,7 +88,7 @@ if ( ! defined( 'ABSPATH' ) ) { diff --git a/wp-content/themes/sevastopol-tort-child/functions.php b/wp-content/themes/sevastopol-tort-child/functions.php index 1b24a06..de50a68 100644 --- a/wp-content/themes/sevastopol-tort-child/functions.php +++ b/wp-content/themes/sevastopol-tort-child/functions.php @@ -85,6 +85,12 @@ function sev_tort_meta_tags() { $robots = ! empty( $page['indexable'] ) ? 'index, follow' : 'noindex, nofollow'; printf( '' . "\n", esc_attr( $robots ) ); + if ( 'politika-konfidencialnosti' === $page['slug'] ) { + printf( '' . "\n", esc_attr( 'Политика в отношении обработки персональных данных посетителей сайта sevastopol-tort.ru.' ) ); + printf( '' . "\n", esc_url( home_url( '/' . $page['slug'] . '/' ) ) ); + return; + } + if ( ! empty( $page['description'] ) ) { printf( '' . "\n", esc_attr( $page['description'] ) ); } @@ -100,6 +106,10 @@ function sev_tort_document_title( $title ) { return $title; } + if ( 'politika-konfidencialnosti' === $page['slug'] ) { + return 'Политика в отношении обработки персональных данных'; + } + return $page['title']; } diff --git a/wp-content/themes/sevastopol-tort-child/page-templates/page-policy.php b/wp-content/themes/sevastopol-tort-child/page-templates/page-policy.php index c8a46d5..c20d4fc 100644 --- a/wp-content/themes/sevastopol-tort-child/page-templates/page-policy.php +++ b/wp-content/themes/sevastopol-tort-child/page-templates/page-policy.php @@ -5,42 +5,149 @@ if ( ! defined( 'ABSPATH' ) ) { $page = sev_tort_current_page_config(); +$policy_sections = array( + array( + 'title' => '1. Общие положения', + 'items' => array( + array( 'type' => 'p', 'text' => 'Настоящая политика обработки персональных данных составлена в соответствии с требованиями Федерального закона от 27.07.2006 № 152-ФЗ «О персональных данных» (далее — Закон) и определяет порядок обработки персональных данных и меры по обеспечению безопасности персональных данных, предпринимаемые ИП Максимов Антон Сергеевич (далее – Оператор).' ), + array( 'type' => 'p', 'text' => '1.1. Оператор ставит своей важнейшей целью и условием осуществления своей деятельности соблюдение прав и свобод человека и гражданина при обработке его персональных данных, в том числе защиты прав на неприкосновенность частной жизни, личную и семейную тайну.' ), + array( 'type' => 'p', 'text' => '1.2. Настоящая политика Оператора в отношении обработки персональных данных (далее – Политика) применяется ко всей информации, которую Оператор может получить о посетителях веб-сайта https://sevastopol-tort.ru/.' ), + ), + ), + array( + 'title' => '2. Основные понятия, используемые в Политике', + 'items' => array( + array( 'type' => 'p', 'text' => '2.1. Автоматизированная обработка персональных данных – обработка персональных данных с помощью средств вычислительной техники.' ), + array( 'type' => 'p', 'text' => '2.2. Блокирование персональных данных – временное прекращение обработки персональных данных, за исключением случаев, если обработка необходима для уточнения персональных данных.' ), + array( 'type' => 'p', 'text' => '2.3. Веб-сайт – совокупность графических и информационных материалов, а также программ для ЭВМ и баз данных, обеспечивающих их доступность в сети интернет по сетевому адресу https://sevastopol-tort.ru/.' ), + array( 'type' => 'p', 'text' => '2.4. Информационная система персональных данных — совокупность содержащихся в базах данных персональных данных и обеспечивающих их обработку информационных технологий и технических средств.' ), + array( 'type' => 'p', 'text' => '2.5. Обезличивание персональных данных — действия, в результате которых невозможно определить без использования дополнительной информации принадлежность персональных данных конкретному Пользователю или иному субъекту персональных данных.' ), + array( 'type' => 'p', 'text' => '2.6. Обработка персональных данных – любое действие или совокупность действий, совершаемых с использованием средств автоматизации или без использования таких средств с персональными данными, включая сбор, запись, систематизацию, накопление, хранение, уточнение, извлечение, использование, передачу, обезличивание, блокирование, удаление и уничтожение персональных данных.' ), + array( 'type' => 'p', 'text' => '2.7. Оператор – государственный орган, муниципальный орган, юридическое или физическое лицо, самостоятельно или совместно с другими лицами организующие и (или) осуществляющие обработку персональных данных, а также определяющие цели обработки персональных данных, состав персональных данных, подлежащих обработке, и действия, совершаемые с персональными данными.' ), + array( 'type' => 'p', 'text' => '2.8. Персональные данные – любая информация, относящаяся прямо или косвенно к определенному или определяемому Пользователю веб-сайта https://sevastopol-tort.ru/.' ), + array( 'type' => 'p', 'text' => '2.9. Пользователь – любой посетитель веб-сайта https://sevastopol-tort.ru/.' ), + array( 'type' => 'p', 'text' => '2.10. Предоставление персональных данных – действия, направленные на раскрытие персональных данных определенному лицу или определенному кругу лиц.' ), + array( 'type' => 'p', 'text' => '2.11. Распространение персональных данных – любые действия, направленные на раскрытие персональных данных неопределенному кругу лиц или на ознакомление с персональными данными неограниченного круга лиц.' ), + array( 'type' => 'p', 'text' => '2.12. Трансграничная передача персональных данных – передача персональных данных на территорию иностранного государства органу власти иностранного государства, иностранному физическому или иностранному юридическому лицу.' ), + array( 'type' => 'p', 'text' => '2.13. Уничтожение персональных данных – любые действия, в результате которых персональные данные уничтожаются безвозвратно с невозможностью дальнейшего восстановления.' ), + ), + ), + array( + 'title' => '3. Категории субъектов персональных данных', + 'items' => array( + array( 'type' => 'p', 'text' => '3.1. Оператор обрабатывает персональные данные следующих категорий субъектов:' ), + array( 'type' => 'list', 'items' => array( + 'Пользователи веб-сайта (посетители).', + 'Лица, оставившие заявку через формы обратной связи.', + 'Лица, подписавшиеся на рассылку при наличии такой возможности на сайте.', + ) ), + ), + ), + array( + 'title' => '4. Персональные данные, обрабатываемые Оператором', + 'items' => array( + array( 'type' => 'p', 'text' => '4.1. Оператор может обрабатывать следующие персональные данные Пользователя:' ), + array( 'type' => 'list', 'items' => array( + 'Фамилия, имя, отчество.', + 'Электронный адрес.', + 'Номера телефонов.', + 'Комментарий к заказу или обращению, который Пользователь самостоятельно указывает в форме.', + ) ), + array( 'type' => 'p', 'text' => '4.2. Также на сайте происходит сбор и обработка обезличенных данных о посетителях, в том числе файлов cookie, с помощью сервисов интернет-статистики: Яндекс Метрика.' ), + array( 'type' => 'p', 'text' => '4.3. Вышеперечисленные данные далее по тексту Политики объединены общим понятием «персональные данные».' ), + ), + ), + array( + 'title' => '5. Цели обработки персональных данных', + 'items' => array( + array( 'type' => 'p', 'text' => '5.1. Цели обработки персональных данных Пользователя:' ), + array( 'type' => 'list', 'items' => array( + 'Информирование Пользователя посредством отправки электронных сообщений или сообщений в мессенджерах.', + 'Связь с Пользователем для расчета стоимости торта, уточнения состава заказа, даты, доставки и других деталей.', + 'Заключение и исполнение договоров с Пользователем.', + 'Улучшение качества сайта, его содержания и удобства использования.', + ) ), + array( 'type' => 'p', 'text' => '5.2. Оператор имеет право направлять Пользователю уведомления о продуктах, услугах, специальных предложениях и различных событиях. Пользователь может отказаться от получения информационных сообщений, направив Оператору обращение через контактные данные, указанные на сайте.' ), + array( 'type' => 'p', 'text' => '5.3. Обезличенные данные Пользователей, собираемые с помощью сервисов интернет-статистики, служат для сбора информации о действиях Пользователей на сайте, улучшения качества сайта и его содержания.' ), + ), + ), + array( + 'title' => '6. Правовые основания обработки персональных данных', + 'items' => array( + array( 'type' => 'p', 'text' => '6.1. Оператор обрабатывает персональные данные Пользователя только при наличии отдельного, явно выраженного согласия, предоставляемого Пользователем при заполнении форм на сайте. Согласие оформляется с помощью активного чекбокса в форме обратной связи.' ), + array( 'type' => 'p', 'text' => '6.2. Оператор обрабатывает обезличенные данные о Пользователе (cookie) в случае, если это разрешено в настройках браузера Пользователя и если Пользователь дал соответствующее согласие через всплывающее уведомление на сайте.' ), + ), + ), + array( + 'title' => '7. Порядок и условия обработки персональных данных', + 'items' => array( + array( 'type' => 'p', 'text' => '7.1. Оператор обеспечивает сохранность персональных данных и принимает все возможные меры, исключающие доступ к персональным данным неуполномоченных лиц.' ), + array( 'type' => 'p', 'text' => '7.2. Персональные данные Пользователя не будут переданы третьим лицам, за исключением случаев, связанных с исполнением действующего законодательства, а также случаев, необходимых для обработки заявки и связи с Пользователем.' ), + array( 'type' => 'p', 'text' => '7.3. Срок обработки персональных данных — не более 5 лет с момента последнего взаимодействия с Пользователем либо до момента отзыва согласия, если отзыв произошел раньше.' ), + array( 'type' => 'p', 'text' => '7.4. По истечении срока обработки или при отзыве согласия персональные данные подлежат уничтожению в течение 30 календарных дней, если иное не предусмотрено законом.' ), + ), + ), + array( + 'title' => '8. Права субъекта персональных данных и ответы на запросы', + 'items' => array( + array( 'type' => 'p', 'text' => '8.1. Пользователь вправе:' ), + array( 'type' => 'list', 'items' => array( + 'Получить доступ к своим персональным данным.', + 'Требовать уточнения, блокирования или уничтожения своих персональных данных.', + 'Отозвать согласие на обработку персональных данных.', + 'Обжаловать действия Оператора.', + ) ), + array( 'type' => 'p', 'text' => '8.2. Для реализации своих прав Пользователь направляет запрос Оператору через контактные данные, указанные на сайте. Оператор отвечает на запрос в течение 10 рабочих дней.' ), + ), + ), + array( + 'title' => '9. Трансграничная передача персональных данных', + 'items' => array( + array( 'type' => 'p', 'text' => '9.1. Оператор до начала осуществления трансграничной передачи персональных данных обязан убедиться в надежной защите прав субъектов персональных данных на территории иностранного государства.' ), + array( 'type' => 'p', 'text' => '9.2. Трансграничная передача персональных данных на территории иностранных государств, не отвечающих требованиям Закона, может осуществляться только при наличии письменного согласия субъекта персональных данных.' ), + array( 'type' => 'p', 'text' => '9.3. Оператор может использовать Яндекс Метрику. Обработка данных при этом осуществляется на территории РФ. Использование сервисов, влекущих трансграничную передачу персональных данных, не осуществляется без дополнительного основания, предусмотренного законом.' ), + ), + ), + array( + 'title' => '10. Заключительные положения', + 'items' => array( + array( 'type' => 'p', 'text' => '10.1. Пользователь может получить любые разъяснения по вопросам обработки его персональных данных, обратившись к Оператору через контактные данные, указанные на сайте.' ), + array( 'type' => 'p', 'text' => '10.2. В данном документе будут отражены любые изменения политики обработки персональных данных Оператором. Политика действует бессрочно до замены ее новой версией.' ), + array( 'type' => 'p', 'text' => '10.3. Актуальная версия Политики в свободном доступе расположена в сети Интернет по адресу https://sevastopol-tort.ru/politika-konfidencialnosti/.' ), + ), + ), +); + get_header(); ?>
    Документы сайта -

    -

    +

    Политика в отношении обработки персональных данных

    +

    Документ определяет порядок обработки персональных данных посетителей сайта https://sevastopol-tort.ru/.

    -
    -

    1. Общие положения

    -

    Настоящая политика описывает порядок обработки персональных данных пользователей сайта sevastopol-tort.ru. Пользователь передает данные добровольно при отправке формы обратной связи.

    -
    -
    -

    2. Какие данные собираются

    -

    Сайт может получать имя, телефон, комментарий к заказу, технические cookie и данные, необходимые для корректной работы формы.

    -
    -
    -

    3. Цели обработки

    -

    Данные используются для связи с пользователем, расчета стоимости торта, согласования деталей заказа, улучшения работы сайта и выполнения требований закона.

    -
    -
    -

    4. Передача данных

    -

    Заявки могут передаваться в Telegram-чат администратора сайта для оперативной обработки. Данные не продаются третьим лицам.

    -
    -
    -

    5. Cookie

    -

    Сайт использует cookie для сохранения согласия с уведомлением, стабильной работы интерфейса и аналитики после ее подключения.

    -
    -
    -

    6. Отзыв согласия

    -

    Пользователь может запросить удаление или уточнение своих данных, связавшись с администратором сайта через контактные данные, указанные на странице контактов.

    -
    + +
    +

    +
    + + +
      + +
    • + +
    + +

    + + +
    +
    +