-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhide-empty-cards.html
More file actions
70 lines (63 loc) · 3.98 KB
/
hide-empty-cards.html
File metadata and controls
70 lines (63 loc) · 3.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Скрываем или удаляем пустые карточки на Тильде (блок ST315N)
<!-- ********************************************************************** -->
<!-- Скрываем или удаляем пустые карточки на Тильде (блок ST315N) -->
<!-- ********************************************************************** -->
<!-- Видео с пояснением: https://youtu.be/VLor5zp0W4s. -->
<!-- ********************************************************************** -->
<script>
(function() {
// Настройки
const productCardClasses = ['js-product', 't-item'];
const productNameClasses = ['js-store-prod-name', 'js-product-name', 't786__title'];
const storeClasses = ['t-store js-store', 't786'];
const keyword = 'Empty';
const delay = 1000;
const checkInterval = 50;
const minScreenWidth = 960;
// Функция для выполнения проверок и скрытия или удаления элементов
function processEmptyProducts() {
// Проходим по всем указанным классам карточек
productCardClasses.forEach(productCardClass => {
// Находим все элементы с текущим классом карточки
const productCards = document.querySelectorAll(`.${productCardClass}`);
// Проходим по всем найденным элементам
productCards.forEach(productCard => {
// Проходим по всем указанным классам имен продуктов
productNameClasses.forEach(productNameClass => {
// Находим элемент с текущим классом имени продукта внутри карточки
const productName = productCard.querySelector(`.${productNameClass.split(' ').join('.')}`);
// Проверяем, если содержимое элемента равно keyword
if (productName && productName.textContent.trim() === keyword) {
if (window.innerWidth > minScreenWidth) {
// Скрываем элемент
productName.style.display = 'none';
} else {
// Полностью удаляем элемент из DOM
productCard.remove();
}
}
});
});
});
}
// Функция для отложенного выполнения
function delayedProcessEmptyProducts(attempts = 0, maxAttempts = 100) {
// Проверяем, когда DOM полностью загружен, используя Тильдовскую t_onReady()
t_onReady(function () {
const storeElementExists = storeClasses.some(storeClass => document.querySelector(`.${storeClass.split(' ').join('.')}`));
if (storeElementExists) {
// Устанавливаем задержку в delay миллисекунд
setTimeout(processEmptyProducts, delay);
} else if (attempts < maxAttempts) {
// Если элемент еще не найден и попыток меньше максимума, пробуем снова через checkInterval мс
setTimeout(() => delayedProcessEmptyProducts(attempts + 1, maxAttempts), checkInterval);
}
// Если достигнуто максимальное количество попыток, не делаем ничего
});
}
// Запускаем проверку
delayedProcessEmptyProducts();
// Проверка при изменении размера окна
window.addEventListener('resize', processEmptyProducts);
})();
</script>