у меня нет шаблона блогер
maxisoft
Хочу спросить у сообщества нужно ли обновление этого шаблона до актуальной версии и его последующее обновление и развитие. Так как много чего в нем не до конца адаптировано и много чего лишнего было изначально, есть некоторое желание его немного облегчить чтобы сайт был быстрее. Поэтому хотелось бы услышать ваше мнение нужно ли.
Искала возможность прикрутить на сайт scorm. Это сейчас на многих платформах реализовано. На том же WP — есть
могу конечно ошибиться но чтобы Scorm импортировать на тот же WP на нем должна стоять LMS система, которая согласно пакета создаст нужные записи в чистые посты насколько я помню нет такой возможности импортировать.
Коллеги, занимаюсь разработкой модуля UTM Tracker для InstantCMS. Сейчас готова первая базовая часть: модуль умеет ловить метки, хранить их в cookies и сохранять в БД при регистрации.
Возник вопрос: стоит ли развивать компонент дальше и внедрять полный цикл аналитики?
📋 Что уже сделано (База):
Перехват UTM-меток из URL (source, medium, campaign, term, content).
Сохранение в Cookies (срок 30–90 дней).
Запись данных в таблицы utm_visits и utm_conversions.
Привязка меток к пользователю при регистрации.
🚀 Что планируется в «полной версии»:
Интерфейс в админке: Раздел «Маркетинг → UTM аналитика».
Статистика: Таблицы источников, каналов и кампаний (количество регистраций).
Интеграция: Отображение источника в карточке пользователя и фильтрация списка пользователей по UTM-меткам.
Экспорт: Выгрузка данных в CSV/Excel.
Вопрос к сообществу: Нужен ли вам такой функционал «из коробки» внутри админки, или проще ограничиться записью меток, а анализом заниматься через выгрузку или сторонние системы (Яндекс.Метрика, GA)?
👇 Проголосуйте в опросе ниже!
model_not_available Igor Модель больше не существует, смените на другойMy-InstantCMS.Ru что делать то с этим?hrenovoe как?
Это вообщето показывает стоимость токенов во фри моделях она и должна быть по 0
maxisoft, а вы какой ии используете?
для каждой задачи своя. для картинок Гемини с Нанобана2 для кодинга там полный улет GLM 5 Kimi 2,5 Minimax Owen — жду дипсик 4 в основном китайцы работают супер без впн и прочих приблуд и оплата нормально через алипей или вичат у меня. А самая умная уже смотрит за всеми и принимает решение claude code — причем разные ИИ для плана и для реализации. а ну и еще ряд локальных ИИ от qwen до mistral и deepseek для внутренних задач и агентов типа openclaw локально еще стоит n8n для автоматизации процессов
я не буду кривить душой да я использую ИИ для разработки, оптимизации, выявления ошибок. Так жизнь теперь заставляет. Но у меня например проверку делает 3 ИИ которые спорят обсуждают между собой то есть не чисто ИИ а по факту 3 независимых эксперта и потом на основании всего что они там наобсуждали делается анализ и пишется отчет. Знаю по опыту уже в 97% они правы оказываются чтобы не галюки не ловили есть скилы под все это дело (хотя тоже не панацея)
maxisoft, я так и понял, потому что половина из написанного — вообще не так.
я не говорю что там 100500% правильного до 80% там очевидые проблемы. например утечка памяти будет 100% анимация вопрос спорный согласен так как не очевидно что у вас в direction это номер в навигации и получается что вы сдвигаете например 1 * 100 потом на 2 * 100 спорить не буду. звездоку на гитхабе поставил
ZoomiJS: документация на русском, лицензия MIT (делай что хочешь, даже в коммерции), автор на связи в РФ. Zoomi делает одну вещь: открывает <img> в модалке с зумом и навигацией
Довольно спорный момент так как например код js нет комментариев, и получается что нужно догадаться что за функционал тут и для чего нужно. Опять это не критика и не хейт, просто сама библиотека неплохая если воспримете меня правильно вот некоторые моменты.
🔴 Критические / баги
1. _unbindEvents вызывается после destroy — self.modal уже null
// destroy(): self.modal = null; // ... self._unbindEvents(); // <-- здесь self.modal уже null! // В _unbindEvents: if (self._handlers.keydown) self.modal.removeEventListener(...) // TypeError
_unbindEvents() нужно вызывать до обнуления ссылок.
2. navigate() — анимация через translateX = 100 работает некорректно
self.translateX = direction * 100; // пиксели? проценты? self._updateImageTransform(); // translate(100px, 0px) scale(1)
Это сдвинет изображение на 100 пикселей, а не «за экран». Анимация перехода будет почти незаметна. Нужно либо 100vw, либо анимация через CSS-классы.
3. open() — self.modalImg.src устанавливается внутри onLoad нового Image(), но onLoad вызывается сразу при .complete, игнорируя реальную проверку
if (self._preloadImages[src] && self._preloadImages[src].complete) { onLoad(); // вызов без установки modalImg.src заранее } else { var tempImg = new Image(); tempImg.onload = onLoad; tempImg.src = src; // src задаётся ПОСЛЕ привязки onload — ок }
Внутри onLoad есть self.modalImg.src = src — это нормально. Но при .complete нет проверки naturalWidth > 0 (изображение могло загрузиться с ошибкой и тоже .complete === true).
🟡 Средние проблемы
4. Утечка памяти в _preloadImages
Кеш предзагруженных изображений никогда не очищается — ни при navigate, ни при close, ни при смене галереи. При большом количестве изображений это накапливается.
5. _transformRAF не отменяется при destroy
// В destroy() нет: if (self._transformRAF) cancelAnimationFrame(self._transformRAF);
RAF-колбэк выполнится после уничтожения объекта и попытается обратиться к self.modalImg — null.
6. updateOptions с options.selector содержит баг
if (options.selector && options.selector !== self.options.selector) self._parseSelectors();
К моменту проверки self.options уже обновлён через extend, поэтому options.selector !== self.options.selector всегда false. Нужно сохранять старый селектор до extend.
7. _bindMouseEvents — swipe через мышь имеет конфликт с drag
self._handlers.mouseDown = function(e) { if (self.scale > 1) { self._startDrag(...); } else if (self.galleryImages.length > 1) { self._startSwipe(...); } };
Если scale > 1 — swipe недоступен. Но пользователь может захотеть листать галерею при зуме, свайпнув достаточно далеко. Логика взаимоисключающая без явной причины.
🟢 Мелкие / стиль
8. _updateNavButtons — кнопки всегда disabled = false при length > 1
if (self._prevBtn) self._prevBtn.disabled = self.galleryImages.length <= 1;
При length > 1 кнопки будут disabled = false — это правильно, но выглядит как неинтуитивная логика. Лучше явно: self._prevBtn.disabled = false.
9. Строки интерфейса захардкожены на русском
self.modal.setAttribute('aria-label', 'Просмотр изображения'); self._closeBtn.setAttribute('aria-label', 'Закрыть модальное окно'); // ... self.modalCaption.textContent = 'Ошибка загрузки изображения';
Это должно быть в DEFAULTS для поддержки i18n.
10. debounce — нет немедленного вызова (leading edge)
Для resize задержка 150ms — нормально. Но функция не экспортируется и не переиспользуется. Можно оставить, просто пометить как утилиту.
11. Отсутствует passive: true на touchstart/touchmove на document
На самом modalImg стоит { passive: false } — ок, нужен preventDefault. Но на document для mousemove/mouseup passive не указан, хотя там preventDefault не вызывается.
Самое важное к исправлению: порядок вызовов в destroy(), анимация в navigate(), баг в updateOptions, и очистка _preloadImages.
Проголосовал нет и могу сказать почему на текущий момент открытия фото в модалке идет по ссылке которая прописана в ссылке например но там картинка не будет 3000х3000 а будет 150х90 чтобы вес страницы был меньше если в шаблоне выводить еще дата атрибут на полную то чем ваша библиотека лучше того же fancybox или другого lightbox. Прошу не агрится, я к тому что уважаю вас как разработчика много интересных разработок у Вас но это немного не то просто красивое модальное окно и все.
И опять же не к тому чтобы придраться на гитхабе написано весит min версия 11кБ по факту 22кБ
Что-то не замечал такого, чтобы браузер сам ставил в куках utm метки, видимо он у меня устарел ))).
Я немного зарапортавался, не все метки идут и не в куки а в локал сторейдж и то если сайт это обеспечивает, спишем на старческий склероз. :)))))
Метки и так храняться к куках и это ставиться автоматом браузером 
и тут просто нужно настройка уже формы типовой или компонента iForm передавать UTM метки чтобы при сабмите в данные подмешивались уже нужные метки
Хотя можно сделать пуле непробиваемое решение, это реально сохранение метов в локал сторайдж и потом при сабмите форм подмешивать их в пост запрос. тогда можно минимизировать правки в коппонентах