Fix | bugfix #17

Merged
Andrei-10 merged 1 commits from bugfix_3 into master 3 months ago
  1. 12
      wp-content/themes/cosmopet/functions.php
  2. 50
      wp-content/themes/cosmopet/global-functions/multilang-functions.php
  3. 4
      wp-content/themes/cosmopet/modules/footer/assets/css/gp-style-desktop.css
  4. 6
      wp-content/themes/cosmopet/modules/forms/assets/js/form.js
  5. 31
      wp-content/themes/cosmopet/modules/layout/assets/css/gp-style-core.css
  6. 59
      wp-content/themes/cosmopet/modules/shop/components/single-product/assets/css/gp-style-core.css
  7. 4
      wp-content/themes/cosmopet/modules/shop/components/single-product/component-template.twig
  8. 275
      wp-content/themes/cosmopet/static/front-page/css/style.css
  9. 5
      wp-content/themes/cosmopet/static/front-page/img/stars.svg
  10. 95
      wp-content/themes/cosmopet/static/front-page/js/main.js
  11. BIN
      wp-content/themes/cosmopet/static/img/form-img.png
  12. 31
      wp-content/themes/cosmopet/templates/footer.twig
  13. 78
      wp-content/themes/cosmopet/templates/front-page/front-page.twig
  14. 2
      wp-content/themes/cosmopet/templates/front-page/template-front-page.php
  15. 2
      wp-content/themes/cosmopet/templates/header.twig
  16. 21
      wp-content/themes/cosmopet/templates/modal.twig
  17. 89
      wp-content/themes/cosmopet/templates/shop/bestsellers.twig
  18. 4
      wp-content/themes/cosmopet/woocommerce/archive-product/archive-product-modal.twig
  19. 22
      wp-content/themes/cosmopet/woocommerce/archive-product/archive-product.twig

@ -969,4 +969,14 @@ add_filter( 'script_loader_tag', function ( $tag, $handle, $src ) {
return $tag;
}, 10, 3 );
// Для кнопки "Применить фильтр"
add_filter('wbw_filter_submit_button_text', 'change_wbw_filter_button_text');
function change_wbw_filter_button_text($text) {
return 'Ваш текст'; // Например, "Фильтровать" или "Поиск"
}
// Для кнопки сброса (если есть)
add_filter('wbw_filter_reset_button_text', 'change_wbw_reset_button_text');
function change_wbw_reset_button_text($text) {
return 'Сбросить';
}

