diff --git a/wp-content/themes/cosmopet/functions.php b/wp-content/themes/cosmopet/functions.php
index b6148f8..cd213f7 100644
--- a/wp-content/themes/cosmopet/functions.php
+++ b/wp-content/themes/cosmopet/functions.php
@@ -1200,6 +1200,7 @@ function remove_woocommerce_styles_on_checkout() {
// Добавляем hreflang теги для cosmopet.shop
add_action('wp_head', 'custom_hreflang_shop', 6);
function custom_hreflang_shop() {
+ if (!is_admin() && function_exists('pll_get_post') && function_exists('pll_languages_list')) {
// Защищаем от дублирования
static $hreflang_added = false;
if ($hreflang_added) {
@@ -1207,12 +1208,34 @@ function custom_hreflang_shop() {
}
$hreflang_added = true;
- $current_path = add_query_arg('', $_SERVER['REQUEST_URI']);
+ // Домены для языков
$ru_domain = 'https://cosmopet-test-ru.cp.good-production.xyz';
$en_domain = 'https://cosmopet-test-ae.cp.good-production.xyz';
- echo '' . "\n";
- echo '' . "\n";
+ // Текущий пост/страница
+ $current_post_id = get_the_ID();
+ if (!$current_post_id) {
+ // Для случаев, когда get_the_ID() не работает (например, архивы)
+ $current_path = trailingslashit($_SERVER['REQUEST_URI']);
+ $query_string = $_SERVER['QUERY_STRING'] ? '?' . $_SERVER['QUERY_STRING'] : '';
+ $ru_url = $ru_domain . $current_path . $query_string;
+ $en_url = $en_domain . $current_path . $query_string;
+ } else {
+ // Получаем переводы поста/страницы
+ $ru_post_id = pll_get_post($current_post_id, 'ru');
+ $en_post_id = pll_get_post($current_post_id, 'en');
+
+ // Формируем URL с учетом перевода и параметров запроса
+ $query_string = $_SERVER['QUERY_STRING'] ? '?' . $_SERVER['QUERY_STRING'] : '';
+
+ $ru_url = $ru_post_id ? get_permalink($ru_post_id) . $query_string : $ru_domain . trailingslashit($_SERVER['REQUEST_URI']) . $query_string;
+ $en_url = $en_post_id ? get_permalink($en_post_id) . $query_string : $en_domain . trailingslashit($_SERVER['REQUEST_URI']) . $query_string;
+ }
+
+ // Выводим hreflang-теги
+ echo '' . "\n";
+ echo '' . "\n";
+ }
}
add_action('wp_head', 'custom_checkout_padding');
@@ -1317,4 +1340,5 @@ function custom_handle_activation_request() {
}
}
-}
\ No newline at end of file
+}
+
diff --git a/wp-content/themes/cosmopet/global-functions/core-functions.php b/wp-content/themes/cosmopet/global-functions/core-functions.php
index 2638d0c..d917072 100644
--- a/wp-content/themes/cosmopet/global-functions/core-functions.php
+++ b/wp-content/themes/cosmopet/global-functions/core-functions.php
@@ -172,3 +172,92 @@ $zero = '0';
admin_url('admin-ajax.php'),
+// 'nonce' => wp_create_nonce('wc_checkout_nonce')
+// ]);
+// }
+// }
+
+// // AJAX-обработчик для обновления количества
+// add_action('wp_ajax_update_cart_quantity', 'update_cart_quantity_callback');
+// add_action('wp_ajax_nopriv_update_cart_quantity', 'update_cart_quantity_callback');
+// function update_cart_quantity_callback() {
+// check_ajax_referer('wc_checkout_nonce', 'nonce');
+
+// $cart_item_key = sanitize_text_field($_POST['cart_item_key']);
+// $quantity = intval($_POST['quantity']);
+
+// if ($quantity > 0) {
+// WC()->cart->set_quantity($cart_item_key, $quantity);
+// } else {
+// WC()->cart->remove_cart_item($cart_item_key);
+// }
+
+// WC()->cart->calculate_totals();
+
+// // Подготовка фрагментов
+// $fragments = [];
+
+// // Обновление списка товаров
+// ob_start();
+// wc_get_template('checkout/form-checkout.php', [], '', get_template_directory() . '/woocommerce/');
+// $fragments['.order-your__products'] = ob_get_clean();
+
+// // Обновление секции итогов
+// ob_start();
+// woocommerce_checkout_coupon_form();
+// woocommerce_order_review();
+// $fragments['.order-your__calculation'] = ob_get_clean();
+
+// // Подготовка цен для каждого товара
+// $item_prices = [];
+// foreach (WC()->cart->get_cart() as $item_key => $item) {
+// $item_prices[$item_key] = WC()->cart->get_product_subtotal($item['data'], $item['quantity']);
+// }
+
+// wp_send_json_success([
+// 'fragments' => $fragments,
+// 'item_prices' => $item_prices,
+// 'cart_total' => WC()->cart->get_cart_total()
+// ]);
+// }
+
+// // AJAX-обработчик для удаления товара
+// add_action('wp_ajax_remove_cart_item', 'remove_cart_item_callback');
+// add_action('wp_ajax_nopriv_remove_cart_item', 'remove_cart_item_callback');
+// function remove_cart_item_callback() {
+// check_ajax_referer('wc_checkout_nonce', 'nonce');
+
+// $cart_item_key = sanitize_text_field($_POST['cart_item_key']);
+// WC()->cart->remove_cart_item($cart_item_key);
+// WC()->cart->calculate_totals();
+
+// // Подготовка фрагментов
+// $fragments = [];
+
+// // Обновление списка товаров
+// ob_start();
+// wc_get_template('checkout/form-checkout.php', [], '', get_template_directory() . '/woocommerce/');
+// $fragments['.order-your__products'] = ob_get_clean();
+
+// // Обновление секции итогов
+// ob_start();
+// woocommerce_checkout_coupon_form();
+// woocommerce_order_review();
+// $fragments['.order-your__calculation'] = ob_get_clean();
+
+// wp_send_json_success([
+// 'fragments' => $fragments,
+// 'cart_total' => WC()->cart->get_cart_total()
+// ]);
+// }
+
+
diff --git a/wp-content/themes/cosmopet/global-functions/multisite-functions.php b/wp-content/themes/cosmopet/global-functions/multisite-functions.php
index 2152328..b8b3cd8 100644
--- a/wp-content/themes/cosmopet/global-functions/multisite-functions.php
+++ b/wp-content/themes/cosmopet/global-functions/multisite-functions.php
@@ -1,40 +1,185 @@
- defined('SITE_DOMAIN') ? SITE_DOMAIN : null,
- ];
-
- return $context;
-});
-
-
-// Отключаем канонические ссылки и hreflang от Yoast SEO
-add_filter('wpseo_canonical', '__return_false');
-add_filter('wpseo_opengraph_url', '__return_false'); // Отключаем OG URL
-add_filter('wpseo_add_x_default_hreflang', '__return_false'); // Отключаем hreflang от Yoast
-add_filter('wpseo_disable_adjacent_rel_links', '__return_true'); // Отключаем соседние rel-ссылки
-
-// Добавляем каноническую ссылку
-add_action('wp_head', 'custom_canonical_url', 5);
-function custom_canonical_url() {
- // Защищаем от дублирования
- static $canonical_added = false;
- if ($canonical_added) {
- return;
- }
- $canonical_added = true;
-
- $current_url = home_url(add_query_arg('', $_SERVER['REQUEST_URI']));
- echo '' . "\n";
+ defined('SITE_DOMAIN') ? SITE_DOMAIN : null,
+ ];
+
+ return $context;
+});
+
+
+// Отключаем канонические ссылки и hreflang от Yoast SEO
+add_filter('wpseo_canonical', '__return_false');
+add_filter('wpseo_opengraph_url', '__return_false'); // Отключаем OG URL
+add_filter('wpseo_add_x_default_hreflang', '__return_false'); // Отключаем hreflang от Yoast
+add_filter('wpseo_disable_adjacent_rel_links', '__return_true'); // Отключаем соседние rel-ссылки
+
+// Добавляем каноническую ссылку
+add_action('wp_head', 'custom_canonical_url', 5);
+function custom_canonical_url() {
+ if (!is_admin()) {
+ // Защищаем от дублирования
+ static $canonical_added = false;
+ if ($canonical_added) {
+ return;
+ }
+ $canonical_added = true;
+
+ // Формируем текущий URL без лишних параметров
+ $current_url = trailingslashit(home_url($_SERVER['REQUEST_URI']));
+ // Удаляем возможные параметры запроса, если они не нужны
+ $current_url = strtok($current_url, '?');
+ echo '' . "\n";
+ }
+}
+
+add_action('wp_head', 'add_facebook_pixel');
+function add_facebook_pixel() {
+ ?>
+
+
+
+
+ get_status() !== 'processing' && $order->get_status() !== 'completed') return; // Отправляем только для оплаченных заказов
+
+ $items = [];
+ foreach ($order->get_items() as $item) {
+ $product = $item->get_product();
+ $items[] = [
+ 'id' => $product->get_id(),
+ 'name' => $product->get_name(),
+ 'price' => $product->get_price(),
+ 'quantity' => $item->get_quantity()
+ ];
+ }
+
+ // Получаем валюту заказа
+ $currency = $order->get_currency();
+ ?>
+
+ 'Неверный ID товара'));
+ wp_die();
+ }
+
+ $passed_validation = apply_filters('woocommerce_add_to_cart_validation', true, $product_id, $quantity);
+
+ if ($passed_validation) {
+ $added = WC()->cart->add_to_cart($product_id, $quantity);
+ if ($added) {
+ error_log('Product added to cart: ' . $product_id); // Отладка
+ // Подготавливаем фрагменты корзины
+ ob_start();
+ woocommerce_mini_cart();
+ $mini_cart = ob_get_clean();
+
+ // Фрагменты для стандартной корзины и кастомного счетчика
+ $fragments = array(
+ 'div.widget_shopping_cart_content' => '
' . $mini_cart . '
',
+ '.mini-profile__button--counter' => '' . WC()->cart->get_cart_contents_count() . '
'
+ );
+
+ wp_send_json_success(array(
+ 'message' => 'Товар успешно добавлен в корзину',
+ 'fragments' => apply_filters('woocommerce_add_to_cart_fragments', $fragments),
+ 'cart_hash' => apply_filters('woocommerce_add_to_cart_hash', WC()->cart->get_cart_hash(), array())
+ ));
+ } else {
+ error_log('Failed to add product to cart: ' . $product_id); // Отладка
+ wp_send_json_error(array('message' => 'Не удалось добавить товар в корзину'));
+ }
+ } else {
+ error_log('Validation failed for product: ' . $product_id); // Отладка
+ wp_send_json_error(array('message' => 'Ошибка валидации товара'));
+ }
+
+ wp_die();
}
\ No newline at end of file
diff --git a/wp-content/themes/cosmopet/modules/footer/assets/css/gp-style-desktop.css b/wp-content/themes/cosmopet/modules/footer/assets/css/gp-style-desktop.css
index f02a7b9..e966923 100644
--- a/wp-content/themes/cosmopet/modules/footer/assets/css/gp-style-desktop.css
+++ b/wp-content/themes/cosmopet/modules/footer/assets/css/gp-style-desktop.css
@@ -172,7 +172,7 @@
}
.modal__login {
- width: 412px;
+ width: 500px;
}
.modal__item.active {
diff --git a/wp-content/themes/cosmopet/modules/footer/assets/js/footer.js b/wp-content/themes/cosmopet/modules/footer/assets/js/footer.js
index 22e286c..bdd6ea3 100644
--- a/wp-content/themes/cosmopet/modules/footer/assets/js/footer.js
+++ b/wp-content/themes/cosmopet/modules/footer/assets/js/footer.js
@@ -63,12 +63,12 @@
$('.mini-profile__button--counter').addClass('disabled').html(response['cart_count'])
}
initCounters();
- let modal = document.querySelector('.modal'),
+ let modalF = document.querySelector('.modal'),
aside = document.querySelector('.modal__aside'),
device = window.screen.width;
if(!$.cookie('gp-cosmopet-cartadd')){
- modal.classList.add('active');
+ modalF.classList.add('active');
$('.modal__basket').addClass('active');
let thisContentElement = document.querySelector('.modal__basket');
@@ -645,66 +645,9 @@ toggleHeader('#pc-menu','.header__menu-block','.header__pc-menu', '.white', 'whi
toggleHeader('#phone-menu','.header__menu-block','.header__phone-menu', '.white', 'white');
// header
-// modal
-modalOpen('.button--filter', '.modal__filter');
-modalOpen('.basket-open', '.modal__basket');
-modalOpen('.login-open', '.modal__login');
-modalOpen('.open-to-know', '.modal__to-know');
-modalClose('.modal__close');
-modalClose('.modal-form-sub__close');
-let modal = document.querySelector('.modal');
-modal.onclick = function (event) {
- let target = event.target;
- if (target.classList.contains('modal')) {
- let aside = target.querySelector('.modal__aside'),
- modalItem = target.querySelector('.modal__item.active');
- aside.style.width = '0px';
- setTimeout(() => {
- modalItem.style.cssText = '';
- modalItem.classList.remove('active');
- target.classList.remove('active');
- }, 300);
- }
-
-
-}
-
-// modal
-
-// toggle
-toggleOpenX('.toggle', '.toggle__title', '.toggle__content', '.toggle__block-content', true);
-// toggle
-
-// radio-button
-// let radioButtons = document.querySelectorAll('.radio-button');
-
-// radioButtons.forEach(radioBlock => {
-// let buttons = radioBlock.querySelectorAll('.button');
-
-// buttons.forEach(button => {
-// let input = radioBlock.querySelector('.radio-button__input');
-
-// button.onclick = function (e) {
-// e.preventDefault();
-
-// buttons.forEach(thisButton => {
-// if (thisButton.classList.contains('active')) {
-// thisButton.classList.remove('active')
-// }
-// })
-
-// let text = button.textContent.trim();
-
-// button.classList.toggle('active');
-
-// input.value = text;
-// }
-// })
-// })
-// radio-button
function initOverlay(){
diff --git a/wp-content/themes/cosmopet/modules/footer/module-controller.php b/wp-content/themes/cosmopet/modules/footer/module-controller.php
index 82f4e99..e1d0f4a 100644
--- a/wp-content/themes/cosmopet/modules/footer/module-controller.php
+++ b/wp-content/themes/cosmopet/modules/footer/module-controller.php
@@ -1,189 +1,188 @@
-<<<<<<< Updated upstream
-Hello, {$first_name} {$last_name}!";
- } else {
- $html = "Hello, {$first_name} {$last_name}!
";
- }
- if (isset($tg_user['photo_url'])) {
- $photo_url = htmlspecialchars($tg_user['photo_url']);
- $html .= "
";
- }
- $html .= "Log out
";
- } else {
- $bot_username = BOT_USERNAME;
- $html = '';
- }
- if(!is_user_logged_in()) {
- echo $html;
- }
-}
-
-add_action( 'wp_ajax_ontelegramauth', 'onTelegramAuth' );
-add_action( 'wp_ajax_nopriv_ontelegramauth', 'onTelegramAuth' );
-
-function onTelegramAuth(){
- $tg_id = $_POST['userid'];
- $tg_username = $_POST['username'];
- $user = get_users(
- array(
- 'meta_key' => 'tg_account',
- 'meta_value' => $tg_id
- )
- );
- // $user = get_users(
- // array(
- // 'meta_key' => 'tg_username',
- // 'meta_value' => $tg_username
- // )
- // );
-
- // Генерация пароля
- $alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890@#!()';
- $pass = array();
- $alphaLength = strlen($alphabet) - 1;
- for ($i = 0; $i < 12; $i++) {
- $n = rand(0, $alphaLength);
- $pass[] = $alphabet[$n];
- }
- $pass = implode($pass);
-
- if($user) {
- $user_login = $user[0]->data->user_login;
- $user_id = get_user_by( 'login', $user_login )->ID;
- wp_set_password( $pass, get_user_by( 'login', $user_login )->ID );
- wp_signon(
- array(
- 'user_login' => $user_login,
- 'user_password' => $pass,
- 'remember' => 'on',
- )
- );
- } else {
- $user_id = wp_create_user( $tg_username, $pass, '');
- add_user_meta( $user_id, 'tg_account', $tg_id);
- add_user_meta( $user_id, 'tg_username', $tg_username);
- wp_update_user( [
- 'ID' => $user_id,
- 'first_name' => $_POST['fname'],
- 'last_name' => $_POST['lname']
- ] );
- wp_set_auth_cookie( $user_id, true );
- }
-
-}
-
-add_action( 'wp_ajax_linktelegram', 'linkTelegram' );
-add_action( 'wp_ajax_nopriv_linktelegram', 'linkTelegram' );
-
-function linkTelegram(){
- $tg_id = $_POST['userid'];
- $user_id = get_current_user_id();
-
- add_user_meta( $user_id, 'tg_account', $tg_id);
- wp_update_user( [
- 'ID' => $user_id,
- 'first_name' => $_POST['fname'],
- 'last_name' => $_POST['lname']
- ] );
-}
-
-add_action( 'wp_ajax_email_link', 'emailLink' );
-add_action( 'wp_ajax_nopriv_email_link', 'emailLink' );
-function emailLink(){
-
- $email = $_POST['email'];
- $user_id = get_current_user_id();
-
- if(email_exists($email)){
- header("Content-Type: application/json");
- echo json_encode(array(
- 'error' => esc_html__( 'Email is already registered', 'woodmart' )
- ));
- exit();
- } else {
- wp_update_user( [
- 'ID' => $user_id,
- 'user_email' => $email
- ] );
- }
-
-
-}
-
-
-
-// Добавляем колонку Telegram в список пользователей
-add_filter('manage_users_columns', 'add_tg_account_column');
-function add_tg_account_column($columns) {
- $columns['tg_username'] = 'Telegram';
- return $columns;
-}
-
-// Заполняем колонку данными
-add_filter('manage_users_custom_column', 'add_tg_account_column_content', 10, 3);
-function add_tg_account_column_content($value, $column_name, $user_id) {
- if ('tg_username' == $column_name) {
- $tg_account = get_user_meta($user_id, 'tg_username', true);
- if ($tg_account) {
- return '@' . esc_html($tg_account) . '';
- }
- return 'не указан';
- }
- return $value;
-}
-
-// Делаем колонку сортируемой
-add_filter('manage_users_sortable_columns', 'make_tg_account_column_sortable');
-function make_tg_account_column_sortable($columns) {
- $columns['tg_username'] = 'tg_username';
- return $columns;
-}
-
-// Обрабатываем сортировку
-add_action('pre_get_users', 'handle_tg_account_sorting');
-function handle_tg_account_sorting($query) {
- if (!is_admin() || !$query->is_main_query()) {
- return;
- }
-
- if ('tg_username' === $query->get('orderby')) {
- $query->set('meta_key', 'tg_username');
- $query->set('orderby', 'meta_value');
- }
-}
-
+Hello, {$first_name} {$last_name}!";
+ } else {
+ $html = "Hello, {$first_name} {$last_name}!
";
+ }
+ if (isset($tg_user['photo_url'])) {
+ $photo_url = htmlspecialchars($tg_user['photo_url']);
+ $html .= "
";
+ }
+ $html .= "Log out
";
+ } else {
+ $bot_username = BOT_USERNAME;
+ $html = '';
+ }
+ if(!is_user_logged_in()) {
+ echo $html;
+ }
+}
+
+add_action( 'wp_ajax_ontelegramauth', 'onTelegramAuth' );
+add_action( 'wp_ajax_nopriv_ontelegramauth', 'onTelegramAuth' );
+
+function onTelegramAuth(){
+ $tg_id = $_POST['userid'];
+ $tg_username = $_POST['username'];
+ $user = get_users(
+ array(
+ 'meta_key' => 'tg_account',
+ 'meta_value' => $tg_id
+ )
+ );
+ // $user = get_users(
+ // array(
+ // 'meta_key' => 'tg_username',
+ // 'meta_value' => $tg_username
+ // )
+ // );
+
+ // Генерация пароля
+ $alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890@#!()';
+ $pass = array();
+ $alphaLength = strlen($alphabet) - 1;
+ for ($i = 0; $i < 12; $i++) {
+ $n = rand(0, $alphaLength);
+ $pass[] = $alphabet[$n];
+ }
+ $pass = implode($pass);
+
+ if($user) {
+ $user_login = $user[0]->data->user_login;
+ $user_id = get_user_by( 'login', $user_login )->ID;
+ wp_set_password( $pass, get_user_by( 'login', $user_login )->ID );
+ wp_signon(
+ array(
+ 'user_login' => $user_login,
+ 'user_password' => $pass,
+ 'remember' => 'on',
+ )
+ );
+ } else {
+ $user_id = wp_create_user( $tg_username, $pass, '');
+ add_user_meta( $user_id, 'tg_account', $tg_id);
+ add_user_meta( $user_id, 'tg_username', $tg_username);
+ wp_update_user( [
+ 'ID' => $user_id,
+ 'first_name' => $_POST['fname'],
+ 'last_name' => $_POST['lname']
+ ] );
+ wp_set_auth_cookie( $user_id, true );
+ }
+
+}
+
+add_action( 'wp_ajax_linktelegram', 'linkTelegram' );
+add_action( 'wp_ajax_nopriv_linktelegram', 'linkTelegram' );
+
+function linkTelegram(){
+ $tg_id = $_POST['userid'];
+ $user_id = get_current_user_id();
+
+ add_user_meta( $user_id, 'tg_account', $tg_id);
+ wp_update_user( [
+ 'ID' => $user_id,
+ 'first_name' => $_POST['fname'],
+ 'last_name' => $_POST['lname']
+ ] );
+}
+
+add_action( 'wp_ajax_email_link', 'emailLink' );
+add_action( 'wp_ajax_nopriv_email_link', 'emailLink' );
+function emailLink(){
+
+ $email = $_POST['email'];
+ $user_id = get_current_user_id();
+
+ if(email_exists($email)){
+ header("Content-Type: application/json");
+ echo json_encode(array(
+ 'error' => esc_html__( 'Email is already registered', 'woodmart' )
+ ));
+ exit();
+ } else {
+ wp_update_user( [
+ 'ID' => $user_id,
+ 'user_email' => $email
+ ] );
+ }
+
+
+}
+
+
+
+// Добавляем колонку Telegram в список пользователей
+add_filter('manage_users_columns', 'add_tg_account_column');
+function add_tg_account_column($columns) {
+ $columns['tg_username'] = 'Telegram';
+ return $columns;
+}
+
+// Заполняем колонку данными
+add_filter('manage_users_custom_column', 'add_tg_account_column_content', 10, 3);
+function add_tg_account_column_content($value, $column_name, $user_id) {
+ if ('tg_username' == $column_name) {
+ $tg_account = get_user_meta($user_id, 'tg_username', true);
+ if ($tg_account) {
+ return '@' . esc_html($tg_account) . '';
+ }
+ return 'не указан';
+ }
+ return $value;
+}
+
+// Делаем колонку сортируемой
+add_filter('manage_users_sortable_columns', 'make_tg_account_column_sortable');
+function make_tg_account_column_sortable($columns) {
+ $columns['tg_username'] = 'tg_username';
+ return $columns;
+}
+
+// Обрабатываем сортировку
+add_action('pre_get_users', 'handle_tg_account_sorting');
+function handle_tg_account_sorting($query) {
+ if (!is_admin() || !$query->is_main_query()) {
+ return;
+ }
+
+ if ('tg_username' === $query->get('orderby')) {
+ $query->set('meta_key', 'tg_username');
+ $query->set('orderby', 'meta_value');
+ }
+}
+
?>
\ No newline at end of file
diff --git a/wp-content/themes/cosmopet/modules/forms/module-ajax-controller.php b/wp-content/themes/cosmopet/modules/forms/module-ajax-controller.php
index dacdfd5..445e0bd 100644
--- a/wp-content/themes/cosmopet/modules/forms/module-ajax-controller.php
+++ b/wp-content/themes/cosmopet/modules/forms/module-ajax-controller.php
@@ -13,12 +13,12 @@ add_action('wp_ajax_nopriv_contact_form', function() {
});
add_action('wp_ajax_subscribe_form', function() {
- $enabledHandlers = ['b24', 'email', 'mindbox'];
+ $enabledHandlers = ['b24', 'email'];
process_form($enabledHandlers);
});
add_action('wp_ajax_nopriv_subscribe_form', function() {
- $enabledHandlers = ['b24', 'email', 'mindbox'];
+ $enabledHandlers = ['b24', 'email'];
process_form($enabledHandlers);
});
diff --git a/wp-content/themes/cosmopet/modules/forms/module-controller.php b/wp-content/themes/cosmopet/modules/forms/module-controller.php
index b5aa7c3..144ebc3 100644
--- a/wp-content/themes/cosmopet/modules/forms/module-controller.php
+++ b/wp-content/themes/cosmopet/modules/forms/module-controller.php
@@ -34,43 +34,43 @@ class zohoHandler extends FormHandler {
}
}
-class mindboxHandler extends FormHandler {
- public function handle($data) {
- // Отправка в стандартный обработчик (например, email)
- error_log("Отправка в mindBox: " . json_encode($data));
- // if (is_string($data)) {
- // parse_str($data, $parsedData); // Преобразуем строку в массив
- // $data = $parsedData;
- // }
+// class mindboxHandler extends FormHandler {
+// public function handle($data) {
+// // Отправка в стандартный обработчик (например, email)
+// error_log("Отправка в mindBox: " . json_encode($data));
+// // if (is_string($data)) {
+// // parse_str($data, $parsedData); // Преобразуем строку в массив
+// // $data = $parsedData;
+// // }
- // $url = 'https://api.mindbox.ru/v3/operations/async?endpointId=cosmopet.Website&operation=DobavleniePolzovatelyaSSajta';
+// // $url = 'https://api.mindbox.ru/v3/operations/async?endpointId=cosmopet.Website&operation=DobavleniePolzovatelyaSSajta';
- // $data = array(
- // "email" => $data['email'],
- // "subscriptions" => array(
- // array(
- // "pointOfContact"=> "Email"
- // ),
- // ),
- // );
+// // $data = array(
+// // "email" => $data['email'],
+// // "subscriptions" => array(
+// // array(
+// // "pointOfContact"=> "Email"
+// // ),
+// // ),
+// // );
- // $data_string = json_encode(array("customer" =>$data));
+// // $data_string = json_encode(array("customer" =>$data));
- // $ch = curl_init($url);
+// // $ch = curl_init($url);
- // curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
+// // curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
- // curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
+// // curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
- // curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+// // curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- // $result = curl_exec($ch);
+// // $result = curl_exec($ch);
- // curl_close($ch);
- return parent::handle($data);
- }
-}
+// // curl_close($ch);
+// return parent::handle($data);
+// }
+// }
class emailHandler extends FormHandler {
public function handle($data) {
@@ -113,9 +113,9 @@ class FormHandlerFactory {
if (in_array('zoho', $enabledHandlers)) {
$handler = new zohoHandler($handler);
}
- if (in_array('mindbox', $enabledHandlers)) {
- $handler = new mindboxHandler($handler);
- }
+ // if (in_array('mindbox', $enabledHandlers)) {
+ // $handler = new mindboxHandler($handler);
+ // }
if (in_array('b24', $enabledHandlers)) {
$handler = new b24Handler($handler);
}
diff --git a/wp-content/themes/cosmopet/modules/shop/components/checkout/assets/css/checkout.css b/wp-content/themes/cosmopet/modules/shop/components/checkout/assets/css/checkout.css
index f3ee59b..808f7fe 100644
--- a/wp-content/themes/cosmopet/modules/shop/components/checkout/assets/css/checkout.css
+++ b/wp-content/themes/cosmopet/modules/shop/components/checkout/assets/css/checkout.css
@@ -1304,4 +1304,40 @@
.cdek-office-info{
display: none;
+}
+
+.quantity-control {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ margin-bottom: 10px;
+}
+.quantity-decrease, .quantity-increase {
+ background: #f0f0f0;
+ border: none;
+ padding: 5px 10px;
+ cursor: pointer;
+ font-size: 16px;
+ border-radius: 4px;
+}
+.quantity-decrease:hover, .quantity-increase:hover {
+ background: #e0e0e0;
+}
+.quantity-input {
+ width: 50px;
+ text-align: center;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ padding: 5px;
+}
+.remove-item {
+ background: #ff4d4d;
+ color: white;
+ border: none;
+ padding: 5px 10px;
+ cursor: pointer;
+ border-radius: 4px;
+}
+.remove-item:hover {
+ background: #e63939;
}
\ No newline at end of file
diff --git a/wp-content/themes/cosmopet/modules/shop/components/checkout/assets/js/script.js b/wp-content/themes/cosmopet/modules/shop/components/checkout/assets/js/script.js
index 3035f2c..fafa1a1 100644
--- a/wp-content/themes/cosmopet/modules/shop/components/checkout/assets/js/script.js
+++ b/wp-content/themes/cosmopet/modules/shop/components/checkout/assets/js/script.js
@@ -130,7 +130,7 @@ jQuery(document).ready(function ($) {
$('#billing_phone-error').addClass('active');
}
if (errorMessage == 'Order pickup point not selected.' || errorMessage == 'Не выбран ПВЗ для доставки заказа.'){
- $('#pvz-error').html(errorMessage)
+ $('#pvz-error').html('Не выбран ПВЗ для доставки заказа.')
$('#pvz-error').addClass('active');
}
if (errorMessage == 'adress_error'){
@@ -159,3 +159,174 @@ jQuery(document).ready(function ($) {
})
});
+jQuery(document).ready(function($) {
+ // Функция для получения активных фильтров из URL
+ function getActiveFilters() {
+ const params = new URLSearchParams(window.location.search);
+ const filters = [];
+
+ params.forEach((value, key) => {
+ if (key.startsWith('filter_') || key === 'min_price' || key === 'max_price') {
+ let filterName = key.replace('filter_', '').replace('_', ' ');
+ let filterValue = value.split(',').map(val => decodeURIComponent(val.replace(/\+/g, ' ')));
+
+ if (key === 'min_price') {
+ filterName = 'Цена от';
+ filterValue = [value + ' ₽'];
+ } else if (key === 'max_price') {
+ filterName = 'Цена до';
+ filterValue = [value + ' ₽'];
+ }
+
+ filters.push({
+ key: key,
+ name: filterName.charAt( W1).toUpperCase() + filterName.slice(1),
+ values: filterValue
+ });
+ }
+ });
+
+ return filters;
+ }
+
+ // Функция для отображения активных фильтров
+ function displayActiveFilters() {
+ const $filterList = $('.active-filters__list');
+ const $filterContainer = $('.active-filters');
+ const $clearButton = $('.active-filters__clear');
+ $filterList.empty();
+
+ const activeFilters = getActiveFilters();
+
+ if (activeFilters.length > 0) {
+ $filterContainer.show();
+ $clearButton.show();
+
+ activeFilters.forEach(filter => {
+ filter.values.forEach(value => {
+ const $filterTag = $('', {
+ class: 'active-filters__tag',
+ html: `${filter.name}: ${value} ×`
+ });
+ $filterList.append($filterTag);
+ });
+ });
+ W2 else {
+ $filterContainer.hide();
+ $clearButton.hide();
+ }
+ }
+
+ // Инициализация при загрузке страницы
+ displayActiveFilters();
+
+ // Обновление фильтров после AJAX-фильтрации
+ $(document).on('wcpf_after_filtering', function() {
+ displayActiveFilters();
+ });
+
+ // Удаление фильтра
+ $(document).on('click', '.active-filters__remove', function() {
+ const key = $(this).data('key');
+ const value = $(this).data('value');
+ const params = new URLSearchParams(window.location.search);
+
+ if (key === 'min_price' || key === 'max_price') {
+ params.delete(key);
+ } else {
+ let values = params.get(key) ? params.get(key).split(',') : [];
+ values = values.filter(val => decodeURIComponent(val.replace(/\+/g, ' ')) !== value);
+ if (values.length > 0) {
+ params.set(key, values.join(','));
+ } else {
+ params.delete(key);
+ }
+ }
+
+ const newUrl = window.location.pathname + (params.toString() ? '?' + params.toString() : '');
+ window.history.pushState({}, '', newUrl);
+
+ // Запуск AJAX-фильтрации
+ $.ajax({
+ url: wc_checkout_params.ajax_url,
+ type: 'POST',
+ data: {
+ action: 'wcpf_filter',
+ query: params.toString(),
+ category_id: $('#load-more-products').data('category_id'),
+ category_type: $('#load-more-products').data('category_type')
+ },
+ success: function(response) {
+ if (response.success) {
+ $('.product__main').html(response.data.products);
+ displayActiveFilters();
+ $(document.body).trigger('wc_fragments_refreshed');
+ }
+ },
+ error: function() {
+ alert('Ошибка при обновлении фильтров');
+ }
+ });
+ });
+
+ // Очистка всех фильтров
+ $(document).on('click', '.active-filters__clear', function() {
+ const params = new URLSearchParams(window.location.search);
+ const newUrl = window.location.pathname;
+ window.history.pushState({}, '', newUrl);
+
+ $.ajax({
+ url: wc_checkout_params.ajax_url,
+ type: 'POST',
+ data: {
+ action: 'wcpf_filter',
+ query: '',
+ category_id: $('#load-more-products').data('category_id'),
+ category_type: $('#load-more-products').data('category_type')
+ },
+ success: function(response) {
+ if (response.success) {
+ $('.product__main').html(response.data.products);
+ displayActiveFilters();
+ $(document.body).trigger('wc_fragments_refreshed');
+ }
+ },
+ error: function() {
+ alert('Ошибка при очистке фильтров');
+ }
+ });
+ });
+
+ // Обработка загрузки дополнительных продуктов
+ $(document).on('click', '#load-more-products', function() {
+ const $button = $(this);
+ const categoryId = $button.data('category_id');
+ const categoryType = $button.data('category_type');
+ const page = parseInt($button.data('page') || 1) + 1;
+
+ $.ajax({
+ url: wc_checkout_params.ajax_url,
+ type: 'POST',
+ data: {
+ action: 'load_more_products',
+ category_id: categoryId,
+ category_type: categoryType,
+ page: page,
+ query: window.location.search
+ },
+ success: function(response) {
+ if (response.success) {
+ $('.product__main').append(response.data.products);
+ $button.data('page', page);
+ if (!response.data.has_more) {
+ $button.hide();
+ }
+ }
+ },
+ error: function() {
+ alert('Ошибка при загрузке продуктов');
+ }
+ });
+ });
+});
+
diff --git a/wp-content/themes/cosmopet/templates/footer.twig b/wp-content/themes/cosmopet/templates/footer.twig
index 9478b5e..eba9552 100644
--- a/wp-content/themes/cosmopet/templates/footer.twig
+++ b/wp-content/themes/cosmopet/templates/footer.twig
@@ -75,7 +75,7 @@
-
-