Нужен флаг который будет скрывать поля при создании тк и в списке и записи

InstantCMS 2.X
#1 25 марта 2025 в 19:38

Намучался я с тими скриптами, городить лес на сайте

решил попросить фрилансеров создать флаг как системный но что бы отключал поля и в самих ТК

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

Очень надо, пишите

#2 25 марта 2025 в 20:12

Кто-то понял, что надо в итоге? В таких темах краткость — не сестра таланта.

#3 25 марта 2025 в 20:16
Кто-то понял, что надо в итоге? В таких темах краткость — не сестра таланта.
Zau4man

да вопрос все тот же, нужно скрывать в тк поля которые скрываются в add флагом

Ваша доработка скрывает одним флагом одно поле, так как должно совпадать системное имя типа у поля content  у флага  content_on. 

у меня флаг скрывает 5 полей но не в тк

Сегодня в 10:15
#4 27 марта 2025 в 16:59

Сделал такое решение, например если вы в зависимости полей скрываете одно или группу полей при наличии другого поля

то в спике тк и записей оно самой собой не скрывается только в форме создания.

Вам подойдет такой скрипт для списка тк

  1. // Функция для проверки наличия .f_dogovor и скрытия элементов
  2. function hideElementsInContainers() {
  3. // Находим все контейнеры, которые нужно проверить
  4. const containers = document.querySelectorAll('.icms-content-fields'); // Замените на ваш класс контейнера
  5.  
  6. containers.forEach(container => {
  7. const dogovorElement = container.querySelector('.f_dogovor');
  8. const payElements = container.querySelectorAll('.f_pay, .f_pay_do, .f_pay_fix, .f_money, .f_deal');
  9.  
  10. // Если элемент .f_dogovor найден, скрываем соответствующие элементы
  11. if (dogovorElement) {
  12. payElements.forEach(element => {
  13. element.style.display = 'none'; // Скрываем элемент
  14. });
  15. }
  16. });
  17. }
  18.  
  19. // Вызов функции при загрузке страницы
  20. document.addEventListener('DOMContentLoaded', hideElementsInContainers);

а если заменить .icms-content-fields на .content_item то для записи тк

.f_dogovor — вы меняете на системное имя своего поля при появлении которого должны пропадать остальные

.f_pay, .f_pay_do, .f_pay_fix, .f_money, .f_deal — меняете на системные имена своих полей которые должны исчезнуть 

Такой код должен работать с автоматической подгрузкой контента в списке тк

  1. // Функция для проверки наличия .f_dogovor и скрытия элементов
  2. function hideElementsInContainers() {
  3. // Находим все контейнеры, которые нужно проверить
  4. const containers = document.querySelectorAll('.container'); // Замените на ваш класс контейнера
  5.  
  6. containers.forEach(container => {
  7. const dogovorElement = container.querySelector('.f_dogovor');
  8. const payElements = container.querySelectorAll('.f_pay, .f_pay_do, .f_pay_fix');
  9.  
  10. // Если элемент .f_dogovor найден, скрываем соответствующие элементы
  11. if (dogovorElement) {
  12. payElements.forEach(element => {
  13. element.style.display = 'none'; // Скрываем элемент
  14. });
  15. }
  16. });
  17. }
  18.  
  19. // Функция для инициализации наблюдателя
  20. function observeContainers() {
  21. const observer = new MutationObserver(hideElementsInContainers);
  22.  
  23. // Настройки наблюдателя
  24. const config = {
  25. childList: true, // Следить за добавлением/удалением дочерних элементов
  26. subtree: true // Следить за всеми уровнями дочерних элементов
  27. };
  28.  
  29. // Наблюдаем за всего документа или конкретным родительским контейнером
  30. observer.observe(document.body, config); // Замените document.body на конкретный элемент, если нужно
  31. }
  32.  
  33. // Вызов функций при загрузке страницы
  34. document.addEventListener('DOMContentLoaded', () => {
  35. hideElementsInContainers(); // Скрыть элементы при первой загрузке
  36. observeContainers(); // Начать наблюдение за изменениями
  37. });
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.

Похожие темы

Похожее в блогах

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.