Task_12281 (#1)
Co-authored-by: User A0264400 <a0264400@jarl.from.sh> Reviewed-on: #1 Co-authored-by: Anton.AE <ab.an.ev@yandex.ru> Co-committed-by: Anton.AE <ab.an.ev@yandex.ru>
This commit is contained in:
@@ -6,7 +6,16 @@
|
||||
* @package Twenty_Twenty_Four
|
||||
*/
|
||||
|
||||
get_header(); ?>
|
||||
|
||||
$test1_header_args = array(
|
||||
'body_class' => 'test1-shared-shell test1-shared-blog-page',
|
||||
'header_action_url' => function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : home_url( '/cart/' ),
|
||||
'header_action_label' => __( 'Корзина', 'twentytwentyfour' ),
|
||||
'header_mode' => 'link',
|
||||
);
|
||||
|
||||
get_header( 'test1', $test1_header_args );
|
||||
?>
|
||||
|
||||
<?php
|
||||
$show_blog_posts_image = water_delivery_get_option( 'show_blog_posts_image' );
|
||||
@@ -45,4 +54,4 @@ get_header(); ?>
|
||||
|
||||
<?php
|
||||
get_sidebar();
|
||||
get_footer();
|
||||
get_footer( 'test1' );
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
@font-face {
|
||||
font-family: "Manrope";
|
||||
font-style: normal;
|
||||
font-weight: 400 800;
|
||||
font-display: swap;
|
||||
src: url("../fonts/manrope/Manrope-cyrillic.woff2") format("woff2");
|
||||
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Manrope";
|
||||
font-style: normal;
|
||||
font-weight: 400 800;
|
||||
font-display: swap;
|
||||
src: url("../fonts/manrope/Manrope-latin.woff2") format("woff2");
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
1614
wp-content/themes/twentytwentyfour/assets/css/test1-landing.css
Normal file
1614
wp-content/themes/twentytwentyfour/assets/css/test1-landing.css
Normal file
File diff suppressed because it is too large
Load Diff
@@ -124,7 +124,7 @@
|
||||
display: grid;
|
||||
place-items: center;
|
||||
border-radius: 18px;
|
||||
background: linear-gradient(145deg, #3cc8ff, #0d4fd6);
|
||||
background: #fff;
|
||||
color: #fff;
|
||||
box-shadow: 0 14px 28px rgba(13, 79, 214, 0.24);
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
BIN
wp-content/themes/twentytwentyfour/assets/images/logo.png
Normal file
BIN
wp-content/themes/twentytwentyfour/assets/images/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 333 KiB |
BIN
wp-content/themes/twentytwentyfour/assets/images/logo.webp
Normal file
BIN
wp-content/themes/twentytwentyfour/assets/images/logo.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 116 KiB |
BIN
wp-content/themes/twentytwentyfour/assets/images/Аквалиния.png
Normal file
BIN
wp-content/themes/twentytwentyfour/assets/images/Аквалиния.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.3 MiB |
BIN
wp-content/themes/twentytwentyfour/assets/images/лого.png
Normal file
BIN
wp-content/themes/twentytwentyfour/assets/images/лого.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 757 KiB |
@@ -6,13 +6,43 @@
|
||||
return
|
||||
}
|
||||
|
||||
contactForm.addEventListener('submit', event => {
|
||||
contactForm.addEventListener('submit', async event => {
|
||||
event.preventDefault()
|
||||
contactSuccess.classList.add('visible')
|
||||
|
||||
setTimeout(() => {
|
||||
contactForm.reset()
|
||||
contactSuccess.classList.remove('visible')
|
||||
}, 2200)
|
||||
const formConfig = window.test1ContactsForm || null
|
||||
|
||||
if (!formConfig?.ajaxUrl || !formConfig?.action || !formConfig?.nonce) {
|
||||
window.alert('Форма временно недоступна. Обновите страницу и попробуйте снова.')
|
||||
return
|
||||
}
|
||||
|
||||
const formData = new window.FormData(contactForm)
|
||||
formData.append('action', formConfig.action)
|
||||
formData.append('nonce', formConfig.nonce)
|
||||
formData.append('form_type', 'contacts_page')
|
||||
formData.append('page_url', window.location.href)
|
||||
|
||||
try {
|
||||
const response = await window.fetch(formConfig.ajaxUrl, {
|
||||
method: 'POST',
|
||||
credentials: 'same-origin',
|
||||
body: formData,
|
||||
})
|
||||
|
||||
const payload = await response.json().catch(() => null)
|
||||
|
||||
if (!response.ok || !payload?.success) {
|
||||
throw new Error('submit_failed')
|
||||
}
|
||||
|
||||
contactSuccess.classList.add('visible')
|
||||
|
||||
setTimeout(() => {
|
||||
contactForm.reset()
|
||||
contactSuccess.classList.remove('visible')
|
||||
}, 2200)
|
||||
} catch (error) {
|
||||
window.alert('Не удалось отправить заявку. Попробуйте еще раз.')
|
||||
}
|
||||
})
|
||||
})()
|
||||
|
||||
216
wp-content/themes/twentytwentyfour/assets/js/test1-landing.js
Normal file
216
wp-content/themes/twentytwentyfour/assets/js/test1-landing.js
Normal file
@@ -0,0 +1,216 @@
|
||||
const mobileToggle = document.getElementById('mobileToggle')
|
||||
const mobilePanel = document.getElementById('mobilePanel')
|
||||
const modalBackdrop = document.getElementById('orderModal')
|
||||
const modalCloseButton = document.getElementById('modalCloseButton')
|
||||
const orderButtons = document.querySelectorAll('[data-open-order]')
|
||||
const faqItems = document.querySelectorAll('.faq-item')
|
||||
const orderForm = document.getElementById('orderForm')
|
||||
const contactForm = document.getElementById('contactForm')
|
||||
const orderItemsField = document.getElementById('orderItemsField')
|
||||
const orderSuccess = document.getElementById('orderSuccess')
|
||||
const contactSuccess = document.getElementById('contactSuccess')
|
||||
const modalCard = modalBackdrop?.querySelector('.modal-card')
|
||||
|
||||
let lastModalTrigger = null
|
||||
|
||||
const getFocusableElements = container => {
|
||||
if (!container) {
|
||||
return []
|
||||
}
|
||||
|
||||
return Array.from(container.querySelectorAll('a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])'))
|
||||
.filter(element => !element.hasAttribute('hidden') && !element.closest('[hidden]'))
|
||||
}
|
||||
|
||||
const focusFirstElement = container => {
|
||||
const [first] = getFocusableElements(container)
|
||||
|
||||
if (first) {
|
||||
first.focus()
|
||||
}
|
||||
}
|
||||
|
||||
const openMobileMenu = () => {
|
||||
if (!mobilePanel || !mobileToggle) {
|
||||
return
|
||||
}
|
||||
|
||||
mobilePanel.classList.add('active')
|
||||
mobileToggle.setAttribute('aria-expanded', 'true')
|
||||
document.body.classList.add('menu-open')
|
||||
}
|
||||
|
||||
const closeMobileMenu = () => {
|
||||
if (!mobilePanel || !mobileToggle) {
|
||||
return
|
||||
}
|
||||
|
||||
mobilePanel.classList.remove('active')
|
||||
mobileToggle.setAttribute('aria-expanded', 'false')
|
||||
document.body.classList.remove('menu-open')
|
||||
}
|
||||
|
||||
const openModal = triggerElement => {
|
||||
if (!modalBackdrop) {
|
||||
return
|
||||
}
|
||||
|
||||
lastModalTrigger = triggerElement || document.activeElement
|
||||
|
||||
if (orderItemsField) {
|
||||
orderItemsField.value = ''
|
||||
}
|
||||
|
||||
modalBackdrop.classList.add('open')
|
||||
modalBackdrop.setAttribute('aria-hidden', 'false')
|
||||
document.body.classList.add('modal-open')
|
||||
focusFirstElement(modalCard)
|
||||
}
|
||||
|
||||
const closeModal = () => {
|
||||
if (!modalBackdrop) {
|
||||
return
|
||||
}
|
||||
|
||||
const shouldRestoreFocus = modalBackdrop.classList.contains('open')
|
||||
|
||||
modalBackdrop.classList.remove('open')
|
||||
modalBackdrop.setAttribute('aria-hidden', 'true')
|
||||
document.body.classList.remove('modal-open')
|
||||
|
||||
if (shouldRestoreFocus && lastModalTrigger && typeof lastModalTrigger.focus === 'function') {
|
||||
lastModalTrigger.focus()
|
||||
}
|
||||
|
||||
lastModalTrigger = null
|
||||
}
|
||||
|
||||
const submitLeadForm = (formElement, successElement, formType, onSuccess) => {
|
||||
if (!formElement || !successElement) {
|
||||
return
|
||||
}
|
||||
|
||||
formElement.addEventListener('submit', async event => {
|
||||
event.preventDefault()
|
||||
|
||||
const leadFormConfig = window.test1LeadForm || null
|
||||
|
||||
if (!leadFormConfig?.ajaxUrl || !leadFormConfig?.action || !leadFormConfig?.nonce) {
|
||||
window.alert('Форма временно недоступна. Обновите страницу и попробуйте снова.')
|
||||
return
|
||||
}
|
||||
|
||||
const formData = new window.FormData(formElement)
|
||||
formData.append('action', leadFormConfig.action)
|
||||
formData.append('nonce', leadFormConfig.nonce)
|
||||
formData.append('form_type', formType)
|
||||
formData.append('page_url', window.location.href)
|
||||
|
||||
try {
|
||||
const response = await window.fetch(leadFormConfig.ajaxUrl, {
|
||||
method: 'POST',
|
||||
credentials: 'same-origin',
|
||||
body: formData,
|
||||
})
|
||||
|
||||
const payload = await response.json().catch(() => null)
|
||||
|
||||
if (!response.ok || !payload?.success) {
|
||||
throw new Error('submit_failed')
|
||||
}
|
||||
|
||||
successElement.classList.add('visible')
|
||||
if (typeof onSuccess === 'function') {
|
||||
onSuccess()
|
||||
}
|
||||
|
||||
setTimeout(() => {
|
||||
formElement.reset()
|
||||
successElement.classList.remove('visible')
|
||||
}, 2200)
|
||||
} catch (error) {
|
||||
window.alert('Не удалось отправить заявку. Попробуйте еще раз.')
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if (mobileToggle && mobilePanel) {
|
||||
mobileToggle.addEventListener('click', () => {
|
||||
const isOpen = mobilePanel.classList.contains('active')
|
||||
|
||||
if (isOpen) {
|
||||
closeMobileMenu()
|
||||
return
|
||||
}
|
||||
|
||||
openMobileMenu()
|
||||
})
|
||||
|
||||
document.querySelectorAll('.mobile-nav a').forEach(link => {
|
||||
link.addEventListener('click', closeMobileMenu)
|
||||
})
|
||||
}
|
||||
|
||||
orderButtons.forEach(button => {
|
||||
button.addEventListener('click', () => openModal(button))
|
||||
})
|
||||
|
||||
if (modalCloseButton) {
|
||||
modalCloseButton.addEventListener('click', closeModal)
|
||||
}
|
||||
|
||||
if (modalBackdrop) {
|
||||
modalBackdrop.addEventListener('click', event => {
|
||||
if (event.target === modalBackdrop) {
|
||||
closeModal()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
faqItems.forEach(item => {
|
||||
const trigger = item.querySelector('.faq-question')
|
||||
const answer = item.querySelector('.faq-answer')
|
||||
|
||||
if (!trigger || !answer) {
|
||||
return
|
||||
}
|
||||
|
||||
trigger.addEventListener('click', () => {
|
||||
const isOpen = item.classList.contains('open')
|
||||
|
||||
faqItems.forEach(entry => {
|
||||
const entryTrigger = entry.querySelector('.faq-question')
|
||||
const entryAnswer = entry.querySelector('.faq-answer')
|
||||
|
||||
entry.classList.remove('open')
|
||||
entryTrigger?.setAttribute('aria-expanded', 'false')
|
||||
|
||||
if (entryAnswer) {
|
||||
entryAnswer.hidden = true
|
||||
}
|
||||
})
|
||||
|
||||
if (!isOpen) {
|
||||
item.classList.add('open')
|
||||
trigger.setAttribute('aria-expanded', 'true')
|
||||
answer.hidden = false
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
submitLeadForm(orderForm, orderSuccess, 'landing_order', () => {
|
||||
setTimeout(() => {
|
||||
closeModal()
|
||||
}, 700)
|
||||
})
|
||||
|
||||
submitLeadForm(contactForm, contactSuccess, 'landing_contacts')
|
||||
|
||||
document.addEventListener('keydown', event => {
|
||||
if (event.key !== 'Escape') {
|
||||
return
|
||||
}
|
||||
|
||||
closeModal()
|
||||
closeMobileMenu()
|
||||
})
|
||||
12
wp-content/themes/twentytwentyfour/footer-test1.php
Normal file
12
wp-content/themes/twentytwentyfour/footer-test1.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
/**
|
||||
* Custom footer for the test1 main page template.
|
||||
*
|
||||
* @package Twenty_Twenty_Four
|
||||
*/
|
||||
|
||||
require get_theme_file_path( 'template-parts/test1-shared-footer.php' );
|
||||
wp_footer();
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
@@ -400,7 +400,7 @@ function twentytwentyfour_shop_template( $template ) {
|
||||
add_filter( 'template_include', 'twentytwentyfour_shop_template', 20 );
|
||||
|
||||
/**
|
||||
* Use a standalone PHP template for the posts page (/blog).
|
||||
* Force the custom blog index template for the posts page.
|
||||
*
|
||||
* @since Twenty Twenty-Four 1.0
|
||||
*
|
||||
@@ -420,17 +420,17 @@ function twentytwentyfour_blog_home_template( $template ) {
|
||||
|
||||
return $template;
|
||||
}
|
||||
add_filter( 'template_include', 'twentytwentyfour_blog_home_template', 30 );
|
||||
add_filter( 'template_include', 'twentytwentyfour_blog_home_template', 25 );
|
||||
|
||||
/**
|
||||
* Use a standalone PHP template for single blog posts.
|
||||
* Force the custom single post template.
|
||||
*
|
||||
* @since Twenty Twenty-Four 1.0
|
||||
*
|
||||
* @param string $template Resolved template path.
|
||||
* @return string
|
||||
*/
|
||||
function twentytwentyfour_blog_single_template( $template ) {
|
||||
function twentytwentyfour_single_post_template( $template ) {
|
||||
if ( ! is_singular( 'post' ) ) {
|
||||
return $template;
|
||||
}
|
||||
@@ -443,7 +443,7 @@ function twentytwentyfour_blog_single_template( $template ) {
|
||||
|
||||
return $template;
|
||||
}
|
||||
add_filter( 'template_include', 'twentytwentyfour_blog_single_template', 30 );
|
||||
add_filter( 'template_include', 'twentytwentyfour_single_post_template', 25 );
|
||||
|
||||
/**
|
||||
* Enqueue standalone landing assets for the page slug "test1".
|
||||
@@ -458,8 +458,9 @@ function twentytwentyfour_test1_assets() {
|
||||
return;
|
||||
}
|
||||
|
||||
$css_file = ABSPATH . 'index3.css';
|
||||
$js_file = ABSPATH . 'index3.js';
|
||||
$landing_css_file = get_theme_file_path( 'assets/css/test1-landing.css' );
|
||||
$landing_js_file = get_theme_file_path( 'assets/js/test1-landing.js' );
|
||||
$landing_fonts_file = get_theme_file_path( 'assets/css/fonts-manrope.css' );
|
||||
|
||||
if ( $use_test1_assets ) {
|
||||
wp_dequeue_style( 'global-styles' );
|
||||
@@ -468,42 +469,43 @@ function twentytwentyfour_test1_assets() {
|
||||
wp_dequeue_style( 'classic-theme-styles' );
|
||||
}
|
||||
|
||||
wp_enqueue_style(
|
||||
'twentytwentyfour-test1-fonts',
|
||||
'https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;700;800&display=swap',
|
||||
array(),
|
||||
null
|
||||
);
|
||||
|
||||
if ( file_exists( $css_file ) ) {
|
||||
if ( file_exists( $landing_fonts_file ) ) {
|
||||
wp_enqueue_style(
|
||||
'twentytwentyfour-test1-style',
|
||||
home_url( '/index3.css' ),
|
||||
array( 'twentytwentyfour-test1-fonts' ),
|
||||
(string) filemtime( $css_file )
|
||||
'twentytwentyfour-test1-fonts',
|
||||
get_theme_file_uri( 'assets/css/fonts-manrope.css' ),
|
||||
array(),
|
||||
(string) filemtime( $landing_fonts_file )
|
||||
);
|
||||
}
|
||||
|
||||
if ( ( is_front_page() || is_page( 'test1' ) ) && file_exists( $js_file ) ) {
|
||||
if ( file_exists( $landing_css_file ) ) {
|
||||
wp_enqueue_style(
|
||||
'twentytwentyfour-test1-style',
|
||||
get_theme_file_uri( 'assets/css/test1-landing.css' ),
|
||||
array( 'twentytwentyfour-test1-fonts' ),
|
||||
(string) filemtime( $landing_css_file )
|
||||
);
|
||||
}
|
||||
|
||||
if ( ( is_front_page() || is_page( 'test1' ) ) && file_exists( $landing_js_file ) ) {
|
||||
wp_enqueue_script(
|
||||
'twentytwentyfour-test1-script',
|
||||
home_url( '/index3.js' ),
|
||||
get_theme_file_uri( 'assets/js/test1-landing.js' ),
|
||||
array(),
|
||||
(string) filemtime( $js_file ),
|
||||
(string) filemtime( $landing_js_file ),
|
||||
true
|
||||
);
|
||||
|
||||
if ( class_exists( 'WooCommerce' ) ) {
|
||||
wp_localize_script(
|
||||
'twentytwentyfour-test1-script',
|
||||
'test1WooCommerce',
|
||||
array(
|
||||
'addToCartUrl' => WC_AJAX::get_endpoint( 'add_to_cart' ),
|
||||
'cartUrl' => wc_get_cart_url(),
|
||||
'checkoutUrl' => wc_get_checkout_url(),
|
||||
)
|
||||
);
|
||||
}
|
||||
wp_localize_script(
|
||||
'twentytwentyfour-test1-script',
|
||||
'test1LeadForm',
|
||||
array(
|
||||
'ajaxUrl' => admin_url( 'admin-ajax.php' ),
|
||||
'action' => 'twentytwentyfour_submit_lead',
|
||||
'nonce' => wp_create_nonce( 'twentytwentyfour_submit_lead' ),
|
||||
)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
if ( is_page( 'faq' ) ) {
|
||||
@@ -531,12 +533,251 @@ function twentytwentyfour_test1_assets() {
|
||||
(string) filemtime( $contacts_js_file ),
|
||||
true
|
||||
);
|
||||
|
||||
wp_localize_script(
|
||||
'twentytwentyfour-test1-contacts-script',
|
||||
'test1ContactsForm',
|
||||
array(
|
||||
'ajaxUrl' => admin_url( 'admin-ajax.php' ),
|
||||
'action' => 'twentytwentyfour_submit_lead',
|
||||
'nonce' => wp_create_nonce( 'twentytwentyfour_submit_lead' ),
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
add_action( 'wp_enqueue_scripts', 'twentytwentyfour_test1_assets', 100 );
|
||||
|
||||
/**
|
||||
* Trim non-critical WooCommerce frontend assets on the custom homepage.
|
||||
*
|
||||
* @since Twenty Twenty-Four 1.0
|
||||
* @return void
|
||||
*/
|
||||
function twentytwentyfour_optimize_front_page_assets() {
|
||||
if ( is_admin() || ! is_front_page() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$style_handles = array(
|
||||
'woocommerce-layout',
|
||||
'woocommerce-smallscreen',
|
||||
'woocommerce-general',
|
||||
'woocommerce-blocktheme',
|
||||
'wc-blocks-style',
|
||||
);
|
||||
|
||||
foreach ( $style_handles as $handle ) {
|
||||
wp_dequeue_style( $handle );
|
||||
}
|
||||
|
||||
wp_deregister_script( 'jquery-migrate' );
|
||||
|
||||
global $wp_scripts;
|
||||
|
||||
if ( $wp_scripts instanceof WP_Scripts && isset( $wp_scripts->registered['jquery'] ) ) {
|
||||
$wp_scripts->registered['jquery']->deps = array_diff( $wp_scripts->registered['jquery']->deps, array( 'jquery-migrate' ) );
|
||||
}
|
||||
}
|
||||
add_action( 'wp_enqueue_scripts', 'twentytwentyfour_optimize_front_page_assets', 120 );
|
||||
|
||||
/**
|
||||
* Send a formatted message to Telegram.
|
||||
*
|
||||
* Configure credentials in wp-config.php:
|
||||
* define( 'TWENTYTWENTYFOUR_TELEGRAM_BOT_TOKEN', '...' );
|
||||
* define( 'TWENTYTWENTYFOUR_TELEGRAM_CHAT_ID', '...' );
|
||||
*
|
||||
* @param string $title Message title.
|
||||
* @param array $fields Key-value pairs for message rows.
|
||||
* @return bool
|
||||
*/
|
||||
function twentytwentyfour_send_telegram_message( $title, $fields ) {
|
||||
$token = defined( 'TWENTYTWENTYFOUR_TELEGRAM_BOT_TOKEN' ) ? (string) constant( 'TWENTYTWENTYFOUR_TELEGRAM_BOT_TOKEN' ) : '';
|
||||
$chat_id = defined( 'TWENTYTWENTYFOUR_TELEGRAM_CHAT_ID' ) ? (string) constant( 'TWENTYTWENTYFOUR_TELEGRAM_CHAT_ID' ) : '';
|
||||
|
||||
if ( '' === trim( $token ) || '' === trim( $chat_id ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$rows = array();
|
||||
$rows[] = '<b>' . esc_html( wp_strip_all_tags( (string) $title ) ) . '</b>';
|
||||
|
||||
foreach ( $fields as $label => $value ) {
|
||||
$clean_value = trim( wp_strip_all_tags( (string) $value ) );
|
||||
|
||||
if ( '' === $clean_value ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$rows[] = '<b>' . esc_html( wp_strip_all_tags( (string) $label ) ) . ':</b> ' . esc_html( $clean_value );
|
||||
}
|
||||
|
||||
$response = wp_remote_post(
|
||||
'https://api.telegram.org/bot' . rawurlencode( $token ) . '/sendMessage',
|
||||
array(
|
||||
'timeout' => 12,
|
||||
'body' => array(
|
||||
'chat_id' => $chat_id,
|
||||
'parse_mode' => 'HTML',
|
||||
'text' => implode( "\n", $rows ),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
if ( is_wp_error( $response ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$status_code = (int) wp_remote_retrieve_response_code( $response );
|
||||
|
||||
return $status_code >= 200 && $status_code < 300;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle AJAX lead submissions from landing and contacts forms.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function twentytwentyfour_submit_lead_ajax() {
|
||||
if ( ! check_ajax_referer( 'twentytwentyfour_submit_lead', 'nonce', false ) ) {
|
||||
wp_send_json_error( array( 'message' => __( 'Ошибка проверки формы. Обновите страницу и попробуйте снова.', 'twentytwentyfour' ) ), 403 );
|
||||
}
|
||||
|
||||
$form_type = isset( $_POST['form_type'] ) ? sanitize_key( wp_unslash( $_POST['form_type'] ) ) : 'contacts_page';
|
||||
$page_url = isset( $_POST['page_url'] ) ? esc_url_raw( wp_unslash( $_POST['page_url'] ) ) : '';
|
||||
|
||||
if ( 'contacts' === $form_type ) {
|
||||
$form_type = false !== strpos( $page_url, '/contacts' ) ? 'contacts_page' : 'landing_contacts';
|
||||
}
|
||||
|
||||
if ( 'landing_order' === $form_type ) {
|
||||
$name = isset( $_POST['customerName'] ) ? sanitize_text_field( wp_unslash( $_POST['customerName'] ) ) : '';
|
||||
$phone = isset( $_POST['customerPhone'] ) ? sanitize_text_field( wp_unslash( $_POST['customerPhone'] ) ) : '';
|
||||
$address = isset( $_POST['customerAddress'] ) ? sanitize_text_field( wp_unslash( $_POST['customerAddress'] ) ) : '';
|
||||
$type = isset( $_POST['customerType'] ) ? sanitize_text_field( wp_unslash( $_POST['customerType'] ) ) : '';
|
||||
$comment = isset( $_POST['customerOrder'] ) ? sanitize_textarea_field( wp_unslash( $_POST['customerOrder'] ) ) : '';
|
||||
|
||||
if ( '' === $name || '' === $phone ) {
|
||||
wp_send_json_error( array( 'message' => __( 'Укажите имя и телефон.', 'twentytwentyfour' ) ), 422 );
|
||||
}
|
||||
|
||||
$sent = twentytwentyfour_send_telegram_message(
|
||||
'Новая заявка с главной страницы (модалка заказа)',
|
||||
array(
|
||||
'Имя' => $name,
|
||||
'Телефон' => $phone,
|
||||
'Адрес' => $address,
|
||||
'Тип' => $type,
|
||||
'Комментарий' => $comment,
|
||||
'Источник' => 'Главная страница (модалка заказа)',
|
||||
'URL' => $page_url,
|
||||
)
|
||||
);
|
||||
} elseif ( 'landing_contacts' === $form_type ) {
|
||||
$name = isset( $_POST['name'] ) ? sanitize_text_field( wp_unslash( $_POST['name'] ) ) : '';
|
||||
$phone = isset( $_POST['phone'] ) ? sanitize_text_field( wp_unslash( $_POST['phone'] ) ) : '';
|
||||
$address = isset( $_POST['address'] ) ? sanitize_text_field( wp_unslash( $_POST['address'] ) ) : '';
|
||||
$comment = isset( $_POST['comment'] ) ? sanitize_textarea_field( wp_unslash( $_POST['comment'] ) ) : '';
|
||||
|
||||
if ( '' === $name || '' === $phone ) {
|
||||
wp_send_json_error( array( 'message' => __( 'Укажите имя и телефон.', 'twentytwentyfour' ) ), 422 );
|
||||
}
|
||||
|
||||
$sent = twentytwentyfour_send_telegram_message(
|
||||
'Новая заявка с главной страницы (контактная форма)',
|
||||
array(
|
||||
'Имя' => $name,
|
||||
'Телефон' => $phone,
|
||||
'Адрес' => $address,
|
||||
'Комментарий' => $comment,
|
||||
'Источник' => 'Главная страница (блок Контакты)',
|
||||
'URL' => $page_url,
|
||||
)
|
||||
);
|
||||
} else {
|
||||
$name = isset( $_POST['name'] ) ? sanitize_text_field( wp_unslash( $_POST['name'] ) ) : '';
|
||||
$phone = isset( $_POST['phone'] ) ? sanitize_text_field( wp_unslash( $_POST['phone'] ) ) : '';
|
||||
$address = isset( $_POST['address'] ) ? sanitize_text_field( wp_unslash( $_POST['address'] ) ) : '';
|
||||
$comment = isset( $_POST['comment'] ) ? sanitize_textarea_field( wp_unslash( $_POST['comment'] ) ) : '';
|
||||
|
||||
if ( '' === $name || '' === $phone ) {
|
||||
wp_send_json_error( array( 'message' => __( 'Укажите имя и телефон.', 'twentytwentyfour' ) ), 422 );
|
||||
}
|
||||
|
||||
$sent = twentytwentyfour_send_telegram_message(
|
||||
'Новая заявка со страницы Контакты',
|
||||
array(
|
||||
'Имя' => $name,
|
||||
'Телефон' => $phone,
|
||||
'Адрес' => $address,
|
||||
'Комментарий' => $comment,
|
||||
'Источник' => 'Страница Контакты',
|
||||
'URL' => $page_url,
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
if ( ! $sent ) {
|
||||
wp_send_json_error( array( 'message' => __( 'Не удалось отправить заявку. Проверьте настройки Telegram.', 'twentytwentyfour' ) ), 500 );
|
||||
}
|
||||
|
||||
wp_send_json_success( array( 'message' => __( 'Спасибо! Заявка принята.', 'twentytwentyfour' ) ) );
|
||||
}
|
||||
add_action( 'wp_ajax_twentytwentyfour_submit_lead', 'twentytwentyfour_submit_lead_ajax' );
|
||||
add_action( 'wp_ajax_nopriv_twentytwentyfour_submit_lead', 'twentytwentyfour_submit_lead_ajax' );
|
||||
|
||||
/**
|
||||
* Send WooCommerce checkout orders to Telegram.
|
||||
*
|
||||
* @param int $order_id Order ID.
|
||||
* @param array $posted_data Checkout payload.
|
||||
* @param WC_Order $order Order object.
|
||||
* @return void
|
||||
*/
|
||||
function twentytwentyfour_send_checkout_order_to_telegram( $order_id, $posted_data, $order ) {
|
||||
if ( ! $order instanceof WC_Order ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$items = array();
|
||||
|
||||
foreach ( $order->get_items() as $item ) {
|
||||
if ( ! $item instanceof WC_Order_Item_Product ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$items[] = sprintf( '%s x %d', $item->get_name(), (int) $item->get_quantity() );
|
||||
}
|
||||
|
||||
$address_parts = array_filter(
|
||||
array(
|
||||
$order->get_billing_city(),
|
||||
$order->get_billing_address_1(),
|
||||
(string) get_post_meta( $order_id, '_billing_house', true ),
|
||||
(string) get_post_meta( $order_id, '_billing_flat', true ),
|
||||
(string) get_post_meta( $order_id, '_billing_entrance_floor', true ),
|
||||
)
|
||||
);
|
||||
|
||||
$fields = array(
|
||||
'Заказ' => '#' . $order->get_order_number(),
|
||||
'Имя' => $order->get_billing_first_name(),
|
||||
'Телефон' => $order->get_billing_phone(),
|
||||
'Адрес' => implode( ', ', $address_parts ),
|
||||
'Когда доставить' => (string) get_post_meta( $order_id, '_tw_delivery_day', true ),
|
||||
'Интервал' => (string) get_post_meta( $order_id, '_tw_delivery_time', true ),
|
||||
'Обмен тары' => (string) get_post_meta( $order_id, '_tw_bottle_exchange', true ),
|
||||
'Комментарий' => $order->get_customer_note(),
|
||||
'Состав' => implode( '; ', $items ),
|
||||
'Сумма' => wp_strip_all_tags( $order->get_formatted_order_total() ),
|
||||
);
|
||||
|
||||
twentytwentyfour_send_telegram_message( 'Новый заказ с сайта', $fields );
|
||||
}
|
||||
add_action( 'woocommerce_checkout_order_processed', 'twentytwentyfour_send_checkout_order_to_telegram', 20, 3 );
|
||||
|
||||
/**
|
||||
* Enqueue shared test1 header/footer styles for cart and checkout.
|
||||
*
|
||||
@@ -549,13 +790,16 @@ function twentytwentyfour_test1_shared_shell_assets() {
|
||||
}
|
||||
|
||||
$shared_shell_css = get_theme_file_path( 'assets/css/test1-shared-shell.css' );
|
||||
$landing_fonts_file = get_theme_file_path( 'assets/css/fonts-manrope.css' );
|
||||
|
||||
wp_enqueue_style(
|
||||
'twentytwentyfour-test1-fonts',
|
||||
'https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;700;800&display=swap',
|
||||
array(),
|
||||
null
|
||||
);
|
||||
if ( file_exists( $landing_fonts_file ) ) {
|
||||
wp_enqueue_style(
|
||||
'twentytwentyfour-test1-fonts',
|
||||
get_theme_file_uri( 'assets/css/fonts-manrope.css' ),
|
||||
array(),
|
||||
(string) filemtime( $landing_fonts_file )
|
||||
);
|
||||
}
|
||||
|
||||
if ( file_exists( $shared_shell_css ) ) {
|
||||
wp_enqueue_style(
|
||||
|
||||
38
wp-content/themes/twentytwentyfour/header-test1.php
Normal file
38
wp-content/themes/twentytwentyfour/header-test1.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
/**
|
||||
* Custom header for the test1 main page template.
|
||||
*
|
||||
* @package Twenty_Twenty_Four
|
||||
*/
|
||||
|
||||
$args = wp_parse_args(
|
||||
is_array( $args ) ? $args : array(),
|
||||
array(
|
||||
'body_class' => 'test1-landing-page',
|
||||
'header_mode' => 'cart',
|
||||
'header_action_url' => '',
|
||||
'header_action_label' => '',
|
||||
)
|
||||
);
|
||||
|
||||
$body_class = $args['body_class'];
|
||||
|
||||
if ( is_string( $body_class ) ) {
|
||||
$body_class = trim( $body_class );
|
||||
}
|
||||
|
||||
?><!DOCTYPE html>
|
||||
<html <?php language_attributes(); ?>>
|
||||
<head>
|
||||
<meta charset="<?php bloginfo( 'charset' ); ?>">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<?php wp_head(); ?>
|
||||
</head>
|
||||
<body <?php body_class( $body_class ); ?>>
|
||||
<?php wp_body_open(); ?>
|
||||
<?php
|
||||
$test1_header_mode = $args['header_mode'];
|
||||
$test1_header_action_url = $args['header_action_url'];
|
||||
$test1_header_action_label = $args['header_action_label'];
|
||||
require get_theme_file_path( 'template-parts/test1-shared-header.php' );
|
||||
?>
|
||||
@@ -16,16 +16,16 @@ if ( '' === trim( wp_strip_all_tags( $blog_intro ) ) ) {
|
||||
$test1_header_action_url = function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : home_url( '/cart/' );
|
||||
$test1_header_action_label = __( 'Корзина', 'twentytwentyfour' );
|
||||
$test1_header_mode = 'link';
|
||||
?><!DOCTYPE html>
|
||||
<html <?php language_attributes(); ?>>
|
||||
<head>
|
||||
<meta charset="<?php bloginfo( 'charset' ); ?>">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<?php wp_head(); ?>
|
||||
</head>
|
||||
<body <?php body_class( 'test1-shared-shell test1-shared-blog-page' ); ?>>
|
||||
<?php wp_body_open(); ?>
|
||||
<?php require get_theme_file_path( 'template-parts/test1-shared-header.php' ); ?>
|
||||
|
||||
$test1_header_args = array(
|
||||
'body_class' => 'test1-shared-shell test1-shared-blog-page',
|
||||
'header_action_url' => $test1_header_action_url,
|
||||
'header_action_label' => $test1_header_action_label,
|
||||
'header_mode' => $test1_header_mode,
|
||||
);
|
||||
|
||||
get_header( 'test1', $test1_header_args );
|
||||
?>
|
||||
|
||||
<main class="site-main" role="main">
|
||||
<section class="section blog-hero" aria-labelledby="blog-page-title">
|
||||
@@ -100,7 +100,5 @@ $test1_header_mode = 'link';
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<?php require get_theme_file_path( 'template-parts/test1-shared-footer.php' ); ?>
|
||||
<?php wp_footer(); ?>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
get_footer( 'test1' );
|
||||
|
||||
@@ -5,21 +5,15 @@
|
||||
* @package Twenty_Twenty_Four
|
||||
*/
|
||||
|
||||
?><!DOCTYPE html>
|
||||
<html <?php language_attributes(); ?>>
|
||||
<head>
|
||||
<meta charset="<?php bloginfo( 'charset' ); ?>">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<?php wp_head(); ?>
|
||||
</head>
|
||||
<body <?php body_class( 'test1-shared-shell test1-shared-cart-page' ); ?>>
|
||||
<?php wp_body_open(); ?>
|
||||
<?php
|
||||
$test1_header_action_url = function_exists( 'wc_get_checkout_url' ) ? wc_get_checkout_url() : '';
|
||||
$test1_header_action_label = __( 'Оформление', 'twentytwentyfour' );
|
||||
$test1_header_mode = 'link';
|
||||
require get_theme_file_path( 'template-parts/test1-shared-header.php' );
|
||||
?>
|
||||
$test1_header_args = array(
|
||||
'body_class' => 'test1-shared-shell test1-shared-cart-page',
|
||||
'header_action_url' => function_exists( 'wc_get_checkout_url' ) ? wc_get_checkout_url() : '',
|
||||
'header_action_label' => __( 'Оформление', 'twentytwentyfour' ),
|
||||
'header_mode' => 'link',
|
||||
);
|
||||
|
||||
get_header( 'test1', $test1_header_args );
|
||||
?>
|
||||
|
||||
<main class="site-main" role="main">
|
||||
<div class="container checkout-content-container">
|
||||
@@ -32,7 +26,5 @@
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<?php require get_theme_file_path( 'template-parts/test1-shared-footer.php' ); ?>
|
||||
<?php wp_footer(); ?>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
get_footer( 'test1' );
|
||||
|
||||
@@ -5,21 +5,15 @@
|
||||
* @package Twenty_Twenty_Four
|
||||
*/
|
||||
|
||||
?><!DOCTYPE html>
|
||||
<html <?php language_attributes(); ?>>
|
||||
<head>
|
||||
<meta charset="<?php bloginfo( 'charset' ); ?>">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<?php wp_head(); ?>
|
||||
</head>
|
||||
<body <?php body_class( 'test1-shared-shell test1-shared-checkout-page' ); ?>>
|
||||
<?php wp_body_open(); ?>
|
||||
<?php
|
||||
$test1_header_action_url = function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : '';
|
||||
$test1_header_action_label = __( 'Корзина', 'twentytwentyfour' );
|
||||
$test1_header_mode = 'link';
|
||||
require get_theme_file_path( 'template-parts/test1-shared-header.php' );
|
||||
?>
|
||||
$test1_header_args = array(
|
||||
'body_class' => 'test1-shared-shell test1-shared-checkout-page',
|
||||
'header_action_url' => function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : '',
|
||||
'header_action_label' => __( 'Корзина', 'twentytwentyfour' ),
|
||||
'header_mode' => 'link',
|
||||
);
|
||||
|
||||
get_header( 'test1', $test1_header_args );
|
||||
?>
|
||||
|
||||
<main class="site-main" role="main">
|
||||
<div class="container checkout-content-container">
|
||||
@@ -32,7 +26,5 @@
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<?php require get_theme_file_path( 'template-parts/test1-shared-footer.php' ); ?>
|
||||
<?php wp_footer(); ?>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
get_footer( 'test1' );
|
||||
|
||||
@@ -5,21 +5,15 @@
|
||||
* @package Twenty_Twenty_Four
|
||||
*/
|
||||
|
||||
?><!DOCTYPE html>
|
||||
<html <?php language_attributes(); ?>>
|
||||
<head>
|
||||
<meta charset="<?php bloginfo( 'charset' ); ?>">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<?php wp_head(); ?>
|
||||
</head>
|
||||
<body <?php body_class( 'test1-shared-shell test1-shared-contacts-page' ); ?>>
|
||||
<?php wp_body_open(); ?>
|
||||
<?php
|
||||
$test1_header_action_url = function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : home_url( '/cart/' );
|
||||
$test1_header_action_label = __( 'Корзина', 'twentytwentyfour' );
|
||||
$test1_header_mode = 'link';
|
||||
require get_theme_file_path( 'template-parts/test1-shared-header.php' );
|
||||
?>
|
||||
$test1_header_args = array(
|
||||
'body_class' => 'test1-shared-shell test1-shared-contacts-page',
|
||||
'header_action_url' => function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : home_url( '/cart/' ),
|
||||
'header_action_label' => __( 'Корзина', 'twentytwentyfour' ),
|
||||
'header_mode' => 'link',
|
||||
);
|
||||
|
||||
get_header( 'test1', $test1_header_args );
|
||||
?>
|
||||
|
||||
<main class="site-main" role="main">
|
||||
<section class="section" id="contacts">
|
||||
@@ -37,7 +31,7 @@
|
||||
<h3><?php esc_html_e( 'Контактные данные', 'twentytwentyfour' ); ?></h3>
|
||||
<ul class="contact-list">
|
||||
<li><strong><?php esc_html_e( 'Телефон:', 'twentytwentyfour' ); ?></strong> <a href="tel:+79117748923">+7 (911) 774-89-23</a></li>
|
||||
<li><strong><?php esc_html_e( 'Адрес:', 'twentytwentyfour' ); ?></strong> <?php esc_html_e( 'г. Севастополь, ул. Генерала Острякова, 92', 'twentytwentyfour' ); ?></li>
|
||||
<li><strong><?php esc_html_e( 'Адрес:', 'twentytwentyfour' ); ?></strong> <?php esc_html_e( 'г. Севастополь, ул. Шевченко, 13', 'twentytwentyfour' ); ?></li>
|
||||
<li><strong><?php esc_html_e( 'График:', 'twentytwentyfour' ); ?></strong> <?php esc_html_e( 'ежедневно с 8:00 до 21:00', 'twentytwentyfour' ); ?></li>
|
||||
<li><strong><?php esc_html_e( 'E-mail:', 'twentytwentyfour' ); ?></strong> <a href="mailto:sygorenkomisha17@gmail.com">sygorenkomisha17@gmail.com</a></li>
|
||||
</ul>
|
||||
@@ -82,7 +76,5 @@
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<?php require get_theme_file_path( 'template-parts/test1-shared-footer.php' ); ?>
|
||||
<?php wp_footer(); ?>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
get_footer( 'test1' );
|
||||
|
||||
@@ -5,21 +5,15 @@
|
||||
* @package Twenty_Twenty_Four
|
||||
*/
|
||||
|
||||
?><!DOCTYPE html>
|
||||
<html <?php language_attributes(); ?>>
|
||||
<head>
|
||||
<meta charset="<?php bloginfo( 'charset' ); ?>">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<?php wp_head(); ?>
|
||||
</head>
|
||||
<body <?php body_class( 'test1-shared-shell test1-shared-delivery-page' ); ?>>
|
||||
<?php wp_body_open(); ?>
|
||||
<?php
|
||||
$test1_header_action_url = function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : home_url( '/cart/' );
|
||||
$test1_header_action_label = __( 'Корзина', 'twentytwentyfour' );
|
||||
$test1_header_mode = 'link';
|
||||
require get_theme_file_path( 'template-parts/test1-shared-header.php' );
|
||||
?>
|
||||
$test1_header_args = array(
|
||||
'body_class' => 'test1-shared-shell test1-shared-delivery-page',
|
||||
'header_action_url' => function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : home_url( '/cart/' ),
|
||||
'header_action_label' => __( 'Корзина', 'twentytwentyfour' ),
|
||||
'header_mode' => 'link',
|
||||
);
|
||||
|
||||
get_header( 'test1', $test1_header_args );
|
||||
?>
|
||||
|
||||
<main class="site-main" role="main">
|
||||
<section class="section" id="delivery">
|
||||
@@ -27,9 +21,9 @@
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Условия доставки</span>
|
||||
<h1 class="section-title">Доставка воды по районам Севастополя</h1>
|
||||
<h1 class="section-title">Условия доставки воды в Севастополе: районы, интервалы и сервис</h1>
|
||||
</div>
|
||||
<p class="section-copy">Привозим заказы в удобные интервалы и заранее подтверждаем маршрут. Работаем для дома, офиса, кафе и коммерческих объектов без сложного оформления.</p>
|
||||
<p class="section-copy">На этой странице собрали практическую информацию по доставке: куда и когда привозим воду, как подтверждаем заказ, что влияет на сроки и как работает возвратная тара.</p>
|
||||
</div>
|
||||
|
||||
<div class="delivery-grid">
|
||||
@@ -39,25 +33,25 @@
|
||||
<div class="product-row">
|
||||
<div>
|
||||
<strong>Зоны доставки</strong>
|
||||
<span>Гагаринский, Ленинский, Нахимовский, Балаклава, Камышовая бухта, Остряки, Стрелецкая</span>
|
||||
<span>Работаем по основным районам Севастополя: Гагаринский, Ленинский, Нахимовский, Балаклава и прилегающие кварталы по маршруту</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-row">
|
||||
<div>
|
||||
<strong>Время доставки</strong>
|
||||
<span>Ежедневно с 8:00 до 21:00, срочные окна по возможности в день обращения</span>
|
||||
<span>Ежедневно с 8:00 до 21:00. По активным маршрутам можем предложить ближайшее окно в день обращения</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-row">
|
||||
<div>
|
||||
<strong>Минимальный заказ</strong>
|
||||
<span>От 1 бутыли 19 л или от 500 ₽ для малых форматов</span>
|
||||
<span>От 1 бутыли 19 л. Для небольших форматов действует минимальная сумма 500 ₽</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-row">
|
||||
<div>
|
||||
<strong>Возвратная тара</strong>
|
||||
<span>Пустые бутыли забираем при следующей доставке или при отдельном выезде по согласованию</span>
|
||||
<span>Пустые бутыли забираем при следующем визите курьера. Отдельный выезд согласовываем заранее</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -65,7 +59,7 @@
|
||||
|
||||
<div class="delivery-map reveal reveal-delay-1" aria-label="Информация о маршрутах доставки">
|
||||
<span class="eyebrow eyebrow-inverse">Активные маршруты</span>
|
||||
<h3 class="section-heading-compact section-heading-delivery">Заказать воду на дом или в офис можно по всему городу</h3>
|
||||
<h3 class="section-heading-compact section-heading-delivery">Доставка на дом и в офис доступна по всему городу</h3>
|
||||
<div class="zones">
|
||||
<span class="zone-card">Гагаринский район</span>
|
||||
<span class="zone-card">Ленинский район</span>
|
||||
@@ -76,15 +70,15 @@
|
||||
<div class="delivery-highlights">
|
||||
<article class="delivery-highlight-card">
|
||||
<strong>Ближайшее окно</strong>
|
||||
<span>Сегодня с 12:00 до 14:00, подтверждаем время заранее.</span>
|
||||
<span>Проверяем расписание по району и предлагаем ближайший интервал, который реально выполнить.</span>
|
||||
</article>
|
||||
<article class="delivery-highlight-card">
|
||||
<strong>Быстрое подтверждение</strong>
|
||||
<span>Связываемся в течение 15 минут в рабочее время.</span>
|
||||
<span>Обычно подтверждаем заявку в течение 15 минут в рабочее время.</span>
|
||||
</article>
|
||||
<article class="delivery-highlight-card">
|
||||
<strong>Сервис на месте</strong>
|
||||
<span>Подъем воды, замена бутыли и вывоз пустой тары по запросу.</span>
|
||||
<span>Курьер поднимает воду, меняет бутыль в кулере и забирает пустую тару по согласованию.</span>
|
||||
</article>
|
||||
<a class="button delivery-cta" href="<?php echo esc_url( home_url( '/#catalog' ) ); ?>">Перейти к заказу воды</a>
|
||||
</div>
|
||||
@@ -98,38 +92,67 @@
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Как проходит доставка</span>
|
||||
<h2 class="section-title">Четыре шага от заявки до доставки</h2>
|
||||
<h2 class="section-title">Как проходит заказ: от заявки до передачи воды</h2>
|
||||
</div>
|
||||
<p class="section-copy">Процесс остается коротким: вы оставляете заявку, мы подтверждаем детали и привозим воду в согласованное окно.</p>
|
||||
<p class="section-copy">Процесс остается коротким и прозрачным: вы оставляете заявку, мы уточняем детали и привозим заказ в заранее подтвержденный интервал.</p>
|
||||
</div>
|
||||
|
||||
<div class="steps-grid">
|
||||
<article class="step-card reveal">
|
||||
<div class="step-number">1</div>
|
||||
<h3>Оставьте заявку</h3>
|
||||
<p>Выберите удобный канал: сайт, телефон или e-mail. Укажите объем и адрес.</p>
|
||||
<p>Оформите заказ на сайте или по телефону: укажите адрес, район, объем воды и удобное время.</p>
|
||||
</article>
|
||||
<article class="step-card reveal reveal-delay-1">
|
||||
<div class="step-number">2</div>
|
||||
<h3>Подтвердите заказ</h3>
|
||||
<p>Оператор уточнит район, время, подъем на этаж и вопрос с возвратной тарой.</p>
|
||||
<p>Менеджер подтвердит интервал, уточнит детали по подъему, возвратной таре и способу оплаты.</p>
|
||||
</article>
|
||||
<article class="step-card reveal reveal-delay-2">
|
||||
<div class="step-number">3</div>
|
||||
<h3>Ожидайте курьера</h3>
|
||||
<p>Привозим в согласованный интервал и предупреждаем, если нужно скорректировать время.</p>
|
||||
<p>Курьер приезжает в согласованное окно. Если на маршруте задержка, заранее предупреждаем и переносим время.</p>
|
||||
</article>
|
||||
<article class="step-card reveal reveal-delay-3">
|
||||
<div class="step-number">4</div>
|
||||
<h3>Получите воду</h3>
|
||||
<p>Курьер поможет с выгрузкой, заменой бутыли и при необходимости заберет пустую тару.</p>
|
||||
<p>Передаем заказ, при необходимости ставим бутыль в кулер и забираем пустую тару для следующего цикла.</p>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="delivery-factors">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Практика</span>
|
||||
<h2 class="section-title">Что влияет на скорость и удобство доставки</h2>
|
||||
</div>
|
||||
<p class="section-copy">Чтобы заказ приехал в точный интервал, важно заранее учесть несколько деталей. Они помогают сократить согласование и ускоряют выдачу на месте.</p>
|
||||
</div>
|
||||
|
||||
<div class="promo-grid">
|
||||
<article class="promo-card highlight reveal">
|
||||
<h3>Точный адрес и ориентир</h3>
|
||||
<p>Укажите подъезд, этаж и код домофона. Для сложных адресов добавьте ориентир, чтобы курьер быстрее нашел вход.</p>
|
||||
</article>
|
||||
<article class="promo-card reveal reveal-delay-1">
|
||||
<h3>Готовность тары к обмену</h3>
|
||||
<p>Если меняете бутыли 19 л, подготовьте пустую тару заранее. Это ускоряет передачу заказа и снижает время на адресе.</p>
|
||||
</article>
|
||||
<article class="promo-card reveal reveal-delay-2">
|
||||
<h3>Оптимальный объем</h3>
|
||||
<p>Лучше заказать с небольшим запасом, чем ждать срочную доставку в час пик. Мы поможем рассчитать подходящий объем под ваш график.</p>
|
||||
</article>
|
||||
<article class="promo-card reveal reveal-delay-3">
|
||||
<h3>Контакт для подтверждения</h3>
|
||||
<p>Оставьте номер, по которому можно быстро связаться в день доставки. Это позволяет оперативно согласовать любые изменения.</p>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<?php require get_theme_file_path( 'template-parts/test1-shared-footer.php' ); ?>
|
||||
<?php wp_footer(); ?>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
get_footer( 'test1' );
|
||||
|
||||
@@ -5,103 +5,187 @@
|
||||
* @package Twenty_Twenty_Four
|
||||
*/
|
||||
|
||||
?><!DOCTYPE html>
|
||||
<html <?php language_attributes(); ?>>
|
||||
<head>
|
||||
<meta charset="<?php bloginfo( 'charset' ); ?>">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<?php wp_head(); ?>
|
||||
</head>
|
||||
<body <?php body_class( 'test1-shared-shell test1-shared-faq-page' ); ?>>
|
||||
<?php wp_body_open(); ?>
|
||||
<?php
|
||||
$test1_header_action_url = function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : home_url( '/cart/' );
|
||||
$test1_header_action_label = __( 'Корзина', 'twentytwentyfour' );
|
||||
$test1_header_mode = 'link';
|
||||
require get_theme_file_path( 'template-parts/test1-shared-header.php' );
|
||||
?>
|
||||
$test1_header_args = array(
|
||||
'body_class' => 'test1-shared-shell test1-shared-faq-page',
|
||||
'header_action_url' => function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : home_url( '/cart/' ),
|
||||
'header_action_label' => __( 'Корзина', 'twentytwentyfour' ),
|
||||
'header_mode' => 'link',
|
||||
);
|
||||
|
||||
get_header( 'test1', $test1_header_args );
|
||||
?>
|
||||
|
||||
<main class="site-main" role="main">
|
||||
<section class="section" id="faq">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow"><?php esc_html_e( 'FAQ', 'twentytwentyfour' ); ?></span>
|
||||
<h1 class="section-title"><?php esc_html_e( 'Частые вопросы о доставке воды в Севастополе', 'twentytwentyfour' ); ?></h1>
|
||||
<span class="eyebrow">FAQ</span>
|
||||
<h1 class="section-title">Частые вопросы о доставке воды в Севастополе</h1>
|
||||
</div>
|
||||
<p class="section-copy"><?php esc_html_e( 'Собрали ответы на основные вопросы по доставке воды, оплате, таре и срокам, чтобы оформить заказ было проще и быстрее.', 'twentytwentyfour' ); ?></p>
|
||||
<p class="section-copy">Здесь собрали подробные ответы по срокам доставки, оплате, возвратной таре, первому заказу и корпоративному обслуживанию. Если не нашли нужный вопрос, менеджер подскажет по телефону за несколько минут.</p>
|
||||
</div>
|
||||
|
||||
<div class="promo-grid">
|
||||
<article class="promo-card highlight reveal">
|
||||
<h3>Для новых клиентов</h3>
|
||||
<p>Подскажем, какой объем выбрать на первый заказ, как работает возврат тары и в какой интервал удобнее принять доставку.</p>
|
||||
</article>
|
||||
<article class="promo-card reveal reveal-delay-1">
|
||||
<h3>Для постоянных заказов</h3>
|
||||
<p>Поможем настроить регулярный график, чтобы вода не заканчивалась в середине недели и не приходилось заказывать в последний момент.</p>
|
||||
</article>
|
||||
<article class="promo-card reveal reveal-delay-2">
|
||||
<h3>Для офисов и команд</h3>
|
||||
<p>Есть безналичный расчет, выставление счета и закрывающие документы. График поставок можно закрепить на будни.</p>
|
||||
</article>
|
||||
<article class="promo-card reveal reveal-delay-3">
|
||||
<h3>По качеству воды</h3>
|
||||
<p>Используем артезианскую воду, контролируем розлив и санитарную обработку тары. По запросу предоставляем информацию о сертификации.</p>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="faq-list">
|
||||
<article class="faq-item reveal open">
|
||||
<button class="faq-question" id="faq-question-1" aria-expanded="true" aria-controls="faq-answer-1">
|
||||
<span><?php esc_html_e( 'Как быстро вы привозите воду по Севастополю?', 'twentytwentyfour' ); ?></span>
|
||||
<span>Как быстро вы привозите воду по Севастополю?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-1" role="region" aria-labelledby="faq-question-1"><?php esc_html_e( 'Обычно доставка воды в Севастополе занимает от 2 до 4 часов в пределах активных маршрутов. При высокой загрузке мы предлагаем ближайший удобный интервал и обязательно подтверждаем его по телефону.', 'twentytwentyfour' ); ?></div>
|
||||
<div class="faq-answer" id="faq-answer-1" role="region" aria-labelledby="faq-question-1">В среднем доставка занимает от 2 до 4 часов в пределах активных маршрутов. Точный интервал зависит от района и текущей загрузки. Перед выездом мы всегда подтверждаем время, чтобы вы не ждали без понимания сроков.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal reveal-delay-1">
|
||||
<button class="faq-question" id="faq-question-2" aria-expanded="false" aria-controls="faq-answer-2">
|
||||
<span><?php esc_html_e( 'Какие способы оплаты доступны?', 'twentytwentyfour' ); ?></span>
|
||||
<span>Какие способы оплаты доступны для дома и офиса?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-2" role="region" aria-labelledby="faq-question-2" hidden><?php esc_html_e( 'Принимаем наличные, оплату картой при получении, перевод по номеру телефона и безналичный расчет для компаний. Для офисов можем выставить счет.', 'twentytwentyfour' ); ?></div>
|
||||
<div class="faq-answer" id="faq-answer-2" role="region" aria-labelledby="faq-question-2" hidden>Для частных заказов доступны наличные, перевод и оплата по карте при получении. Для компаний и офисов работает безналичный расчет, счет и закрывающие документы для бухгалтерии.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal reveal-delay-2">
|
||||
<button class="faq-question" id="faq-question-3" aria-expanded="false" aria-controls="faq-answer-3">
|
||||
<span><?php esc_html_e( 'Нужен ли залог за бутыль 19 литров?', 'twentytwentyfour' ); ?></span>
|
||||
<span>Нужен ли залог за бутыль 19 литров при первом заказе?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-3" role="region" aria-labelledby="faq-question-3" hidden><?php esc_html_e( 'Если у вас нет своей тары, при первом заказе может взиматься возвратный депозит за бутыль. При возврате тары депозит учитывается в следующих заказах.', 'twentytwentyfour' ); ?></div>
|
||||
<div class="faq-answer" id="faq-answer-3" role="region" aria-labelledby="faq-question-3" hidden>Если у вас нет своей тары, на первый заказ может действовать возвратный депозит за бутыль. При обмене или возврате тары сумма учитывается в следующих заказах по согласованным условиям.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal reveal-delay-3">
|
||||
<button class="faq-question" id="faq-question-4" aria-expanded="false" aria-controls="faq-answer-4">
|
||||
<span><?php esc_html_e( 'Как часто лучше заказывать воду домой?', 'twentytwentyfour' ); ?></span>
|
||||
<span>Как часто лучше заказывать воду домой?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-4" role="region" aria-labelledby="faq-question-4" hidden><?php esc_html_e( 'Для семьи из 2-4 человек обычно достаточно заказа 2-4 бутылей 19 литров раз в 1-2 недели. Точный график зависит от потребления и наличия кулера.', 'twentytwentyfour' ); ?></div>
|
||||
<div class="faq-answer" id="faq-answer-4" role="region" aria-labelledby="faq-question-4" hidden>Для семьи из 2-4 человек обычно достаточно 2-4 бутылей 19 л раз в 1-2 недели. Если дома часто готовят или есть дети, расход выше. Мы можем предложить стартовый объем и скорректировать его после первой поставки.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal">
|
||||
<button class="faq-question" id="faq-question-5" aria-expanded="false" aria-controls="faq-answer-5">
|
||||
<span><?php esc_html_e( 'Откуда поступает вода и как контролируется качество?', 'twentytwentyfour' ); ?></span>
|
||||
<span>Откуда поступает вода и как контролируется качество?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-5" role="region" aria-labelledby="faq-question-5" hidden><?php esc_html_e( 'Мы используем артезианскую воду из защищенного источника, проводим фильтрацию, санитарную обработку тары и регулярный лабораторный контроль. По запросу предоставляем информацию о сертификатах качества.', 'twentytwentyfour' ); ?></div>
|
||||
<div class="faq-answer" id="faq-answer-5" role="region" aria-labelledby="faq-question-5" hidden>Вода поступает из артезианского источника, проходит подготовку и контроль перед розливом. Отдельно контролируем санитарную обработку возвратной тары. По запросу предоставляем документы о качестве и актуальные сведения по сертификации.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal reveal-delay-1">
|
||||
<button class="faq-question" id="faq-question-6" aria-expanded="false" aria-controls="faq-answer-6">
|
||||
<span><?php esc_html_e( 'Можно ли оформить доставку воды в офис?', 'twentytwentyfour' ); ?></span>
|
||||
<span>Можно ли оформить регулярную доставку воды в офис?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-6" role="region" aria-labelledby="faq-question-6" hidden><?php esc_html_e( 'Да, мы регулярно обслуживаем офисы, кафе, фитнес-клубы, студии и медицинские кабинеты. Настраиваем график, безнал и объем под ваш режим работы.', 'twentytwentyfour' ); ?></div>
|
||||
<div class="faq-answer" id="faq-answer-6" role="region" aria-labelledby="faq-question-6" hidden>Да. Мы обслуживаем офисы, салоны, студии и небольшие коммерческие объекты. Можно закрепить график на будни, настроить безналичную оплату и согласовать объем под фактический расход команды.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal reveal-delay-2">
|
||||
<button class="faq-question" id="faq-question-7" aria-expanded="false" aria-controls="faq-answer-7">
|
||||
<span><?php esc_html_e( 'Какой минимальный заказ действует для доставки?', 'twentytwentyfour' ); ?></span>
|
||||
<span>Какой минимальный заказ действует для доставки?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-7" role="region" aria-labelledby="faq-question-7" hidden><?php esc_html_e( 'Для воды 19 литров можно заказать от одной бутыли. Для небольших упаковок минимальная сумма заказа составляет 500 ₽, чтобы доставка оставалась быстрой и выгодной.', 'twentytwentyfour' ); ?></div>
|
||||
<div class="faq-answer" id="faq-answer-7" role="region" aria-labelledby="faq-question-7" hidden>Для воды 19 л можно оформить доставку от одной бутыли. Для малых форматов действует минимальная сумма 500 ₽. Если сомневаетесь по объему, менеджер подскажет, как собрать заказ без переплаты.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal reveal-delay-3">
|
||||
<button class="faq-question" id="faq-question-8" aria-expanded="false" aria-controls="faq-answer-8">
|
||||
<span><?php esc_html_e( 'Что делать с пустыми бутылками после использования?', 'twentytwentyfour' ); ?></span>
|
||||
<span>Что делать с пустыми бутылками после использования?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-8" role="region" aria-labelledby="faq-question-8" hidden><?php esc_html_e( 'Сохраните пустые бутыли до следующего визита курьера. Мы заберем их при следующей доставке или согласуем отдельный выезд при крупном заказе.', 'twentytwentyfour' ); ?></div>
|
||||
<div class="faq-answer" id="faq-answer-8" role="region" aria-labelledby="faq-question-8" hidden>Сохраните пустую тару до следующей доставки. Курьер заберет бутыли при обмене. Если нужна отдельная сдача тары, согласуем выезд заранее с учетом маршрута.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal">
|
||||
<button class="faq-question" id="faq-question-9" aria-expanded="false" aria-controls="faq-answer-9">
|
||||
<span>Можно ли перенести время доставки, если планы изменились?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-9" role="region" aria-labelledby="faq-question-9" hidden>Да, перенос возможен. Чем раньше вы сообщите об изменениях, тем проще подобрать новый интервал в тот же день. При плотной загрузке предложим ближайшее доступное окно.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal reveal-delay-1">
|
||||
<button class="faq-question" id="faq-question-10" aria-expanded="false" aria-controls="faq-answer-10">
|
||||
<span>Работаете ли вы в выходные и праздничные дни?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-10" role="region" aria-labelledby="faq-question-10" hidden>Доставка выполняется ежедневно по графику компании. В праздничные дни режим может меняться, поэтому лучше оформить заказ заранее или уточнить ближайшие интервалы у менеджера.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal reveal-delay-2">
|
||||
<button class="faq-question" id="faq-question-11" aria-expanded="false" aria-controls="faq-answer-11">
|
||||
<span>Можно ли заказать воду сразу в нескольких форматах?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-11" role="region" aria-labelledby="faq-question-11" hidden>Да, в одном заказе можно объединить 19 л для кулера, 5 л для кухни и малые бутылки для дороги или гостей. Такой формат часто выбирают семьи и офисы, чтобы закрыть разные сценарии потребления.</div>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "FAQPage",
|
||||
"mainEntity": [
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "Как быстро вы привозите воду по Севастополю?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "В среднем доставка занимает от 2 до 4 часов в пределах активных маршрутов. Точный интервал зависит от района и текущей загрузки. Перед выездом мы подтверждаем время доставки."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "Какие способы оплаты доступны для дома и офиса?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "Для частных заказов доступны наличные, перевод и оплата картой при получении. Для компаний и офисов работает безналичный расчет, счет и закрывающие документы."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "Нужен ли залог за бутыль 19 литров при первом заказе?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "Если у клиента нет своей тары, на первый заказ может действовать возвратный депозит за бутыль. При обмене или возврате тары сумма учитывается в следующих заказах."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "Какой минимальный заказ действует для доставки?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "Для воды 19 литров минимальный заказ составляет одну бутыль. Для малых форматов действует минимальная сумма заказа 500 рублей."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "Что делать с пустыми бутылками после использования?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "Пустую тару нужно сохранить до следующей доставки. Курьер забирает бутыли при обмене, а отдельный выезд согласовывается заранее."
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
</script>
|
||||
</main>
|
||||
|
||||
<?php require get_theme_file_path( 'template-parts/test1-shared-footer.php' ); ?>
|
||||
<?php wp_footer(); ?>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
get_footer( 'test1' );
|
||||
|
||||
@@ -5,21 +5,15 @@
|
||||
* @package Twenty_Twenty_Four
|
||||
*/
|
||||
|
||||
?><!DOCTYPE html>
|
||||
<html <?php language_attributes(); ?>>
|
||||
<head>
|
||||
<meta charset="<?php bloginfo( 'charset' ); ?>">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<?php wp_head(); ?>
|
||||
</head>
|
||||
<body <?php body_class( 'test1-shared-shell test1-shared-service-page' ); ?>>
|
||||
<?php wp_body_open(); ?>
|
||||
<?php
|
||||
$test1_header_action_url = function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : home_url( '/cart/' );
|
||||
$test1_header_action_label = __( 'Корзина', 'twentytwentyfour' );
|
||||
$test1_header_mode = 'link';
|
||||
require get_theme_file_path( 'template-parts/test1-shared-header.php' );
|
||||
?>
|
||||
$test1_header_args = array(
|
||||
'body_class' => 'test1-shared-shell test1-shared-service-page',
|
||||
'header_action_url' => function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : home_url( '/cart/' ),
|
||||
'header_action_label' => __( 'Корзина', 'twentytwentyfour' ),
|
||||
'header_mode' => 'link',
|
||||
);
|
||||
|
||||
get_header( 'test1', $test1_header_args );
|
||||
?>
|
||||
|
||||
<main class="site-main" role="main">
|
||||
<section class="section" id="service">
|
||||
@@ -27,36 +21,36 @@
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Для дома и офиса</span>
|
||||
<h1 class="section-title">Два сценария сервиса, одна стабильная доставка</h1>
|
||||
<h1 class="section-title">Доставка воды для дома и офиса: под разные задачи и ритм</h1>
|
||||
</div>
|
||||
<p class="section-copy">Мы разделили формат обслуживания, чтобы вам было проще выбрать подходящий режим: регулярные поставки для офиса или гибкая доставка воды для дома.</p>
|
||||
<p class="section-copy">У домашнего заказа и корпоративного обслуживания разные требования к объему, графику и документам. Поэтому мы собрали отдельные сценарии: для семьи, офиса, кафе и небольших команд в Севастополе.</p>
|
||||
</div>
|
||||
|
||||
<div class="segments-grid">
|
||||
<article class="segment-card reveal">
|
||||
<span class="eyebrow">Доставка воды на дом</span>
|
||||
<h3>Комфортный домашний запас без лишней тяжести</h3>
|
||||
<p>Подходит для семей, молодых родителей, пожилых клиентов и тех, кто не хочет тратить время на покупку воды в магазине.</p>
|
||||
<h3>Спокойный домашний запас без лишних поездок и переноски</h3>
|
||||
<p>Подходит семьям, молодым родителям и тем, кто не хочет носить тяжелые бутыли из магазина. Вы выбираете удобный интервал, а курьер поднимает воду до двери и помогает с установкой.</p>
|
||||
<ul class="segment-list">
|
||||
<li>Удобные интервалы утром, днем и вечером</li>
|
||||
<li>Подъем на этаж и помощь с установкой</li>
|
||||
<li>Небольшие форматы и вода 19 литров с доставкой</li>
|
||||
<li>Напоминание о повторном заказе</li>
|
||||
<li>Доставка утром, днем или вечером по согласованному окну</li>
|
||||
<li>Подъем на этаж, замена бутыли и вывоз пустой тары</li>
|
||||
<li>Форматы 19 л, 5 л и малые бутылки под ежедневное потребление</li>
|
||||
<li>Напоминание о повторном заказе, если вода заканчивается регулярно</li>
|
||||
</ul>
|
||||
<div class="segment-meta">Часто выбирают: 2 бутыли 19 л + вода 5 л для кухни</div>
|
||||
<div class="segment-meta">Частый сценарий: 2-3 бутыли 19 л на 7-10 дней + 5 л для кухни и дороги</div>
|
||||
</article>
|
||||
|
||||
<article class="segment-card featured reveal reveal-delay-1">
|
||||
<span class="eyebrow eyebrow-inverse">Доставка воды в офис</span>
|
||||
<h3>Регулярные поставки для команд, переговорных и клиентских зон</h3>
|
||||
<p>Офисам, салонам, кафе, фитнес-клубам и студиям нужен предсказуемый сервис. Мы строим график так, чтобы запас воды не заканчивался в рабочие часы.</p>
|
||||
<h3>Регулярные поставки для сотрудников, гостей и переговорных</h3>
|
||||
<p>Офисам, салонам и коммерческим объектам важна стабильность: чтобы вода была в наличии, а поставки не мешали работе. Мы настраиваем график под загрузку команды и пиковые часы.</p>
|
||||
<ul class="segment-list">
|
||||
<li>Безналичная оплата и закрывающие документы</li>
|
||||
<li>Автодоставка воды по графику</li>
|
||||
<li>Приоритетные интервалы на будни</li>
|
||||
<li>Комбинированные заказы для кулеров и гостей</li>
|
||||
<li>Безнал, счет и закрывающие документы для бухгалтерии</li>
|
||||
<li>Регулярная автодоставка по фиксированным дням</li>
|
||||
<li>Приоритетные интервалы в будни для офисных маршрутов</li>
|
||||
<li>Комбинированные поставки: 19 л для кулера и форматы для гостей</li>
|
||||
</ul>
|
||||
<div class="segment-meta">Часто выбирают: 6-12 бутылей 19 л в неделю + минеральная вода для переговорных</div>
|
||||
<div class="segment-meta">Частый сценарий: 4-10 бутылей 19 л в неделю + вода 0.5/1.5 л для переговорных и мероприятий</div>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
@@ -67,27 +61,27 @@
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Преимущества</span>
|
||||
<h2 class="section-title">Сервис, который удобно масштабировать</h2>
|
||||
<h2 class="section-title">Почему с нами удобно работать на постоянной основе</h2>
|
||||
</div>
|
||||
<p class="section-copy">Независимо от типа клиента мы сохраняем единый стандарт качества воды, прозрачные условия и предсказуемую логистику.</p>
|
||||
<p class="section-copy">Мы строим сервис так, чтобы вам не приходилось заново объяснять детали в каждом заказе: фиксируем привычный объем, удобный интервал и нюансы по таре.</p>
|
||||
</div>
|
||||
|
||||
<div class="promo-grid">
|
||||
<article class="promo-card highlight reveal">
|
||||
<h3>Гибкий график</h3>
|
||||
<p>Подстраиваем доставку под ваш ритм: от разовых заказов до регулярной автодоставки.</p>
|
||||
<h3>Гибкий график без лишних звонков</h3>
|
||||
<p>Можно заказывать разово или перейти на регулярный режим. Если меняется ритм потребления, быстро корректируем дату и объем.</p>
|
||||
</article>
|
||||
<article class="promo-card reveal reveal-delay-1">
|
||||
<h3>Единый поставщик</h3>
|
||||
<p>Можно закрыть все потребности сразу: 19 литров, малые форматы, питьевая и минеральная вода.</p>
|
||||
<h3>Один поставщик под все форматы</h3>
|
||||
<p>Закрываем сразу несколько задач: вода 19 л для кулеров, компактные объемы для кухни, минеральная вода для гостей и встреч.</p>
|
||||
</article>
|
||||
<article class="promo-card reveal reveal-delay-2">
|
||||
<h3>Прозрачные условия</h3>
|
||||
<p>Без скрытых доплат: заранее согласуем время, тару, подъем и дополнительные услуги.</p>
|
||||
<h3>Прозрачные условия и понятная стоимость</h3>
|
||||
<p>До подтверждения заказа уточняем все детали: интервал, этаж, лифт, возврат тары и состав поставки. Без скрытых пунктов после доставки.</p>
|
||||
</article>
|
||||
<article class="promo-card reveal reveal-delay-3">
|
||||
<h3>Поддержка клиентов</h3>
|
||||
<p>Быстро отвечаем по телефону и e-mail, помогаем скорректировать объем и график без лишней бюрократии.</p>
|
||||
<h3>Поддержка в рабочем ритме</h3>
|
||||
<p>Быстро отвечаем по телефону и в мессенджере, помогаем изменить график, добавить позиции и перенести доставку без сложных согласований.</p>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
@@ -97,9 +91,42 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="service-scenarios">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Как выбрать формат</span>
|
||||
<h2 class="section-title">Ориентиры по объему и частоте поставок</h2>
|
||||
</div>
|
||||
<p class="section-copy">Чтобы вода не заканчивалась в неудобный момент, ориентируйтесь на потребление и частоту присутствия людей дома или в офисе. Ниже базовые сценарии, с которых обычно начинают.</p>
|
||||
</div>
|
||||
|
||||
<div class="steps-grid">
|
||||
<article class="step-card reveal">
|
||||
<div class="step-number">1</div>
|
||||
<h3>Дом: 2-3 человека</h3>
|
||||
<p>Обычно хватает 2 бутылей 19 л на 7-10 дней. Если дома часто готовят, добавляют 5-литровый формат как резерв.</p>
|
||||
</article>
|
||||
<article class="step-card reveal reveal-delay-1">
|
||||
<div class="step-number">2</div>
|
||||
<h3>Дом: семья с детьми</h3>
|
||||
<p>Чаще выбирают 3-4 бутыли 19 л раз в неделю или каждые 10 дней. Удобно подключать напоминание о следующем заказе.</p>
|
||||
</article>
|
||||
<article class="step-card reveal reveal-delay-2">
|
||||
<div class="step-number">3</div>
|
||||
<h3>Офис: до 15 сотрудников</h3>
|
||||
<p>Стартуют с 4-6 бутылей 19 л в неделю и корректируют объем по фактическому расходу. Для встреч добавляют воду 0.5 л.</p>
|
||||
</article>
|
||||
<article class="step-card reveal reveal-delay-3">
|
||||
<div class="step-number">4</div>
|
||||
<h3>Офис: 20+ сотрудников</h3>
|
||||
<p>Оптимален регулярный график 2-3 раза в неделю с закрепленным интервалом и ответственным контактом для подтверждения поставки.</p>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<?php require get_theme_file_path( 'template-parts/test1-shared-footer.php' ); ?>
|
||||
<?php wp_footer(); ?>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
get_footer( 'test1' );
|
||||
|
||||
@@ -5,21 +5,15 @@
|
||||
* @package Twenty_Twenty_Four
|
||||
*/
|
||||
|
||||
?><!DOCTYPE html>
|
||||
<html <?php language_attributes(); ?>>
|
||||
<head>
|
||||
<meta charset="<?php bloginfo( 'charset' ); ?>">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<?php wp_head(); ?>
|
||||
</head>
|
||||
<body <?php body_class( 'test1-shared-shell test1-shared-shop-page' ); ?>>
|
||||
<?php wp_body_open(); ?>
|
||||
<?php
|
||||
$test1_header_action_url = function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : home_url( '/cart/' );
|
||||
$test1_header_action_label = __( 'Корзина', 'twentytwentyfour' );
|
||||
$test1_header_mode = 'link';
|
||||
require get_theme_file_path( 'template-parts/test1-shared-header.php' );
|
||||
?>
|
||||
$test1_header_args = array(
|
||||
'body_class' => 'test1-shared-shell test1-shared-shop-page',
|
||||
'header_action_url' => function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : home_url( '/cart/' ),
|
||||
'header_action_label' => __( 'Корзина', 'twentytwentyfour' ),
|
||||
'header_mode' => 'link',
|
||||
);
|
||||
|
||||
get_header( 'test1', $test1_header_args );
|
||||
?>
|
||||
|
||||
<main class="site-main" role="main">
|
||||
<div class="container">
|
||||
@@ -27,7 +21,5 @@
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<?php require get_theme_file_path( 'template-parts/test1-shared-footer.php' ); ?>
|
||||
<?php wp_footer(); ?>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
get_footer( 'test1' );
|
||||
|
||||
@@ -50,6 +50,8 @@ function twentytwentyfour_test1_catalog_markup() {
|
||||
if ( '' === $volume ) {
|
||||
$volume = __( 'Товар', 'twentytwentyfour' );
|
||||
}
|
||||
$add_to_cart_url = $product->add_to_cart_url();
|
||||
$add_to_cart_text = $product->add_to_cart_text();
|
||||
?>
|
||||
<article class="catalog-card reveal<?php echo esc_attr( $delay_class ); ?>">
|
||||
<?php if ( $image_html ) : ?>
|
||||
@@ -66,14 +68,18 @@ function twentytwentyfour_test1_catalog_markup() {
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="card-price"><strong><?php echo esc_html( $price ); ?></strong></div>
|
||||
<button
|
||||
class="mini-button add-to-cart"
|
||||
data-product-id="<?php echo esc_attr( (string) $product->get_id() ); ?>"
|
||||
data-name="<?php echo esc_attr( $product->get_name() ); ?>"
|
||||
data-volume="<?php echo esc_attr( $volume ); ?>"
|
||||
data-price="<?php echo esc_attr( (string) wc_get_price_to_display( $product ) ); ?>"
|
||||
type="button"
|
||||
><?php esc_html_e( 'Добавить в корзину', 'twentytwentyfour' ); ?></button>
|
||||
<?php if ( $product->is_purchasable() && $product->is_in_stock() ) : ?>
|
||||
<a
|
||||
class="mini-button add_to_cart_button product_type_<?php echo esc_attr( $product->get_type() ); ?>"
|
||||
href="<?php echo esc_url( $add_to_cart_url ); ?>"
|
||||
data-product_id="<?php echo esc_attr( (string) $product->get_id() ); ?>"
|
||||
data-quantity="1"
|
||||
rel="nofollow"
|
||||
aria-label="<?php echo esc_attr( sprintf( __( 'Добавить в корзину: %s', 'twentytwentyfour' ), $product->get_name() ) ); ?>"
|
||||
><?php echo esc_html( $add_to_cart_text ); ?></a>
|
||||
<?php else : ?>
|
||||
<a class="mini-button" href="<?php echo esc_url( get_permalink( $product->get_id() ) ); ?>"><?php esc_html_e( 'Подробнее', 'twentytwentyfour' ); ?></a>
|
||||
<?php endif; ?>
|
||||
</article>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
@@ -82,24 +88,98 @@ function twentytwentyfour_test1_catalog_markup() {
|
||||
return (string) ob_get_clean();
|
||||
}
|
||||
|
||||
$landing_file = ABSPATH . 'index3.html';
|
||||
$landing_html = file_exists( $landing_file ) ? file_get_contents( $landing_file ) : false;
|
||||
get_header( 'test1' );
|
||||
?>
|
||||
<main id="top">
|
||||
<section class="hero">
|
||||
<div class="container">
|
||||
<div class="hero-grid">
|
||||
<div class="hero-copy reveal">
|
||||
<span class="eyebrow">Чистая вода каждый день</span>
|
||||
<h1 class="hero-title">Питьевая вода с доставкой в <span>Севастополе</span> — привезём в удобное время</h1>
|
||||
<div class="hero-actions">
|
||||
<button class="button" data-open-order aria-label="Открыть форму заказа воды">Заказать воду</button>
|
||||
<a class="ghost-button" href="#catalog" aria-label="Перейти к каталогу воды">Посмотреть каталог</a>
|
||||
</div>
|
||||
|
||||
if ( $landing_html ) {
|
||||
$catalog_markup = twentytwentyfour_test1_catalog_markup();
|
||||
<div class="hero-stats">
|
||||
<div class="stat-card reveal reveal-delay-1">
|
||||
<strong>от 290 ₽</strong>
|
||||
<span>Бутыль 19 л для дома и офиса</span>
|
||||
</div>
|
||||
<div class="stat-card reveal reveal-delay-2">
|
||||
<strong>2 часа</strong>
|
||||
<span>среднее время доставки по городу в будни</span>
|
||||
</div>
|
||||
<div class="stat-card reveal reveal-delay-3">
|
||||
<strong>7 дней</strong>
|
||||
<span>работаем без выходных для дома и офиса</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
ob_start();
|
||||
$test1_header_mode = 'cart';
|
||||
require get_theme_file_path( 'template-parts/test1-shared-header.php' );
|
||||
$shared_header_markup = (string) ob_get_clean();
|
||||
<aside class="hero-panel reveal reveal-delay-1" aria-label="Информация о доставке">
|
||||
<div class="panel-top">
|
||||
<div>
|
||||
<span class="signal-pill">Сегодня работаем по городу</span>
|
||||
<h2>Сегодня в доставке: центральные и прибрежные районы</h2>
|
||||
</div>
|
||||
<!-- <div class="chip">бутыли 19 л</div> -->
|
||||
</div>
|
||||
|
||||
ob_start();
|
||||
require get_theme_file_path( 'template-parts/test1-shared-footer.php' );
|
||||
$shared_footer_markup = (string) ob_get_clean();
|
||||
<div class="hero-notes">
|
||||
<div class="hero-note">
|
||||
<strong>Для дома</strong>
|
||||
<span>Удобные форматы для кухни и семьи, без лишней тяжести и походов в магазин.</span>
|
||||
</div>
|
||||
<div class="hero-note">
|
||||
<strong>Для офиса</strong>
|
||||
<span>Регулярные поставки, документы для бухгалтерии и запас воды без авралов.</span>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
if ( '' !== $catalog_markup ) {
|
||||
$catalog_static_markup = <<<'HTML'
|
||||
<div class="catalog-grid">
|
||||
<div class="ticker reveal reveal-delay-2" aria-label="Ключевые преимущества сервиса">
|
||||
<div class="ticker-item">
|
||||
<strong>Источник</strong>
|
||||
<span>артезианская вода с многоступенчатым контролем</span>
|
||||
</div>
|
||||
<div class="ticker-item">
|
||||
<strong>Сервис</strong>
|
||||
<span>подъем на этаж и помощь с заменой бутыли</span>
|
||||
</div>
|
||||
<div class="ticker-item">
|
||||
<strong>Оплата</strong>
|
||||
<span>наличные, карта, перевод и безнал для компаний</span>
|
||||
</div>
|
||||
<div class="ticker-item">
|
||||
<strong>Автодоставка</strong>
|
||||
<span>гибкий график без повторных звонков</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="catalog">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Каталог</span>
|
||||
<h2 class="section-title">Выберите формат воды</h2>
|
||||
</div>
|
||||
<p class="section-copy">В каталоге — популярные объемы для дома и офиса: от небольших бутылей до стандартных 19 литров.
|
||||
Можно заказать разово или подключить регулярную доставку, чтобы не следить за остатками.</p>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
$catalog_markup = twentytwentyfour_test1_catalog_markup();
|
||||
if ( '' !== $catalog_markup ) {
|
||||
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
||||
echo $catalog_markup;
|
||||
} else {
|
||||
?>
|
||||
<div class="catalog-grid">
|
||||
<article class="catalog-card reveal">
|
||||
<div class="catalog-icon" aria-hidden="true">💧</div>
|
||||
<h3>Вода 19 литров</h3>
|
||||
@@ -109,7 +189,7 @@ if ( $landing_html ) {
|
||||
<span class="chip">для кулера</span>
|
||||
</div>
|
||||
<div class="card-price"><strong>290 ₽</strong><span>за бутыль</span></div>
|
||||
<button class="mini-button add-to-cart" data-name="Вода артезианская 19 л" data-volume="19 л" data-price="290">Добавить в корзину</button>
|
||||
<a class="mini-button" href="<?php echo esc_url( home_url( '/shop/' ) ); ?>">В каталог</a>
|
||||
</article>
|
||||
|
||||
<article class="catalog-card reveal reveal-delay-1">
|
||||
@@ -121,7 +201,7 @@ if ( $landing_html ) {
|
||||
<span class="chip">компактно</span>
|
||||
</div>
|
||||
<div class="card-price"><strong>95 ₽</strong><span>за бутылку</span></div>
|
||||
<button class="mini-button add-to-cart" data-name="Питьевая вода 5 л" data-volume="5 л" data-price="95">Добавить в корзину</button>
|
||||
<a class="mini-button" href="<?php echo esc_url( home_url( '/shop/' ) ); ?>">В каталог</a>
|
||||
</article>
|
||||
|
||||
<article class="catalog-card reveal reveal-delay-2">
|
||||
@@ -133,7 +213,7 @@ if ( $landing_html ) {
|
||||
<span class="chip">мероприятия</span>
|
||||
</div>
|
||||
<div class="card-price"><strong>39 ₽</strong><span>от 0.5 л</span></div>
|
||||
<button class="mini-button add-to-cart" data-name="Питьевая вода 1.5 л" data-volume="1.5 л" data-price="49">Добавить в корзину</button>
|
||||
<a class="mini-button" href="<?php echo esc_url( home_url( '/shop/' ) ); ?>">В каталог</a>
|
||||
</article>
|
||||
|
||||
<article class="catalog-card reveal reveal-delay-3">
|
||||
@@ -145,7 +225,7 @@ if ( $landing_html ) {
|
||||
<span class="chip">рестораны</span>
|
||||
</div>
|
||||
<div class="card-price"><strong>68 ₽</strong><span>за 1.5 л</span></div>
|
||||
<button class="mini-button add-to-cart" data-name="Минеральная вода 1.5 л" data-volume="1.5 л" data-price="68">Добавить в корзину</button>
|
||||
<a class="mini-button" href="<?php echo esc_url( home_url( '/shop/' ) ); ?>">В каталог</a>
|
||||
</article>
|
||||
|
||||
<article class="catalog-card reveal reveal-delay-4">
|
||||
@@ -157,40 +237,517 @@ if ( $landing_html ) {
|
||||
<span class="chip">на выбор</span>
|
||||
</div>
|
||||
<div class="card-price"><strong>45 ₽</strong><span>за 0.5 л</span></div>
|
||||
<button class="mini-button add-to-cart" data-name="Газированная вода 0.5 л" data-volume="0.5 л" data-price="45">Добавить в корзину</button>
|
||||
<a class="mini-button" href="<?php echo esc_url( home_url( '/shop/' ) ); ?>">В каталог</a>
|
||||
</article>
|
||||
</div>
|
||||
HTML;
|
||||
|
||||
$landing_html = str_replace( $catalog_static_markup, $catalog_markup, $landing_html );
|
||||
}
|
||||
|
||||
$landing_html = preg_replace( '/<header class="site-header">.*?<\/header>/is', $shared_header_markup, $landing_html, 1 );
|
||||
$landing_html = preg_replace( '/<footer class="footer">.*?<\/footer>/is', $shared_footer_markup, $landing_html, 1 );
|
||||
}
|
||||
?><!DOCTYPE html>
|
||||
<html <?php language_attributes(); ?>>
|
||||
<head>
|
||||
<meta charset="<?php bloginfo( 'charset' ); ?>">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<?php wp_head(); ?>
|
||||
</head>
|
||||
<body <?php body_class( 'test1-landing-page' ); ?>>
|
||||
<?php wp_body_open(); ?>
|
||||
<?php
|
||||
if ( $landing_html && preg_match( '/<body[^>]*>(.*)<\/body>/is', $landing_html, $matches ) ) {
|
||||
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
||||
echo $matches[1];
|
||||
} else {
|
||||
?>
|
||||
<main class="site-main" role="main">
|
||||
<div style="padding:48px 16px;max-width:1180px;margin:0 auto;">
|
||||
<p>Не удалось загрузить шаблон страницы `index3.html`.</p>
|
||||
</div>
|
||||
</main>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<?php wp_footer(); ?>
|
||||
</body>
|
||||
</html>
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="bestsellers">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Бестселлеры</span>
|
||||
<h2 class="section-title">Что заказывают чаще всего</h2>
|
||||
</div>
|
||||
<p class="section-copy">Если заказывают впервые, чаще всего начинают с бутыли 19 литров. Для дома, поездок или редкого использования обычно добавляют компактные форматы.</p>
|
||||
</div>
|
||||
|
||||
<div class="featured-grid">
|
||||
<div class="glass-card reveal">
|
||||
<span class="eyebrow">Хит по Севастополю</span>
|
||||
<h3>Вода 19 л — то, что чаще всего берут на постоянку</h3>
|
||||
<p>Хороший вариант на каждый день: для дома, офиса и мест, где вода нужна постоянно. Удобно ставить в кулер и не вспоминать о запасах каждый день.</p>
|
||||
|
||||
<div class="product-table">
|
||||
<div class="product-row">
|
||||
<div>
|
||||
<strong>АкваЛиния Классик</strong>
|
||||
<span>19 л, мягкий вкус, ежедневное потребление</span>
|
||||
</div>
|
||||
<div class="price">290 ₽</div>
|
||||
<a class="mini-button" href="<?php echo esc_url( home_url( '/shop/' ) ); ?>">В каталог</a>
|
||||
</div>
|
||||
<div class="product-row">
|
||||
<div>
|
||||
<strong>АкваЛиния Премиум</strong>
|
||||
<span>19 л, артезианская вода, усиленный контроль</span>
|
||||
</div>
|
||||
<div class="price">340 ₽</div>
|
||||
<a class="mini-button" href="<?php echo esc_url( home_url( '/shop/' ) ); ?>">В каталог</a>
|
||||
</div>
|
||||
<div class="product-row">
|
||||
<div>
|
||||
<strong>Стартовый комплект</strong>
|
||||
<span>2 бутыли 19 л + помпа для первого заказа</span>
|
||||
</div>
|
||||
<div class="price">690 ₽</div>
|
||||
<a class="mini-button" href="<?php echo esc_url( home_url( '/shop/' ) ); ?>">В каталог</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="glass-card reveal reveal-delay-1">
|
||||
<span class="eyebrow">Почему выбирают</span>
|
||||
<h3>Почему этот формат выбирают на постоянной основе</h3>
|
||||
<div class="chip-row chip-row-spaced">
|
||||
<span class="chip">быстрая доставка</span>
|
||||
<span class="chip">чистая бутыль</span>
|
||||
<span class="chip">возврат тары</span>
|
||||
<span class="chip">выгодно для офиса</span>
|
||||
</div>
|
||||
<p>Многие берут воду по графику, чтобы не вспоминать о заказе в последний момент. Это удобно и для семьи, и для офиса, где запас должен быть всегда под рукой.</p>
|
||||
<div class="hero-actions hero-actions-spaced">
|
||||
<button class="button" data-open-order>Заказать воду</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="delivery">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Условия доставки</span>
|
||||
<h2 class="section-title">Доставка воды по районам Севастополя</h2>
|
||||
</div>
|
||||
<p class="section-copy">Работаем по основным районам Севастополя. При оформлении заказа подскажем ближайшее окно и заранее подтвердим удобное время доставки.</p>
|
||||
</div>
|
||||
|
||||
<div class="delivery-grid">
|
||||
<div class="glass-card reveal">
|
||||
<h3>Что важно знать перед заказом</h3>
|
||||
<div class="product-table">
|
||||
<div class="product-row">
|
||||
<div>
|
||||
<strong>Зоны доставки</strong>
|
||||
<span>Гагаринский, Ленинский, Нахимовский, Балаклава, Камышовая бухта, Остряки, Стрелецкая</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-row">
|
||||
<div>
|
||||
<strong>Время доставки</strong>
|
||||
<span>Ежедневно с 8:00 до 21:00, срочные окна по возможности в день обращения</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-row">
|
||||
<div>
|
||||
<strong>Минимальный заказ</strong>
|
||||
<span>От 1 бутыли 19 л или от 500 ₽ для малых форматов</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-row">
|
||||
<div>
|
||||
<strong>Возвратная тара</strong>
|
||||
<span>Пустые бутыли забираем при следующей доставке или при отдельном выезде по согласованию</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="delivery-map reveal reveal-delay-1" aria-label="Информация о маршрутах доставки">
|
||||
<span class="eyebrow eyebrow-inverse">Активные маршруты</span>
|
||||
<h3 class="section-heading-compact section-heading-delivery">Доставляем по всем районам города</h3>
|
||||
<div class="zones">
|
||||
<span class="zone-card">Гагаринский район</span>
|
||||
<span class="zone-card">Ленинский район</span>
|
||||
<span class="zone-card">Нахимовский район</span>
|
||||
<span class="zone-card">Балаклава</span>
|
||||
</div>
|
||||
|
||||
<div class="delivery-highlights">
|
||||
<article class="delivery-highlight-card">
|
||||
<strong>Ближайшее окно</strong>
|
||||
<span>Подберём ближайший доступный интервал и заранее согласуем время.</span>
|
||||
</article>
|
||||
<article class="delivery-highlight-card">
|
||||
<strong>Быстрое подтверждение</strong>
|
||||
<span>Связываемся в течение 15 минут в рабочее время.</span>
|
||||
</article>
|
||||
<article class="delivery-highlight-card">
|
||||
<strong>Сервис на месте</strong>
|
||||
<span>Подъем воды, замена бутыли и вывоз пустой тары по запросу.</span>
|
||||
</article>
|
||||
<button class="button delivery-cta" data-open-order>Оставить заявку на доставку</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="how-order">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Как заказать</span>
|
||||
<h2 class="section-title">Четыре быстрых шага до чистой воды</h2>
|
||||
</div>
|
||||
<p class="section-copy">Все просто: выбираете воду, оставляете заявку, а мы уточняем детали и привозим заказ в согласованное время.</p>
|
||||
</div>
|
||||
|
||||
<div class="steps-grid">
|
||||
<article class="step-card reveal">
|
||||
<div class="step-number">1</div>
|
||||
<h3>Выберите объем воды </h3>
|
||||
<p>Определите нужный объем: вода 19 литров, 5 литров, малые бутылки, минеральная или газированная вода.</p>
|
||||
</article>
|
||||
<article class="step-card reveal reveal-delay-1">
|
||||
<div class="step-number">2</div>
|
||||
<h3>Оставьте заявку на сайте или по телефону</h3>
|
||||
<p>Соберите заказ прямо на сайте и проверьте итоговую сумму до подтверждения.</p>
|
||||
</article>
|
||||
<article class="step-card reveal reveal-delay-2">
|
||||
<div class="step-number">3</div>
|
||||
<h3>Подтвердите удобное время доставки</h3>
|
||||
<p>Оставьте телефон и адрес в Севастополе, а мы уточним время и детали по таре.</p>
|
||||
</article>
|
||||
<article class="step-card reveal reveal-delay-3">
|
||||
<div class="step-number">4</div>
|
||||
<h3>Получите воду с доставкой до двери</h3>
|
||||
<p>Курьер привезет воду, поможет с выгрузкой и при необходимости заберет пустые бутыли.</p>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="business">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Для дома и офиса</span>
|
||||
<h2 class="section-title">Для дома и офиса — без лишних сложностей</h2>
|
||||
</div>
|
||||
<p class="section-copy">У домашних и корпоративных заказов разные задачи, поэтому мы отдельно продумали условия для семьи и для компаний.</p>
|
||||
</div>
|
||||
|
||||
<div class="segments-grid">
|
||||
<article class="segment-card reveal">
|
||||
<span class="eyebrow">Доставка воды на дом</span>
|
||||
<h3>Когда воду удобно заказывать домой</h3>
|
||||
<p>Такой формат выбирают семьи, пожилые клиенты и все, кто не хочет носить тяжелые бутыли из магазина.</p>
|
||||
<ul class="segment-list">
|
||||
<li>Удобные интервалы утром, днем и вечером</li>
|
||||
<li>Подъем на этаж и помощь с установкой</li>
|
||||
<li>Можно заказать и 19 л, и компактные форматы</li>
|
||||
<li>Напоминание о повторном заказе</li>
|
||||
</ul>
|
||||
<div class="segment-meta">Часто выбирают: 2 бутыли 19 л + вода 5 л для кухни</div>
|
||||
</article>
|
||||
|
||||
<article class="segment-card featured reveal reveal-delay-1">
|
||||
<span class="eyebrow eyebrow-inverse">Доставка воды в офис</span>
|
||||
<h3>Регулярные поставки для команды и клиентов</h3>
|
||||
<p>Офисам, салонам, кафе, фитнес-клубам и студиям нужен предсказуемый сервис. Мы строим график так, чтобы запас воды не заканчивался в рабочие часы.</p>
|
||||
<ul class="segment-list">
|
||||
<li>Безналичная оплата и закрывающие документы</li>
|
||||
<li>Автодоставка воды по графику</li>
|
||||
<li>Приоритетные интервалы на будни</li>
|
||||
<li>Комбинированные заказы для кулеров и гостей</li>
|
||||
</ul>
|
||||
<div class="segment-meta">Часто выбирают: 6-12 бутылей 19 л в неделю + минеральная вода для переговорных</div>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="promotions">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Акции</span>
|
||||
<h2 class="section-title">Выгоднее с первого заказа и еще удобнее по подписке</h2>
|
||||
</div>
|
||||
<p class="section-copy">Для новых и постоянных клиентов периодически действуют акции. Это удобный способ попробовать сервис или сделать регулярные заказы выгоднее.</p>
|
||||
</div>
|
||||
|
||||
<div class="promo-grid">
|
||||
<article class="promo-card highlight reveal">
|
||||
<h3>Скидка на первый заказ</h3>
|
||||
<p>На первый заказ действует скидка 10%. Это удобно, если хотите сначала попробовать сервис и оценить качество воды.</p>
|
||||
</article>
|
||||
<article class="promo-card reveal reveal-delay-1">
|
||||
<h3>Автодоставка воды</h3>
|
||||
<p>Настройте регулярный график: раз в 3 дня, неделю или по вашему потреблению. Мы напомним и приедем вовремя.</p>
|
||||
</article>
|
||||
<article class="promo-card reveal reveal-delay-2">
|
||||
<h3>Помпа в подарок</h3>
|
||||
<p>При заказе стартового комплекта для дома дарим механическую помпу, чтобы пользоваться 19-литровой бутылью было проще.</p>
|
||||
</article>
|
||||
<article class="promo-card reveal reveal-delay-3">
|
||||
<h3>Офисный тариф</h3>
|
||||
<p>Для корпоративных клиентов действует персональная цена при регулярном объеме и закрепленном графике поставок.</p>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="faq">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">FAQ</span>
|
||||
<h2 class="section-title">Частые вопросы о доставке воды в Севастополе</h2>
|
||||
</div>
|
||||
<p class="section-copy">Собрали вопросы, которые чаще всего задают перед первым заказом.</p>
|
||||
</div>
|
||||
|
||||
<div class="faq-list">
|
||||
<article class="faq-item reveal open">
|
||||
<button class="faq-question" id="faq-question-1" aria-expanded="true" aria-controls="faq-answer-1">
|
||||
<span>Как быстро вы привозите воду по Севастополю?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-1" role="region" aria-labelledby="faq-question-1">Обычно привозим воду в течение дня, а по активным маршрутам — быстрее. Точное время зависит от района и загрузки, поэтому ближайший интервал всегда подтверждаем заранее.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal reveal-delay-1">
|
||||
<button class="faq-question" id="faq-question-2" aria-expanded="false" aria-controls="faq-answer-2">
|
||||
<span>Какие способы оплаты доступны?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-2" role="region" aria-labelledby="faq-question-2" hidden>Принимаем наличные, оплату картой при получении, перевод по номеру телефона и безналичный расчет для компаний. Для офисов можем выставить счет.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal reveal-delay-2">
|
||||
<button class="faq-question" id="faq-question-3" aria-expanded="false" aria-controls="faq-answer-3">
|
||||
<span>Нужен ли залог за бутыль 19 литров?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-3" role="region" aria-labelledby="faq-question-3" hidden>Если у вас нет своей тары, при первом заказе может взиматься возвратный депозит за бутыль. При возврате тары депозит учитывается в следующих заказах.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal reveal-delay-3">
|
||||
<button class="faq-question" id="faq-question-4" aria-expanded="false" aria-controls="faq-answer-4">
|
||||
<span>Как часто лучше заказывать воду домой?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-4" role="region" aria-labelledby="faq-question-4" hidden>Для семьи из 2-4 человек обычно достаточно заказа 2-4 бутылей 19 литров раз в 1-2 недели. Точный график зависит от потребления и наличия кулера.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal">
|
||||
<button class="faq-question" id="faq-question-5" aria-expanded="false" aria-controls="faq-answer-5">
|
||||
<span>Откуда поступает вода и как контролируется качество?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-5" role="region" aria-labelledby="faq-question-5" hidden>Мы используем артезианскую воду из защищенного источника, проводим фильтрацию, санитарную обработку тары и регулярный лабораторный контроль. По запросу предоставляем информацию о сертификатах качества.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal reveal-delay-1">
|
||||
<button class="faq-question" id="faq-question-6" aria-expanded="false" aria-controls="faq-answer-6">
|
||||
<span>Можно ли оформить доставку воды в офис?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-6" role="region" aria-labelledby="faq-question-6" hidden>Да, мы регулярно обслуживаем офисы, кафе, фитнес-клубы, студии и медицинские кабинеты. Настраиваем график, безнал и объем под ваш режим работы.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal reveal-delay-2">
|
||||
<button class="faq-question" id="faq-question-7" aria-expanded="false" aria-controls="faq-answer-7">
|
||||
<span>Какой минимальный заказ действует для доставки?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-7" role="region" aria-labelledby="faq-question-7" hidden>Для воды 19 литров можно заказать от одной бутыли. Для небольших упаковок минимальная сумма заказа составляет 500 ₽, чтобы доставка оставалась быстрой и выгодной.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal reveal-delay-3">
|
||||
<button class="faq-question" id="faq-question-8" aria-expanded="false" aria-controls="faq-answer-8">
|
||||
<span>Что делать с пустыми бутылками после использования?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-8" role="region" aria-labelledby="faq-question-8" hidden>Сохраните пустые бутыли до следующего визита курьера. Мы заберем их при следующей доставке или согласуем отдельный выезд при крупном заказе.</div>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="about">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">О компании</span>
|
||||
<h2 class="section-title">Чистый источник, строгий контроль, понятный сервис</h2>
|
||||
</div>
|
||||
<p class="section-copy">Важно не только откуда вода, но и как она проходит обработку, розлив и доставку. Поэтому мы уделяем внимание качеству на каждом этапе.</p>
|
||||
</div>
|
||||
|
||||
<div class="about-grid">
|
||||
<div class="glass-card about-copy reveal">
|
||||
<h3>Следим не только за водой, но и за тем, в каком виде она приезжает к клиенту</h3>
|
||||
<p>Вода поступает из артезианского источника, проходит очистку и контроль перед розливом. Не меньше внимания уделяем бутылям: их состояние и санитарная обработка напрямую влияют на вкус и качество воды.</p>
|
||||
<p class="about-copy-secondary">По запросу можно получить информацию о качестве воды и условиях поставки. Для офисов и коммерческих объектов отдельно настраиваем регулярный график, чтобы запас воды не заканчивался в рабочее время.</p>
|
||||
<div class="chip-row hero-actions-spaced">
|
||||
<span class="chip">артезианская вода</span>
|
||||
<span class="chip">контроль качества</span>
|
||||
<span class="chip">сертификаты</span>
|
||||
<span class="chip">санобработка тары</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="about-visual reveal reveal-delay-1" aria-hidden="true">
|
||||
<div class="droplet"></div>
|
||||
<div class="quality-stack">
|
||||
<div class="quality-card"><strong>Источник</strong><br>Защищенный артезианский горизонт</div>
|
||||
<div class="quality-card"><strong>Проверка</strong><br>Регулярный лабораторный анализ качества</div>
|
||||
<div class="quality-card"><strong>Тара</strong><br>Санитарная обработка и контроль оборота бутылей</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="reviews">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Отзывы</span>
|
||||
<h2 class="section-title">Что говорят клиенты о нашей воде и доставке</h2>
|
||||
</div>
|
||||
<p class="section-copy">Несколько отзывов от клиентов, которые заказывают воду домой, в офис и для коммерческих объектов.</p>
|
||||
</div>
|
||||
|
||||
<div class="reviews-grid">
|
||||
<article class="review-card reveal">
|
||||
<strong>«Привозят точно в обещанный интервал»</strong>
|
||||
<p>Заказываем воду 19 литров домой в Гагаринский район. Курьер всегда заранее звонит, поднимает бутыли и забирает пустые. Удобно, что не нужно снова объяснять адрес.</p>
|
||||
<div class="review-meta">Марина, Севастополь</div>
|
||||
</article>
|
||||
<article class="review-card reveal reveal-delay-1">
|
||||
<strong>«Для офиса это реально спасение»</strong>
|
||||
<p>У нас небольшая команда, вода уходит быстро. С автодоставкой больше не вспоминаем в последний момент, что кулер пустой. Документы присылают без задержек.</p>
|
||||
<div class="review-meta">Андрей, управляющий офисом</div>
|
||||
</article>
|
||||
<article class="review-card reveal reveal-delay-2">
|
||||
<strong>«Вкус воды мягкий, без постороннего запаха»</strong>
|
||||
<p>Переходили с другого поставщика и сразу почувствовали разницу. Вода приятная и для питья, и для чайника. Заказываем и 19 литров, и 5 литров домой.</p>
|
||||
<div class="review-meta">Елена, Ленинский район</div>
|
||||
</article>
|
||||
<article class="review-card reveal reveal-delay-3">
|
||||
<strong>«Хорошо работают с коммерческими заказами»</strong>
|
||||
<p>Для нашего фитнес-клуба важна стабильность. Ребята привозят четко по графику, можно комбинировать большие бутыли и маленькие бутылки для стойки продаж.</p>
|
||||
<div class="review-meta">Игорь, фитнес-клуб в Стрелецкой</div>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="contacts">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Контакты</span>
|
||||
<h2 class="section-title">Свяжитесь с нами и оформите заказ</h2>
|
||||
</div>
|
||||
<p class="section-copy">Позвоните нам или оставьте заявку на сайте — уточним детали и подберём удобное время доставки.</p>
|
||||
</div>
|
||||
|
||||
<div class="contacts-grid">
|
||||
<div class="contact-card reveal">
|
||||
<h3>Контактные данные</h3>
|
||||
<ul class="contact-list">
|
||||
<li><strong>Телефон:</strong> <a href="tel:+79117748923">+7 (911) 774-89-23</a></li>
|
||||
<li><strong>Адрес:</strong> г. Севастополь, ул. Шевченко, 13</li>
|
||||
<li><strong>График:</strong> ежедневно с 8:00 до 21:00</li>
|
||||
<li><strong>E-mail:</strong> sygorenkomisha17@gmail.com</li>
|
||||
</ul>
|
||||
|
||||
<form class="contact-form" id="contactForm">
|
||||
<input class="field" type="text" name="name" placeholder="Ваше имя" aria-label="Ваше имя" required>
|
||||
<input class="field" type="tel" name="phone" placeholder="Телефон" aria-label="Телефон" required>
|
||||
<input class="field" type="text" name="address" placeholder="Адрес доставки в Севастополе" aria-label="Адрес доставки" required>
|
||||
<textarea class="field" name="comment" placeholder="Что нужно доставить: например, 2 бутыли 19 л и 1 упаковка 1.5 л" aria-label="Комментарий к заказу"></textarea>
|
||||
<button class="button" type="submit">Отправить заявку</button>
|
||||
<div class="success-note" id="contactSuccess" role="status" aria-live="polite">Спасибо! Заявка принята. Мы свяжемся с вами для подтверждения заказа.</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="map-placeholder reveal reveal-delay-1" aria-label="Условия обслуживания по городу">
|
||||
<span class="eyebrow eyebrow-inverse">Зона обслуживания</span>
|
||||
<h3 class="section-heading-compact section-heading-map">Принимаем заявки по всему Севастополю</h3>
|
||||
<p class="map-copy">Работаем ежедневно и подбираем удобный интервал доставки для дома, офиса, кафе и небольших коммерческих точек.</p>
|
||||
|
||||
<div class="contact-fast-facts">
|
||||
<article class="contact-fact-card">
|
||||
<strong>Подтверждение заявки</strong>
|
||||
<span>До 15 минут в рабочие часы, без долгого ожидания.</span>
|
||||
</article>
|
||||
<article class="contact-fact-card">
|
||||
<strong>Окна доставки</strong>
|
||||
<span>С 8:00 до 21:00 ежедневно, срочные слоты по возможности.</span>
|
||||
</article>
|
||||
<article class="contact-fact-card">
|
||||
<strong>Дополнительный сервис</strong>
|
||||
<span>Подъем воды и вывоз пустой тары при следующем визите.</span>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="contact-quick-actions">
|
||||
<a class="contact-quick-link" href="tel:+79117748923">Позвонить: +7 (911) 774-89-23</a>
|
||||
<a class="contact-quick-link" href="mailto:sygorenkomisha17@gmail.com">Написать: sygorenkomisha17@gmail.com</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="location-map">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">На карте</span>
|
||||
<h2 class="section-title">Как нас найти в Севастополе</h2>
|
||||
</div>
|
||||
<p class="section-copy">Пункт приема заявок и выдачи расположен по адресу: ул. Шевченко, 13. Ниже - Яндекс Карта с меткой и быстрым переходом в навигатор.</p>
|
||||
</div>
|
||||
|
||||
<div class="location-map-grid">
|
||||
<article class="glass-card location-map-info reveal">
|
||||
<h3>Адрес для посещения</h3>
|
||||
<p>г. Севастополь, ул. Шевченко, 13</p>
|
||||
<div class="contact-quick-actions">
|
||||
<a class="contact-quick-link" target="_blank" rel="noopener noreferrer" href="https://yandex.ru/maps/?text=%D0%A1%D0%B5%D0%B2%D0%B0%D1%81%D1%82%D0%BE%D0%BF%D0%BE%D0%BB%D1%8C%2C%20%D1%83%D0%BB.%20%D0%A8%D0%B5%D0%B2%D1%87%D0%B5%D0%BD%D0%BA%D0%BE%2C%2013">Открыть в Яндекс Картах</a>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<div class="location-map-frame reveal reveal-delay-1" aria-label="Яндекс Карта с адресом ул. Шевченко, 13, Севастополь">
|
||||
<iframe
|
||||
src="https://yandex.ru/map-widget/v1/?mode=search&text=%D0%A1%D0%B5%D0%B2%D0%B0%D1%81%D1%82%D0%BE%D0%BF%D0%BE%D0%BB%D1%8C%2C%20%D1%83%D0%BB.%20%D0%A8%D0%B5%D0%B2%D1%87%D0%B5%D0%BD%D0%BA%D0%BE%2C%2013&z=16"
|
||||
title="Карта: ул. Шевченко, 13, Севастополь"
|
||||
loading="lazy"
|
||||
referrerpolicy="origin"
|
||||
allowfullscreen>
|
||||
</iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<div class="modal-backdrop" id="orderModal" aria-hidden="true">
|
||||
<div class="modal-card" role="dialog" aria-modal="true" aria-labelledby="orderModalTitle">
|
||||
<div class="modal-head">
|
||||
<div>
|
||||
<h3 id="orderModalTitle">Оформление заказа</h3>
|
||||
<p class="dialog-copy">Оставьте контакты, и мы свяжемся с вами для подтверждения заказа.</p>
|
||||
</div>
|
||||
<button class="close-button" id="modalCloseButton" aria-label="Закрыть форму заказа">×</button>
|
||||
</div>
|
||||
|
||||
<form class="contact-form" id="orderForm">
|
||||
<input class="field" type="text" name="customerName" placeholder="Ваше имя" aria-label="Ваше имя" required>
|
||||
<input class="field" type="tel" name="customerPhone" placeholder="Телефон" aria-label="Телефон" required>
|
||||
<input class="field" type="text" name="customerAddress" placeholder="Адрес доставки" aria-label="Адрес доставки" required>
|
||||
<select class="field" name="customerType" aria-label="Тип клиента">
|
||||
<option value="Для дома">Для дома</option>
|
||||
<option value="Для офиса">Для офиса</option>
|
||||
</select>
|
||||
<textarea class="field" name="customerOrder" id="orderItemsField" placeholder="Комментарий к заказу" aria-label="Комментарий к заказу"></textarea>
|
||||
<button class="button" type="submit">Подтвердить заказ</button>
|
||||
<div class="success-note" id="orderSuccess" role="status" aria-live="polite">Спасибо! Ваш заказ сохранен. Мы свяжемся с вами в ближайшее время.</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
get_footer( 'test1' );
|
||||
|
||||
38
wp-content/themes/twentytwentyfour/send-telegram.php
Normal file
38
wp-content/themes/twentytwentyfour/send-telegram.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
/* Пример из: https://vc.ru/dev/158136-kak-otpravlyat-zayavki-s-lendinga-pryamo-v-telegram */
|
||||
|
||||
|
||||
//В переменную $token нужно вставить токен, который нам прислал @botFather
|
||||
$token = "1094153697:AAFiLXXXXXLl0hRDsxBij1lddKydKxSSsOg04";
|
||||
|
||||
//Сюда вставляем chat_id
|
||||
$chat_id = "-40XXXX740";
|
||||
|
||||
//Определяем переменные для передачи данных из нашей формы
|
||||
if ($_POST['phone'] !== '') {
|
||||
$name = ($_POST['name']);
|
||||
$phone = ($_POST['phone']);
|
||||
|
||||
//Собираем в массив то, что будет передаваться боту
|
||||
$arr = array(
|
||||
'Имя:' => $name,
|
||||
'Телефон:' => $phone
|
||||
);
|
||||
|
||||
//Настраиваем внешний вид сообщения в телеграме
|
||||
foreach($arr as $key => $value) {
|
||||
$txt .= "<b>".$key."</b> ".$value."%0A";
|
||||
};
|
||||
|
||||
//Передаем данные боту
|
||||
$sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r");
|
||||
|
||||
//Выводим сообщение об успешной отправке
|
||||
if ($sendToTelegram) {
|
||||
echo 'Спасибо! Ваша заявка принята. Мы свяжемся с вами в ближайшее время.';
|
||||
}else{
|
||||
echo 'Что-то пошло не так. Попробуйте отправить форму ещё раз.';
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -39,16 +39,16 @@ if ( ! $blog_url ) {
|
||||
}
|
||||
|
||||
$test1_header_action_label = __( 'Корзина', 'twentytwentyfour' );
|
||||
?><!DOCTYPE html>
|
||||
<html <?php language_attributes(); ?>>
|
||||
<head>
|
||||
<meta charset="<?php bloginfo( 'charset' ); ?>">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<?php wp_head(); ?>
|
||||
</head>
|
||||
<body <?php body_class( 'test1-shared-shell test1-shared-blog-single-page' ); ?>>
|
||||
<?php wp_body_open(); ?>
|
||||
<?php require get_theme_file_path( 'template-parts/test1-shared-header.php' ); ?>
|
||||
|
||||
$test1_header_args = array(
|
||||
'body_class' => 'test1-shared-shell test1-shared-blog-single-page',
|
||||
'header_action_url' => $test1_header_action_url,
|
||||
'header_action_label' => $test1_header_action_label,
|
||||
'header_mode' => $test1_header_mode,
|
||||
);
|
||||
|
||||
get_header( 'test1', $test1_header_args );
|
||||
?>
|
||||
|
||||
<main class="site-main" role="main">
|
||||
<div class="container">
|
||||
@@ -97,7 +97,5 @@ $test1_header_action_label = __( 'Корзина', 'twentytwentyfour' );
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<?php require get_theme_file_path( 'template-parts/test1-shared-footer.php' ); ?>
|
||||
<?php wp_footer(); ?>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
get_footer( 'test1' );
|
||||
|
||||
@@ -19,9 +19,10 @@ if ( ! $blog_url ) {
|
||||
<div class="classic-footer-col brand-col">
|
||||
<a class="brand" href="<?php echo esc_url( home_url( '/' ) ); ?>" aria-label="Перейти на главную страницу">
|
||||
<span class="brand-mark" aria-hidden="true">
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<!-- <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12 2C9 6.1 6 9.4 6 13.2C6 16.9 8.69 20 12 20C15.31 20 18 16.9 18 13.2C18 9.4 15 6.1 12 2Z" fill="currentColor"/>
|
||||
</svg>
|
||||
</svg> -->
|
||||
<img src="<?php echo esc_url( home_url( '/wp-content/themes/twentytwentyfour/assets/images/logo.webp' ) ); ?>" alt="">
|
||||
</span>
|
||||
<span class="brand-text">
|
||||
<strong>АкваЛиния</strong>
|
||||
|
||||
@@ -10,6 +10,12 @@ $test1_header_action_label = isset( $test1_header_action_label ) ? $test1_header
|
||||
$test1_header_mode = isset( $test1_header_mode ) ? $test1_header_mode : 'link';
|
||||
$posts_page_id = (int) get_option( 'page_for_posts' );
|
||||
$blog_url = $posts_page_id > 0 ? get_permalink( $posts_page_id ) : home_url( '/blog/' );
|
||||
$cart_url = function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : home_url( '/cart/' );
|
||||
$cart_count = 0;
|
||||
|
||||
if ( function_exists( 'WC' ) && WC()->cart ) {
|
||||
$cart_count = (int) WC()->cart->get_cart_contents_count();
|
||||
}
|
||||
|
||||
if ( ! $blog_url ) {
|
||||
$blog_url = home_url( '/blog/' );
|
||||
@@ -22,9 +28,10 @@ $blog_is_active = is_home() || is_singular( 'post' ) || is_category() || is_tag(
|
||||
<div class="header-row">
|
||||
<a class="brand" href="<?php echo esc_url( home_url( '/' ) ); ?>" aria-label="Перейти на главную страницу">
|
||||
<span class="brand-mark" aria-hidden="true">
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<!-- <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12 2C9 6.1 6 9.4 6 13.2C6 16.9 8.69 20 12 20C15.31 20 18 16.9 18 13.2C18 9.4 15 6.1 12 2Z" fill="currentColor"/>
|
||||
</svg>
|
||||
</svg> -->
|
||||
<img src="<?php echo esc_url( home_url( '/wp-content/themes/twentytwentyfour/assets/images/logo.webp' ) ); ?>" alt="">
|
||||
</span>
|
||||
<span class="brand-text">
|
||||
<strong>АкваЛиния</strong>
|
||||
@@ -46,10 +53,10 @@ $blog_is_active = is_home() || is_singular( 'post' ) || is_category() || is_tag(
|
||||
<span aria-hidden="true">+7 (911) 774-89-23</span>
|
||||
</a>
|
||||
<?php if ( 'cart' === $test1_header_mode ) : ?>
|
||||
<button class="cart-button" id="cartOpenButton" aria-label="Открыть корзину">
|
||||
<a class="cart-button" href="<?php echo esc_url( $cart_url ); ?>" aria-label="Перейти в корзину">
|
||||
<span aria-hidden="true">Корзина</span>
|
||||
<span class="cart-count" id="cartCount" aria-live="polite" aria-atomic="true">0</span>
|
||||
</button>
|
||||
<span class="cart-count" aria-live="polite" aria-atomic="true"><?php echo esc_html( (string) $cart_count ); ?></span>
|
||||
</a>
|
||||
<button class="mobile-toggle" id="mobileToggle" aria-label="Открыть меню" aria-expanded="false" aria-controls="mobilePanel">
|
||||
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
|
||||
<path d="M4 7H20" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
||||
@@ -75,10 +82,10 @@ $blog_is_active = is_home() || is_singular( 'post' ) || is_category() || is_tag(
|
||||
<a href="<?php echo esc_url( home_url( '/contacts/' ) ); ?>">Контакты</a>
|
||||
</nav>
|
||||
<a class="header-phone" href="tel:+79117748923">+7 (911) 774-89-23</a>
|
||||
<button class="cart-button" id="mobileCartOpenButton" aria-label="Открыть корзину с мобильного меню">
|
||||
<a class="cart-button" href="<?php echo esc_url( $cart_url ); ?>" aria-label="Перейти в корзину с мобильного меню">
|
||||
<span>Корзина</span>
|
||||
<span class="cart-count" id="mobileCartCount" aria-live="polite" aria-atomic="true">0</span>
|
||||
</button>
|
||||
<span class="cart-count" aria-live="polite" aria-atomic="true"><?php echo esc_html( (string) $cart_count ); ?></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
Reference in New Issue
Block a user