@ -40,5 +40,55 @@ add_action('init', function() {
pll_register_string ('Этапы производс&shyтва корма', 'Этапы производс&shyтва корма');
pll_register_string ('Все статьи', 'Все статьи');
pll_register_string ('Узнать больше', 'Узнать больше');
pll_register_string ('Продукция', 'Продукция');
pll_register_string ('Фильтры', 'Фильтры');
pll_register_string ('Новинка', 'Новинка');
pll_register_string ('Распродажа %', 'Распродажа %');
pll_register_string ('Купить', 'Купить');
pll_register_string ('Подробнее', 'Подробнее');
pll_register_string ('Объем', 'Объем');
pll_register_string ('Количество', 'Количество');
pll_register_string ('Добавить в корзину', 'Добавить в корзину');
pll_register_string ('Применить', 'Применить');
pll_register_string ('Сбросить фильтры', 'Сбросить фильтры');
pll_register_string('cosmopet_bestsellers_title', 'BESTSELLERS', 'CosmoPet Theme Bestsellers');
pll_register_string('cosmopet_previous_products', 'Previous products', 'CosmoPet Theme Bestsellers');
pll_register_string('cosmopet_next_products', 'Next products', 'CosmoPet Theme Bestsellers');
pll_register_string('cosmopet_view_product', 'View product:', 'CosmoPet Theme Bestsellers');
pll_register_string('cosmopet_product_image', 'Product image:', 'CosmoPet Theme Bestsellers');
pll_register_string('cosmopet_buy_button', 'Buy', 'CosmoPet Theme Bestsellers');
pll_register_string('cosmopet_all_products', 'All products', 'CosmoPet Theme Bestsellers');
pll_register_string('cosmopet_no_products', 'No bestsellers found', 'CosmoPet Theme Bestsellers');
pll_register_string('cosmopet_back_to_catalog', 'к каталогу', 'Product Detail');
pll_register_string('cosmopet_sale_tag', 'Распродажа %', 'Product Detail');
pll_register_string('cosmopet_add_to_cart', 'Добавить в корзину', 'Product Detail');
pll_register_string('cosmopet_description', 'ОПИСАНИЕ', 'Product Detail');
pll_register_string('cosmopet_composition', 'СОСТАВ', 'Product Detail');
pll_register_string('cosmopet_feeding_recommendations', 'РЕКОМЕНДАЦИИ ПО КОРМЛЕНИЮ', 'Product Detail');
pll_register_string('cosmopet_nutritional_value', 'ПИЩЕВАЯ ЦЕННОСТЬ', 'Product Detail');
pll_register_string('cosmopet_vitamins_per_kg', 'ВИТАМИНЫ НА КГ', 'Product Detail');
pll_register_string('cosmopet_nutritional_additives_per_kg', 'ПИТАТЕЛЬНЫЕ ДОБАВКИ НА КГ', 'Product Detail');
pll_register_string('cosmopet_energy_value_per_100g', 'ЭНЕРГЕТИЧЕСКАЯ ЦЕННОСТЬ НА 100 ГРАММ', 'Product Detail');
pll_register_string('cosmopet_important', 'Важно', 'Product Detail');
pll_register_string('cosmopet_you_may_also_like', 'вашему питомцу может понравиться', 'Product Detail');
pll_register_string('cosmopet_new_product', 'Новинка', 'Product Detail');
pll_register_string('cosmopet_buy', 'Купить', 'Product Detail');
pll_register_string('cosmopet_volume', 'Объем', 'Product Detail');
pll_register_string('cosmopet_quantity', 'Количество', 'Product Detail');
pll_register_string('cosmopet_details', 'Подробнее', 'Product Detail');
pll_register_string('reviews_title', 'Customer Reviews', 'Reviews Section');
pll_register_string('show_more', 'Show more', 'Reviews Section');
pll_register_string('default_reviewer_name', 'Anastasia', 'Reviews Section');
pll_register_string('default_reviewer_role', 'dog owner', 'Reviews Section');
pll_register_string('default_review_excerpt', 'Just wanted to say thank you - your treats are amazing!', 'Reviews Section');
pll_register_string('default_review_full_1', 'She loves the lamb one - tasty, safe, and it even works great as a dental treat!', 'Reviews Section');
pll_register_string('default_review_full_2', 'And the salmon sandwich in the tube is our go-to. We never leave the house without it. Perfect for walks and training!', 'Reviews Section');
pll_register_string('default_review_full_3', 'So glad we found you!', 'Reviews Section');
pll_register_string ('ВАША ЗАЯВКА ПРИНЯТА!', 'ВАША ЗАЯВКА ПРИНЯТА!');
pll_register_string ('Спасибо! Сообщение успешно отправлено.', 'Спасибо! Сообщение успешно отправлено.');
pll_register_string ('Наш менеджер скоро свяжемся с вами<br>для уточнения деталей.', 'Наш менеджер скоро свяжемся с вами<br>для уточнения деталей.');
pll_register_string ('Вернуться на сайт', 'Вернуться на сайт');
});

@ -152,3 +152,7 @@
}
/* Footer end */
.social-media__icon {
width: 32px;
aspect-ratio: 1;
}

