Sergey
Остальное - не шумы))
Евгений
Awesome Screen Recorder Удобный и простой в работе, тем более если связанно с экранкой видео
Sergey
Ну почти))
Вадим
Коллеги, здравствуйте. Вопрос прямо-таки профессиональный. Как сменить у Joomla5 тему админки на светлую, если в системе и браузере стоит тёмная тема? Нашёл решение по модулю-кнопке, пока сижу на нём, но решение охватывает не все элементы.
RINAT
Вроде сегодня релиз Quantum manager?
Вадим
Никак, разве что сменить тему браузера
Спасибо! Значит, продолжу сидеть на кнопке. Вообще, конечно, это ну прямо-таки косяк, не давать возможность выбрать тему при том, что они обе в коде присутствуют.
Sergey
Привет. Подскажите такой вопрос я в своем компоненте заполняю данные(например города, название города, область и т.д.) могу ли я эти данные подтянуть в материале? Как доп поля? Грубо говоря чтобы в материале можно было проставить галочки или как фильтре выбрать какие то города из этого списка?
Sergey
Есть документация в джумле? Стналрными джумлоусикми средствами можно?
Vio
https://github.com/joomla/joomla-cms/pull/42710#issuecomment-1919770117 🤨
Vladimir
Удивительно было бы если бы приняли
Владимир
Ничего удивительного
Получается не быть схеме? Или все же позже сделают?
Vladimir
Никто не против плагинов
Vladimir
Но собственно то о чем я говорил. Joomla не магазин в ядре
Igor
<button type="button" class="header-item-content dms-button" style="border: none;"> <span class="header-item-icon"> <span style="margin: 3px; font-size: 1.2rem; transition: all .6s ease;">🌓</span> </span> <span class="header-item-text">Dark Mode Switcher</span> </button> <script> (() => { 'use strict'; // Run script only once if (typeof window.jDarkMode !== "undefined") return; // Initial settings let darkMode = window.jDarkMode = (getDarkModeLocalStorage() === "true"); setDarkModeLocalStorage(darkMode); // Update the first visible "Dark Mode Switcher" button to avoid flickering updateButton(document.querySelector("button.dms-button"), darkMode); updateMode(darkMode); function updateButton(btn, darkMode) { const icon = btn.querySelector(".header-item-icon > span"); const text = btn.querySelector(".header-item-text"); if (darkMode) { icon.innerHTML = "🌙"; icon.style.backgroundColor = "rgb(31, 48, 71)"; text.innerHTML = ""; } else { icon.innerHTML = "☀️"; icon.style.backgroundColor = "transparent"; text.innerHTML = ""; } } function updateMode(darkMode) { for (const sheet of document.styleSheets) { //if (sheet.href && sheet.href.includes("atum/css/template")) { for (let i = sheet.cssRules.length - 1; i >= 0; i--) { let rule = sheet.cssRules[i].media; if (typeof rule !== "undefined" && rule.mediaText.includes("prefers-color-scheme")) { if (darkMode) { if (!rule.mediaText.includes("(prefers-color-scheme: light)")) rule.appendMedium("(prefers-color-scheme: light)"); if (!rule.mediaText.includes("(prefers-color-scheme: dark)")) rule.appendMedium("(prefers-color-scheme: dark)"); if (rule.mediaText.includes("original")) rule.deleteMedium("original-prefers-color-scheme"); } else { //else if (!darkMode) { rule.appendMedium("original-prefers-color-scheme"); if (rule.mediaText.includes("light")) rule.deleteMedium("(prefers-color-scheme: light)"); if (rule.mediaText.includes("dark")) rule.deleteMedium("(prefers-color-scheme: dark)"); } /*else { rule.appendMedium("(prefers-color-scheme: dark)"); if (rule.mediaText.includes("light")) rule.deleteMedium("(prefers-color-scheme: light)"); if (rule.mediaText.includes("original")) rule.deleteMedium("original-prefers-color-scheme"); }*/ } } //} } } // Sets localStorage state function setDarkModeLocalStorage(state) { localStorage.setItem("jDarkMode", state); } // Gets localStorage state function getDarkModeLocalStorage() { return localStorage.getItem("jDarkMode"); } // Update all "Dark Mode Switcher" buttons after DOMContentLoaded document.addEventListener('DOMContentLoaded', () => { const dmsBtns = document.querySelectorAll("button.dms-button"); dmsBtns.forEach((dmsBtn) => { updateButton(dmsBtn, darkMode); // Set eventListeners for all "dark-mode"-toggle-buttons on click and set localStorage dmsBtn.addEventListener("click", () => { let darkMode = window.jDarkMode = (getDarkModeLocalStorage() === "false"); setDarkModeLocalStorage(darkMode); dmsBtns.forEach((dmsBtn) => updateButton(dmsBtn, darkMode)); updateMode(darkMode); }); }); }); })(); </script>
RINAT
<button type="button" class="header-item-content dms-button" style="border: none;"> <span class="header-item-icon"> <span style="margin: 3px; font-size: 1.2rem; transition: all .6s ease;">🌓</span> </span> <span class="header-item-text">Dark Mode Switcher</span> </button> <script> (() => { 'use strict'; // Run script only once if (typeof window.jDarkMode !== "undefined") return; // Initial settings let darkMode = window.jDarkMode = (getDarkModeLocalStorage() === "true"); setDarkModeLocalStorage(darkMode); // Update the first visible "Dark Mode Switcher" button to avoid flickering updateButton(document.querySelector("button.dms-button"), darkMode); updateMode(darkMode); function updateButton(btn, darkMode) { const icon = btn.querySelector(".header-item-icon > span"); const text = btn.querySelector(".header-item-text"); if (darkMode) { icon.innerHTML = "🌙"; icon.style.backgroundColor = "rgb(31, 48, 71)"; text.innerHTML = ""; } else { icon.innerHTML = "☀️"; icon.style.backgroundColor = "transparent"; text.innerHTML = ""; } } function updateMode(darkMode) { for (const sheet of document.styleSheets) { //if (sheet.href && sheet.href.includes("atum/css/template")) { for (let i = sheet.cssRules.length - 1; i >= 0; i--) { let rule = sheet.cssRules[i].media; if (typeof rule !== "undefined" && rule.mediaText.includes("prefers-color-scheme")) { if (darkMode) { if (!rule.mediaText.includes("(prefers-color-scheme: light)")) rule.appendMedium("(prefers-color-scheme: light)"); if (!rule.mediaText.includes("(prefers-color-scheme: dark)")) rule.appendMedium("(prefers-color-scheme: dark)"); if (rule.mediaText.includes("original")) rule.deleteMedium("original-prefers-color-scheme"); } else { //else if (!darkMode) { rule.appendMedium("original-prefers-color-scheme"); if (rule.mediaText.includes("light")) rule.deleteMedium("(prefers-color-scheme: light)"); if (rule.mediaText.includes("dark")) rule.deleteMedium("(prefers-color-scheme: dark)"); } /*else { rule.appendMedium("(prefers-color-scheme: dark)"); if (rule.mediaText.includes("light")) rule.deleteMedium("(prefers-color-scheme: light)"); if (rule.mediaText.includes("original")) rule.deleteMedium("original-prefers-color-scheme"); }*/ } } //} } } // Sets localStorage state function setDarkModeLocalStorage(state) { localStorage.setItem("jDarkMode", state); } // Gets localStorage state function getDarkModeLocalStorage() { return localStorage.getItem("jDarkMode"); } // Update all "Dark Mode Switcher" buttons after DOMContentLoaded document.addEventListener('DOMContentLoaded', () => { const dmsBtns = document.querySelectorAll("button.dms-button"); dmsBtns.forEach((dmsBtn) => { updateButton(dmsBtn, darkMode); // Set eventListeners for all "dark-mode"-toggle-buttons on click and set localStorage dmsBtn.addEventListener("click", () => { let darkMode = window.jDarkMode = (getDarkModeLocalStorage() === "false"); setDarkModeLocalStorage(darkMode); dmsBtns.forEach((dmsBtn) => updateButton(dmsBtn, darkMode)); updateMode(darkMode); }); }); }); })(); </script>
Ё моё, Надо было такое из коробки, чтобы люди не мучались
Вадим
<button type="button" class="header-item-content dms-button" style="border: none;"> <span class="header-item-icon"> <span style="margin: 3px; font-size: 1.2rem; transition: all .6s ease;">🌓</span> </span> <span class="header-item-text">Dark Mode Switcher</span> </button> <script> (() => { 'use strict'; // Run script only once if (typeof window.jDarkMode !== "undefined") return; // Initial settings let darkMode = window.jDarkMode = (getDarkModeLocalStorage() === "true"); setDarkModeLocalStorage(darkMode); // Update the first visible "Dark Mode Switcher" button to avoid flickering updateButton(document.querySelector("button.dms-button"), darkMode); updateMode(darkMode); function updateButton(btn, darkMode) { const icon = btn.querySelector(".header-item-icon > span"); const text = btn.querySelector(".header-item-text"); if (darkMode) { icon.innerHTML = "🌙"; icon.style.backgroundColor = "rgb(31, 48, 71)"; text.innerHTML = ""; } else { icon.innerHTML = "☀️"; icon.style.backgroundColor = "transparent"; text.innerHTML = ""; } } function updateMode(darkMode) { for (const sheet of document.styleSheets) { //if (sheet.href && sheet.href.includes("atum/css/template")) { for (let i = sheet.cssRules.length - 1; i >= 0; i--) { let rule = sheet.cssRules[i].media; if (typeof rule !== "undefined" && rule.mediaText.includes("prefers-color-scheme")) { if (darkMode) { if (!rule.mediaText.includes("(prefers-color-scheme: light)")) rule.appendMedium("(prefers-color-scheme: light)"); if (!rule.mediaText.includes("(prefers-color-scheme: dark)")) rule.appendMedium("(prefers-color-scheme: dark)"); if (rule.mediaText.includes("original")) rule.deleteMedium("original-prefers-color-scheme"); } else { //else if (!darkMode) { rule.appendMedium("original-prefers-color-scheme"); if (rule.mediaText.includes("light")) rule.deleteMedium("(prefers-color-scheme: light)"); if (rule.mediaText.includes("dark")) rule.deleteMedium("(prefers-color-scheme: dark)"); } /*else { rule.appendMedium("(prefers-color-scheme: dark)"); if (rule.mediaText.includes("light")) rule.deleteMedium("(prefers-color-scheme: light)"); if (rule.mediaText.includes("original")) rule.deleteMedium("original-prefers-color-scheme"); }*/ } } //} } } // Sets localStorage state function setDarkModeLocalStorage(state) { localStorage.setItem("jDarkMode", state); } // Gets localStorage state function getDarkModeLocalStorage() { return localStorage.getItem("jDarkMode"); } // Update all "Dark Mode Switcher" buttons after DOMContentLoaded document.addEventListener('DOMContentLoaded', () => { const dmsBtns = document.querySelectorAll("button.dms-button"); dmsBtns.forEach((dmsBtn) => { updateButton(dmsBtn, darkMode); // Set eventListeners for all "dark-mode"-toggle-buttons on click and set localStorage dmsBtn.addEventListener("click", () => { let darkMode = window.jDarkMode = (getDarkModeLocalStorage() === "false"); setDarkModeLocalStorage(darkMode); dmsBtns.forEach((dmsBtn) => updateButton(dmsBtn, darkMode)); updateMode(darkMode); }); }); }); })(); </script>
Спасибо! Да, я на этом решении сейчас и сижу. Думал просто, вдруг есть какая-то стоковая настройка, которая почему-то не гуглится.
RINAT
<button type="button" class="header-item-content dms-button" style="border: none;"> <span class="header-item-icon"> <span style="margin: 3px; font-size: 1.2rem; transition: all .6s ease;">🌓</span> </span> <span class="header-item-text">Dark Mode Switcher</span> </button> <script> (() => { 'use strict'; // Run script only once if (typeof window.jDarkMode !== "undefined") return; // Initial settings let darkMode = window.jDarkMode = (getDarkModeLocalStorage() === "true"); setDarkModeLocalStorage(darkMode); // Update the first visible "Dark Mode Switcher" button to avoid flickering updateButton(document.querySelector("button.dms-button"), darkMode); updateMode(darkMode); function updateButton(btn, darkMode) { const icon = btn.querySelector(".header-item-icon > span"); const text = btn.querySelector(".header-item-text"); if (darkMode) { icon.innerHTML = "🌙"; icon.style.backgroundColor = "rgb(31, 48, 71)"; text.innerHTML = ""; } else { icon.innerHTML = "☀️"; icon.style.backgroundColor = "transparent"; text.innerHTML = ""; } } function updateMode(darkMode) { for (const sheet of document.styleSheets) { //if (sheet.href && sheet.href.includes("atum/css/template")) { for (let i = sheet.cssRules.length - 1; i >= 0; i--) { let rule = sheet.cssRules[i].media; if (typeof rule !== "undefined" && rule.mediaText.includes("prefers-color-scheme")) { if (darkMode) { if (!rule.mediaText.includes("(prefers-color-scheme: light)")) rule.appendMedium("(prefers-color-scheme: light)"); if (!rule.mediaText.includes("(prefers-color-scheme: dark)")) rule.appendMedium("(prefers-color-scheme: dark)"); if (rule.mediaText.includes("original")) rule.deleteMedium("original-prefers-color-scheme"); } else { //else if (!darkMode) { rule.appendMedium("original-prefers-color-scheme"); if (rule.mediaText.includes("light")) rule.deleteMedium("(prefers-color-scheme: light)"); if (rule.mediaText.includes("dark")) rule.deleteMedium("(prefers-color-scheme: dark)"); } /*else { rule.appendMedium("(prefers-color-scheme: dark)"); if (rule.mediaText.includes("light")) rule.deleteMedium("(prefers-color-scheme: light)"); if (rule.mediaText.includes("original")) rule.deleteMedium("original-prefers-color-scheme"); }*/ } } //} } } // Sets localStorage state function setDarkModeLocalStorage(state) { localStorage.setItem("jDarkMode", state); } // Gets localStorage state function getDarkModeLocalStorage() { return localStorage.getItem("jDarkMode"); } // Update all "Dark Mode Switcher" buttons after DOMContentLoaded document.addEventListener('DOMContentLoaded', () => { const dmsBtns = document.querySelectorAll("button.dms-button"); dmsBtns.forEach((dmsBtn) => { updateButton(dmsBtn, darkMode); // Set eventListeners for all "dark-mode"-toggle-buttons on click and set localStorage dmsBtn.addEventListener("click", () => { let darkMode = window.jDarkMode = (getDarkModeLocalStorage() === "false"); setDarkModeLocalStorage(darkMode); dmsBtns.forEach((dmsBtn) => updateButton(dmsBtn, darkMode)); updateMode(darkMode); }); }); }); })(); </script>
Но только в редакторе оказывается не работает
Sergey
Народ, подключаемся. По каким-то неведомым причинам в Joomla 5.1 завернули PR, который добавлял микроразметку Product в ядро. https://github.com/joomla/joomla-cms/pull/42710
Sergey
А нафига он в ядре?
Ты каталоги на материалах не собирал?
Dmitry
Надо же плагином
Sergey
Надо же плагином
Так там и есть плагин
Dmitry
Ааа
Dmitriy
Ты каталоги на материалах не собирал?
Ну где каталоги, а где продукт
Sergey
Который добавляет просто схему
Dmitry
Ну, легкое ядро :)
Dmitry
Выпусти как WT
Sergey
Выпусти как WT
Это не мой )
Dmitry
Или на jpath репу
Vladimir
Народ, подключаемся. По каким-то неведомым причинам в Joomla 5.1 завернули PR, который добавлял микроразметку Product в ядро. https://github.com/joomla/joomla-cms/pull/42710
добавлять в ядро Joomla которое не имеет продуктов микроразметку продукт -с моей точки зрения абсурд
Vladimir
с таким же успехом давайте микроразметку рецептов добавим? это же хотя бы более вероятно
Sergey
В ядре
Sergey
Event, JobPosting и прочее - есть
Sergey
Чем Product хуже?
Vladimir
Чем Product хуже?
тем что event и рецепт - они реально могут быть в статье а вот продукт должен иметь такие характеристики как наличие например
Vladimir
да и много другого чего еще
Vladimir
цена и так далее
Igor
В плагине микроразметки это все есть. А остальное полями делается
В product очень многое обязательных данных которые ядро отдать не может. Поля это не ядро. Плюс там целая гора нюансов. И тем кому нужно уже давно сделали (иначе будет конфликт) Да и они не сказали что это не правильно. Они сказали что в ядре этому не место. Может выпустить как отдельный плагин
Igor
+ просто добавить товар не достаточно. Нужно если делать предложения в категории
Sergey
привет, если мне две таблицы надо я просто пишу DROP TABLE IF EXISTS #__gidfin_cityes; CREATE TABLE #__gidfin_cityes ( id SERIAL NOT NULL, name VARCHAR(200) NOT NULL, published BOOLEAN NOT NULL DEFAULT FALSE, PRIMARY KEY (id) ) ENGINE = InnoDB; CREATE TABLE #__gidfin_cityes2 ( id SERIAL NOT NULL, name VARCHAR(200) NOT NULL, published BOOLEAN NOT NULL DEFAULT FALSE, PRIMARY KEY (id) ) ENGINE = InnoDB;
Vladimir
Sergey
WT JShopping cart save для JoomShopping 5.3+ Плагин сохраняет товары, положенные зарегистрированным пользователем в корзину, но не оформленные в заказ, а также список пожеланий. Работает с JoomShopping 5.3+. Часто бывают случаи, когда покупатели на сайте кладут товар в корзину, но не завершают заказ. Или же добавляют товары в список пожеланий, но забывают о их. Данный плагин сохраняет брошенные корзины зарегистрированных пользователей в базе данных и отображает администраторам сайта в списке пользователей информацию о том, у кого из пользователей есть забытые в корзине товары. На странице редактирования пользователя можно увидеть какие именно товары находятся в корзине и дату последнего обновления корзины пользователем. В настройках плагина можно указать количество дней, сколько хранить cookie, по которым идентифицируется пользователь и его забытая корзина или лист пожеланий. Плагин может использовать настройки штатного плагина Joomla - Аутентификация - Cookie. Его настройки использует плагин Запомнить меня. Если использовать эти плагины в связке, то пользователь останется авторизованным на сайте столько же, сколько будет храниться его забытая корзина. Системные требования - Joomla 4+. Рекомендуется Joomla 5. - JoomShopping 5.3.0 и выше. Это связано с исправлением командой JoomShopping некоторых ошибок в логике работы внутри компонента. Скачать плагин #расширения #JoomShopping
hary
Привет. Коллеги - как вставлять аудио в статью,? Наверное самое простое и правильное, это заюзать какой-то плагин поля. Есть ли какой из бесплатных? У Тассоса я видел, но там платное
RINAT
RadicalMultiField есть еще
hary
А в радикал есть аудио, да?
hary
На сайте https://hika.su/rasshireniya/raficalmultfild
hary
Есть По 4 или 5?. Эта что на сайте спокойно подойдёт?
RINAT
https://hika.su/rasshireniya/raficalmultfild/katalog-plaginov
Dmitriy
как вы зае#ли!!!! тридварасы
hary
Чоооо?
Владимир
как вы зае#ли!!!! тридварасы
отдых полезная штука. разраженность снижается кратно.
Dmitriy
это не чатланам :-) это очередные мамкины бизнесьмены проникли со своими уникальными предложениями озолотиться
Олег
а есть компонент млм для джумла?
Дмитрий
а есть компонент млм для джумла?
Раньше был Pharaoh назывался
RINAT
Раньше был Pharaoh назывался
Но если оно не актуально то лучше не смотреть
Олег
да это старьё 2.5
Дмитрий
Дмитрий
да это старьё 2.5
Он и на 3-ке работал
Олег
https://joomlamlm.ru/
Дмитрий
да это старьё 2.5
"Навье" - Только разрабатывать, а так как логика расширения сложная, то и стоить разработка будет не дешево.
Дмитрий
Вот почти готовое ТЗ
Sergey
привет а как в файле манифеста своего компонента сделать подменю? ну его же в манифесте нужно прописывать?
Alexey
Поиск по radicalmart настраивается?
Alexey
Доброе утро ☀️