@ -8,7 +8,7 @@ function showModal(modalClass) {
// Функция для закрытия модальных окон
function closeModals() {
const modals = document.querySelectorAll('.modal');
const modals = document.querySelectorAll('.mform');
modals.forEach(modal => {
modal.style.display = 'none';
});
@ -26,7 +26,7 @@ function showModal(modalClass) {
// Закрытие при клике вне контента
window.addEventListener('click', function(event) {
const modals = document.querySelectorAll('.modal');
const modals = document.querySelectorAll('.mform');
modals.forEach(modal => {
if (event.target === modal) {
modal.style.display = 'none';
@ -52,7 +52,7 @@ jQuery(document).ready(function($) {
},
success: function(response) {
closeModals()
showModal('modal-success')
showModal('mform-success')
}
});
}

@ -271,7 +271,7 @@ textarea{
}
}
.modal {
.mform {
position: fixed;
top: 0;
left: 0;
@ -284,7 +284,7 @@ textarea{
z-index: 1000;
}
.modal-content {
.mform-content {
position: relative;
width: 100%;
max-width: 600px;
@ -294,9 +294,9 @@ textarea{
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
}
.modal-success .modal-content {
.mform-success .mform-content {
background-color: #fff;
background: url(/wp-content/uploads/2025/04/background.png) center center / contain no-repeat;
background: url(/wp-content/themes/cosmopet/static/img/form-img.png) center center / contain no-repeat;
background-color: #fff;
background-position: bottom;
height: 500px;
@ -306,15 +306,15 @@ textarea{
gap: 20px;
}
.modal-success .modal-button-container {
.mform-success .mform-button-container {
margin-top: 200px;
}
.modal-message {
.mform-message {
font-size: 20px;
}
.modal-success .modal-image {
.mform-success .mform-image {
position: absolute;
bottom: 0;
left: 50%;
@ -331,7 +331,7 @@ textarea{
color: #000;
}
.modal-title {
.mform-title {
font-size: 32px;
font-weight: bold;
margin-bottom: 10px;
@ -339,17 +339,17 @@ textarea{
}
/* Стили для второго модального окна - Предложить статью */
.modal-offer .modal-content {
.mform-offer .mform-content {
background-color: #d6ff9f;
padding-bottom: 30px;
}
.modal-subtitle {
.mform-subtitle {
font-size: 18px;
margin-bottom: 20px;
}
.modal-form {
.mform-form {
width: 100%;
}
@ -419,12 +419,12 @@ textarea{
/* Адаптивность */
@media (max-width: 768px) {
.modal-content {
.mform-content {
width: 90%;
padding: 30px 20px;
}
.modal-title {
.mform-title {
font-size: 18px;
margin-bottom: 5px;
}
@ -452,6 +452,7 @@ textarea{
}
}
.wrapper {
margin: 0 auto;
max-width: 1600px;
@ -472,10 +473,8 @@ textarea{
height: 100%;
background: rgba(0, 0, 0, 0.25);
z-index: 200;
opacity: 0;
z-index: 200;
transition: opacity .2s ease-out;
pointer-events: none;

@ -1,62 +1,3 @@
<<<<<<< HEAD
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* Переменные, шрифты, UI kit */
/*
700 - Bold
600 - SemiBold / Demi
500 - Medium
400 - Regular
*/
a{
cursor: pointer;
}
/* Глобальные переменные: */
:root {
/* fonts */
--font-family: "Craftwork Grotesk", sans-serif;
--second-family: "DIN 2014 Rounded", sans-serif;
--third-family: "Roboto", sans-serif;
/* color */
/* text */
--text-white: #fff;
--text-black: #121212;
--text-dark: #2b2b3b;
--text-grey: #999;
--text-red: #fa0505;
--text-green: #2ED15D;
--text-0: #000;
--text-3: #333;
--text-6: #666;
--text-9: #999;
/* background */
--background-white: #fff;
--background-black: #121212;
--background-grey: #f2f2f2;
--background-green: #2ED15D;
--background-green-white: #f4fff0;
--background-9: #999;
/* gradient */
--gradient-blue: radial-gradient(346.57% 244.17% at 149.73% -58.39%, rgb(15, 88, 129) 0%, rgb(30, 164, 156) 51.21689438819885%, rgb(118, 206, 117) 80.70731163024902%, rgb(236, 243, 159) 91.14583134651184%);
--gradient-turquoise: radial-gradient(346.57% 244.17% at 149.73% -58.39%, rgb(117, 196, 240) 0%, rgb(126, 231, 225) 51.21689438819885%, rgb(181, 228, 180) 80.70731163024902%, rgb(237, 244, 164) 91.14583134651184%);
--gradient-red: linear-gradient(22deg, #f44242 0%, #569ef0 100%);
}
=======
>>>>>>> 219d098 (Fix | bugfix after restructurization)
/* общие */
button{
cursor: pointer;

@ -52,7 +52,7 @@
{% endif %}
{% if product.is_on_sale() %}
<div class="product-item-label__tag product-item-label__tag--sale">
{{ function('pll_e', 'Распродажа') }} %
{{ function('pll_e', 'Распродажа %') }}
</div>
{% endif %}
</div>
@ -84,7 +84,7 @@
{{ product.get_regular_price }} {{ fn('get_woocommerce_currency_symbol') }}
</p>
<p class="detail-block-price-sale__perc">
{{ ((product.get_regular_price - product.get_price) / product.get_regular_price * 100)|round }} {{ fn('get_woocommerce_currency_symbol') }}
{{ ((product.get_regular_price - product.get_price) / product.get_regular_price * 100)|round }}
</p>
</div>
{% endif %}

@ -1506,6 +1506,7 @@ justify-content: center;
border-radius: 60px;
background: var(--creme-white, #F4F1F0);
box-shadow: 6px 9px 20px 0px rgba(0, 0, 0, 0.15);
margin-bottom: 6rem;
}
.discount__sale .discount_title {
@ -4001,4 +4002,278 @@ text-align: left;
.btn--black-hover {
transition: .3s
}
.reviews-plus{
background:none;
}
.section-nav{
position:relative;
display:block;
}
.reviews-plus .container{
display:flex;
align-items:center;
justify-content:space-between;;
}
.section-nav > *{
position:relative;
}
.section-nav {
display:flex;
}
.container-plus{
max-width:1040px;
margin:0 auto;
}
.section-title {
font-weight: 500;
font-size: 82px;
width:50%;
line-height:1.2;
text-transform: uppercase;
color: #f4f1f0;
}
.reviews-slider {
padding: 20px;
margin-top:20px;
position: relative;
overflow:visible !important;
}
.review-card {
background: white;
border-radius: 50px;
padding: 36px;
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
margin: 10px;
}
.review-header {
display: flex;
flex-direction:column;
align-items: left;
gap:20px;
margin-bottom: 20px;
}
/* Для нечетных слайдов (1, 3, 5...) */
.reviews-slider .swiper-slide:nth-child(odd) {
transform: rotate(-3deg);
transition: transform 0.3s ease;
border: 2px solid transparent;
background: padding-box linear-gradient(rgb(255 255 255), rgb(255 255 255)),
border-box linear-gradient(rgb(244 66 66), rgb(86 158 240 / 0.1));
}
.review-card{
position:relative;
}
.review-card:before{
content:'';
position:absolute;
background-image:url(https://test.cosmopet.ae/wp-content/uploads/2025/04/99.svg);
width:72px;
height:72px;
display:block;
right:36px;
top:36px;
}
/* Для четных слайдов (2, 4, 6...) */
.reviews-slider .swiper-slide:nth-child(even) {
transform: rotate(3deg);
transition: transform 0.3s ease;
border: 2px solid #dbbdbd;
background: #121212;
}
.reviews-slider .swiper-slide:nth-child(even) p , .reviews-slider .swiper-slide:nth-child(even) h3 {
color:#fff;
}
.review-avatar {
width: 78px;
height: 78px;
border-radius: 50%;
background:#00000020;
object-fit: cover;
margin-right: 15px;
}
.review-author h3 {
font-weight: 400;
font-size: 24px;
text-transform: uppercase;
}
.review-author p {
font-weight: 500;
font-size: 12px;
color: #121212;
}
.review-text {
font-weight: 500;
font-size: 15px;
color: #121212;
}
.review-more-content {
display: none;
}
.show-more-btn {
background: none;
border: none;
color: #4a90e2;
cursor: pointer;
padding: 5px 0;
margin-top: 10px;
font-weight: 600;
}
.show-more-btn:hover {
text-decoration: underline;
}
/* Swiper Navigation */
.reviews-plus .swiper-button-next,
.reviews-plus .swiper-button-prev {
border: 1px solid #121212;
border-radius: 20px;
padding: 16px;
width: 56px;
height: 56px;
background: #fff;
}
.reviews-plus .swiper-button-prev{
transform:rotate(-180deg)
}
.reviews-plus .swiper-button-next::after,
.reviews-plus .swiper-button-prev::after {
font-size: 18px;
display:none;
}
.swiper-pagination-bullet-active {
background: #4a90e2;
}
/* Popup Styling */
.review-popup {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0,0,0,0.7);
display: none;
justify-content: center;
align-items: center;
z-index: 1000;
}
.popup-content {
background: white;
padding: 30px;
border-radius: 12px;
max-width: 600px;
width: 90%;
max-height: 80vh;
overflow-y: auto;
position: relative;
}
.close-popup {
position: absolute;
top: 15px;
right: 15px;
font-size: 24px;
background: none;
border: none;
cursor: pointer;
color: #777;
}
.popup-review-content {
padding: 20px 0;
}
/* Responsive */
@media (max-width: 768px) {
.review-card {
padding: 20px;
}
.reviews-plus .container{
flex-wrap:wrap;
}
.review-text {
font-weight: 500;
font-size: 12px;
}
.star-igm{
width:20%;
}
.section-nav{
gap:5px;
}
.reviews-plus .swiper-button-next, .reviews-plus .swiper-button-prev {
border: 1px solid #121212;
border-radius: 10px;
padding: 5px;
inset:0;
width: 36px;
height: 36px;
background: #fff;
position: static !important;
margin-top: 16px;
}
.review-card{
padding:20px;
}
.section-title {
font-weight: 500;
font-size: 42px;
width: 100%;
line-height: 1.2;
text-transform: uppercase;
color: #f4f1f0;
}
}
.reviews-plus{
overflow: hidden;
}

@ -0,0 +1,5 @@
<svg width="236" height="158" viewBox="0 0 236 158" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M46.5 0L47.9151 19.2168C48.9345 33.0592 59.9408 44.0655 73.7832 45.0849L93 46.5L73.7832 47.9151C59.9408 48.9345 48.9345 59.9408 47.9151 73.7832L46.5 93L45.0849 73.7832C44.0655 59.9408 33.0592 48.9345 19.2168 47.9151L0 46.5L19.2168 45.0849C33.0592 44.0655 44.0655 33.0592 45.0849 19.2168L46.5 0Z" fill="white"/>
<path d="M116.5 119C117.268 129.435 125.565 137.732 136 138.5C125.565 139.268 117.268 147.565 116.5 158C115.732 147.565 107.435 139.268 97 138.5C107.435 137.732 115.732 129.435 116.5 119Z" fill="white"/>
<path d="M201.5 45L202.092 53.0399C203.111 66.8823 214.118 77.8886 227.96 78.9079L236 79.5L227.96 80.0921C214.118 81.1114 203.111 92.1177 202.092 105.96L201.5 114L200.908 105.96C199.889 92.1177 188.882 81.1114 175.04 80.0921L167 79.5L175.04 78.9079C188.882 77.8886 199.889 66.8822 200.908 53.0399L201.5 45Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 954 B

@ -197,11 +197,6 @@ document.addEventListener('DOMContentLoaded', function () {
slidesPerView: 'auto',
spaceBetween: 13,
mousewheel: {
sensitivity: 1,
enabled: true,
releaseOnEdges: true,
},
});
// sellerSlider
@ -215,11 +210,6 @@ document.addEventListener('DOMContentLoaded', function () {
nextEl: '.sellerSlider-next',
prevEl: '.sellerSlider-prev'
},
mousewheel: {
sensitivity: 1,
enabled: true,
releaseOnEdges: true,
},
breakpoints: {
250: {
slidesPerView: 1,
@ -248,11 +238,6 @@ document.addEventListener('DOMContentLoaded', function () {
let blogSlider = new Swiper(".blogSlider", {
slidesPerView: 2.5,
spaceBetween: 43,
mousewheel: {
sensitivity: 1,
enabled: true,
releaseOnEdges: true,
},
navigation: {
nextEl: '.blogSlider-next',
prevEl: '.blogSlider-prev'
@ -280,11 +265,6 @@ document.addEventListener('DOMContentLoaded', function () {
let cosmopetSwiper = new Swiper(".cosmopet-x__swiper", {
slidesPerView: 2.5,
spaceBetween: 43,
mousewheel: {
sensitivity: 1,
enabled: true,
releaseOnEdges: true,
},
navigation: {
nextEl: '.cosmopet-next',
prevEl: '.cosmopet-prev'
@ -316,11 +296,6 @@ document.addEventListener('DOMContentLoaded', function () {
nextEl: '.smiSlider-next',
prevEl: '.smiSlider-prev'
},
mousewheel: {
sensitivity: 1,
enabled: true,
releaseOnEdges: true,
},
breakpoints: {
300: {
slidesPerView: 1.3,
@ -490,4 +465,74 @@ document.addEventListener('DOMContentLoaded', function () {
swiperInstance.autoplay.start();
}, index * 1000); // Задержка перед стартом: 0, 1000, 2000 мс
});
});
document.addEventListener('DOMContentLoaded', function() {
// Initialize Swiper
const reviewsSwiper = new Swiper('.reviews-slider', {
slidesPerView: 1,
spaceBetween: 50,
pagination: {
el: '.swiper-pagination',
clickable: true,
},
navigation: {
nextEl: '.swiper-button-prev',
prevEl: '.swiper-button-next',
},
breakpoints: {
320: {
slidesPerView: 1.3,
spaceBetween: 20,
},
1024: {
slidesPerView: 2,
},
1200: {
slidesPerView: 2,
}
}
});
// Show more functionality
const showMoreButtons = document.querySelectorAll('.show-more-btn');
const reviewPopup = document.querySelector('.review-popup');
const popupContent = document.querySelector('.popup-review-content');
const closePopup = document.querySelector('.close-popup');
showMoreButtons.forEach(button => {
button.addEventListener('click', function() {
const reviewCard = this.closest('.review-card');
const reviewHeader = reviewCard.querySelector('.review-header').cloneNode(true);
const reviewText = reviewCard.querySelector('.review-text').cloneNode(true);
// Show the hidden content in the review text
const moreContent = reviewText.querySelector('.review-more-content');
if (moreContent) {
moreContent.style.display = 'block';
}
// Populate popup
popupContent.innerHTML = '';
popupContent.appendChild(reviewHeader);
popupContent.appendChild(reviewText);
// Show popup
reviewPopup.style.display = 'flex';
});
});
// Close popup
closePopup.addEventListener('click', function() {
reviewPopup.style.display = 'none';
});
// Close popup when clicking outside
reviewPopup.addEventListener('click', function(e) {
if (e.target === reviewPopup) {
reviewPopup.style.display = 'none';
}
});
});

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

@ -39,7 +39,7 @@
{% for item in social %}
<li>
<a href="{{item.link}}" target="_blank">
<img src="{{item.img}}">
<img class="social-media__icon" src="{{item.img}}">
</a>
</li>
{% endfor %}
@ -54,31 +54,30 @@
<!-- Footer end -->
{% verbatim %}
<div class="modal modal-success" style="display: none;">
<div class="modal-content">
<div class="mform mform-success" style="display: none;">
<div class="mform-content">
<div class="close-button">&times;</div>
<h2 class="modal-title">ВАША ЗАЯВКА ПРИНЯТА!</h2>
<div class="modal-message">
<p>Спасибо! Сообщение успешно отправлено.</p>
<p>Наш менеджер скоро свяжемся с вами<br>для уточнения деталей.</p>
<h2 class="mform-title">{{ fn('pll_e', 'ВАША ЗАЯВКА ПРИНЯТА!') }}</h2>
<div class="mform-message">
<p>{{ fn('pll_e', 'Спасибо! Сообщение успешно отправлено.') }}</p>
<p>{{ fn('pll_e', 'Наш менеджер скоро свяжемся с вами<br>для уточнения деталей.') }}</p>
</div>
<div class="modal-button-container">
<a href="/" class="submit-button">Вернуться на сайт</a>
<div class="mform-button-container">
<a href="/" class="submit-button">{{ fn('pll_e', 'Вернуться на сайт') }}</a>
</div>
</div>
</div>
<div class="modal modal-offer" style="display: none;">
<div class="modal-content">
<div class="mform mform-offer" style="display: none;">
<div class="mform-content">
<div class="close-button">&times;</div>
<h2 class="modal-title">ПРЕДЛОЖИТЕ СТАТЬЮ</h2>
<p class="modal-subtitle">или станьте автором</p>
<h2 class="mform-title">ПРЕДЛОЖИТЕ СТАТЬЮ</h2>
<p class="mform-subtitle">или станьте автором</p>
<form class="modal-form form-process" action="contact_form">
<form class="mform-form form-process" action="contact_form">
<div class="form-group full-width">
<input type="text" name="name" placeholder="Ваше имя *" required>
</div>
@ -103,4 +102,4 @@
</form>
</div>
</div>
{% endverbatim %}

@ -93,6 +93,11 @@
{% endif %}
</section>
{% endif %}
{% include 'shop/bestsellers.twig' %}
{% if show_rev %}
<section class="reviews">
<div class="container">
@ -608,9 +613,80 @@
</div>
</div>
</section>
{% endif %}
{% if reviews %}
<section class="reviews reviews-plus">
<div class="container">
<h2 class="section-title">{{ function('pll_e', 'Customer Reviews') }}</h2>
<img class="star-igm" src="{{ theme.link }}/static/front-page/img/stars.svg" alt="{{ function('pll_e', 'Customer Reviews') }}">
<div class="section-nav">
<div class="swiper-button-next">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.5 12.3638H21" stroke="#121212" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
<path d="M4.5 12.3638L10.864 18.7277" stroke="#121212" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
<path d="M4.5 12.3638L10.864 5.99981" stroke="#121212" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
</svg>
</div>
<div class="swiper-button-prev">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.5 12.3638H21" stroke="#121212" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
<path d="M4.5 12.3638L10.864 18.7277" stroke="#121212" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
<path d="M4.5 12.3638L10.864 5.99981" stroke="#121212" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
</svg>
</div>
</div>
</div>
<div class="container-plus">
<div class="reviews-slider swiper">
<div class="swiper-wrapper">
{% for review in reviews %}
<div class="swiper-slide review-card">
<div class="review-content">
<div class="review-header">
{% if review.reviewer_photo %}
<img src="{{ review.reviewer_photo.url }}" alt="{{ review.reviewer_photo.alt|default(review.reviewer_name) }}" class="review-avatar">
{% else %}
<img src="{{ theme.uri }}/path-to-default-image.jpg" alt="{{ function('pll_e', 'Reviewer') }}" class="review-avatar">
{% endif %}
<div class="review-author">
<h3>{{ review.reviewer_name }}</h3>
<p>{{ review.reviewer_role }}</p>
</div>
</div>
<div class="review-text">
<p>{{ review.review_excerpt }}</p>
{% if review.review_full %}
<div class="review-more-content">
{{ review.review_full }}
</div>
{% endif %}
</div>
{% if review.review_full %}
<button class="show-more-btn">{{ function('pll_e', 'Show more') }}</button>
{% endif %}
</div>
</div>
{% endfor %}
</div>
</div>
</div>
<!-- Review Popup -->
<div class="review-popup">
<div class="popup-content">
<button class="close-popup">&times;</button>
<div class="popup-review-content"></div>
</div>
</div>
</section>
{% endif %}
{% if show_promo %}
{% include 'forms/discount.twig' %}
{% endif %}

@ -77,7 +77,7 @@ $context['show_promo'] = get_field('promo_show');
$context['show_rev'] = get_field('vet_show');
$context['show_q'] = get_field('quiz_show');
$context['show_blog'] = get_field('blog_show');
$context['reviews'] = get_field('reviews');
$context['sub_title'] = get_field('sub_title');
$context['sub_text'] = get_field('sub_text');
Timber::render('templates/front-page/front-page.twig', $context);

@ -152,7 +152,7 @@
<button class="header__open-menu" id="phone-menu">
</button>
<a href="https://cosmopet.shop" class="header__logo">
<a href="/" class="header__logo">
<svg class="header__logo-black" xmlns="http://www.w3.org/2000/svg" width="181" height="40"
viewBox="0 0 181 40" fill="none">
<path

@ -6,7 +6,7 @@
</button>
<div class="modal__header">
<p class="modal__title">Фильтры</p>
<p class="modal__title">{{ fn ('pll_e', 'Фильтры') }}</p>
{{sidebar_filters}}
</div>
</div>
@ -18,28 +18,23 @@
<img src="assets/img/svg/main/black-x.svg" alt="">
</button>
<div class="modal__header">
<p class="modal__small-title">Узнать о поступлении</p>
<p class="modal__small-title">{{ fn ('pll_e', 'Узнать о поступлении') }}</p>
<p class="modal__text">
Оставьте свой e-mail, и мы оповестим вас, когда продукт появится
{{ fn ('pll_e', 'Оставьте свой e-mail, и мы оповестим вас, когда продукт появится') }}
</p>
<form action="" class="modal__form-sub">
<div class="label">
<label for="mail" class="label__title">
mail
{{ fn ('pll_e', 'mail') }}
</label>
<div class="label__question">
text <br>
re
</div>
</div>
<input type="text" class="form__input" id="mail" placeholder="Email">
<div class="checkbox checkbox--small">
<div class="checkbox__state"></div>
<input type="checkbox" name="" id="" class="checkbox__input">
<label for="" class="checkbox__label">
Я ознакомился с <a href="#">политикой обработки персональных данных</a> и <a href="#">пользовательским соглашением</a>
{{ fn ('pll_e', 'Я ознакомился с <a href="#">политикой обработки персональных данных</a> и <a href="#">пользовательским соглашением') }}</a>
</label>
</div>
@ -54,12 +49,12 @@
<img src="assets/img/svg/main/black-x.svg" alt="">
</button>
<div class="modal__header">
<p class="modal__small-title">Подписка на товар оформлена</p>
<p class="modal__small-title">{{ fn ('pll_e', 'Подписка на товар оформлена') }}</p>
<p class="modal__text">
На ваш e-mail ivan.ivanov@gmail.com придет письмо, как только продукт появится в наличии.
{{ fn ('pll_e', 'На ваш e-mail <span id="email_current"></span> придет письмо, как только продукт появится в наличии.') }}
</p>
<button class="button button--white button--red-48-px button--100-perc active modal-form-sub__submit">
Продолжить покупки
{{ fn ('pll_e', 'Продолжить покупки') }}
</button>
</div>

@ -0,0 +1,89 @@
{#
Bestsellers Slider Template with Polylang support
#}
{% set best = function('get_field', 'best', 'options') %}
{% set currency = function('get_woocommerce_currency_symbol') %}
<div class="section_wrap">
<section class="sellers">
<div class="container">
<div class="seller_block">
<div class="sellers_top">
<h1 class="sellers_title">{{ function('pll_e', 'BESTSELLERS') }}</h1>
<div class="slider-arrows">
<button class="slider-arrow slider-arrow-prev sellerSlider-prev" aria-label="{{ function('pll_e', 'Previous products') }}"></button>
<button class="slider-arrow slider-arrow-next sellerSlider-next" aria-label="{{ function('pll_e', 'Next products') }}"></button>
</div>
</div>
</div>
</div>
<div class="container-fluid">
<div class="sellers_slider">
<div class="swiper sellerSlider">
<div class="swiper-wrapper">
{% if best %}
{% for product in best %}
{% set product = TimberPost(product) %}
{% set thumbnail = product.thumbnail ? product.thumbnail.src('medium') : function('wc_placeholder_img_src') %}
{% set price = product.price %}
{% set has_sale = product.sale_price and product.sale_price < product.regular_price %}
<div class="swiper-slide">
<div class="sellers_card">
<a href="{{ product.link }}" aria-label="{{ function('pll_e', 'View product:') }} {{ product.title }}">
<img src="{{ thumbnail }}"
alt="{{ function('pll_e', 'Product image:') }} {{ product.title }}"
class="sellers_card-img"
loading="lazy">
</a>
<div class="tags_block">
<a href="{{ product.link }}" class="seller_name">
{{ product.title }}
</a>
<div class="seller_bt">
<p class="seller_price">
{{ price }} {{ currency }}
</p>
{% if has_sale %}
<div class="product-item__price-disc">
<p class="product-item__price-sale__text">
{{ product.regular_price }} {{ currency }}
</p>
<p class="product-item__price-sale__perc">
-{{ ((1 - (price / product.regular_price)) * 100)|round }}%
</p>
</div>
{% endif %}
</div>
<a href="{{ product.link }}" class="seller_link">
<button class="seller_buy" aria-label="{{ function('pll_e', 'Buy') }} {{ product.title }}">
{{ function('pll_e', 'Buy') }}
</button>
</a>
</div>
</div>
</div>
{% endfor %}
{% else %}
<p class="no-products">{{ function('pll_e', 'No bestsellers found') }}</p>
{% endif %}
</div>
</div>
<div class="seller_full">
<div class="container">
<a href="{{ function('wc_get_page_permalink', 'shop') }}" class="seller_full-link">
{{ function('pll_e', 'All products') }}
</a>
</div>
</div>
</div>
</div>
</section>
</div>

@ -1,4 +1,4 @@
<div class="modal">
{# <div class="modal">
<aside class="modal__aside">
<div class="modal__item modal__filter">
<button class="modal__close">
@ -218,4 +218,4 @@
</div>
</aside>
</div>
</div> #}

@ -3,8 +3,6 @@
{% extends 'layout.twig' %}
{% block content %}
{#% do action('woocommerce_before_main_content') %}#}
<div class="breadcrumbs">
<a href="/" class="breadcrumbs__item">
@ -19,10 +17,7 @@
</a>
{% endif %}
</div>
{#<div class="before-shop-loop"">
{% do action('woocommerce_before_shop_loop') %}
</div>#}
<div class="product">
<div class="product__header">
@ -38,16 +33,6 @@
{{ function('pll_e', 'Фильтры') }}
</button>
</div>
<!--<div class="product__tag">
<button class="product-tag__item">
<div class="product-tag-item__content">
<p class="product-tag-item__text">Для собак</p>
<div class="product-tag-iteИ m__button">
</div>
</div>
</button>
</div>-->
<div class="product__main">
{% for post in posts %}
@ -63,10 +48,5 @@
{% endif %}
</div>
</div>
{#{% do action('woocommerce_after_shop_loop') %}
{% do action('woocommerce_after_main_content') %}#}
{% endblock %}
Loading…
Cancel
Save