Новости Joomla

Вышел компонент интернет-магазина HikaShop 6.1.0.Один из известных компонентов магазина для Joomla

Вышел компонент интернет-магазина HikaShop 6.1.0.Один из известных компонентов магазина для Joomla

👩‍💻 Вышел компонент интернет-магазина HikaShop 6.1.0.Один из известных компонентов магазина для Joomla.v.6.1.0 Что нового?Модуль корзины. Отображение корзины в виде offcanvas-элемента.Кнопка выхода в панели управления пользователя. Что тут сказать, просто добавили. Отправка писем только для заказов, оплаченных определёнными способами. Это удобно для рассылки сообщений, привязанных к региону или провайдеру (например, инструкции по банковскому переводу только для заказов, оплаченных банковским переводом).Листинг выплат по партнерской системе. В разделе управления партнёрскими программами появилось новое подменю «Выплаты», в котором перечислены выплаты партнёрам (упрощённое отслеживание и сверка). Добавлены настройки, благодаря которым можно определить категории товаров, на которые начисляется партнёрская комиссия с продаж.Список комплектов товаров. Система комплектов позволяет отслеживать остатки товаров, продаваемых в комплекте.Подробнее в блоге Hikashop.Поскольку мы не сообщали ранее о Hikashop 6.0, то вкратце скажем, что он вышел в июне 2025г. В новой версии было:- 13 исправлений ошибок- 17 улучшений. В частности:- - Hikashop теперь проверяет UserAgent пользователя перед добавлением товара в корзину, чтобы отсечь ботов. Ведь компонент хранит корзины в базе данных.- - улучшен роутинг компонента, позволяющий использовать в названии товара даже слеши.- - улучшения фильтра товаров - ускорение загрузки категорий/брендов/характеристик.- 4 новых функции:- - добавлена поддержка Joomla 6.0.- - Улучшена возможность адаптации форм HikaShop на фронтенде к шаблонам, не использующим стандартные классы Joomla.- - Плагин внутреннего баланса: возможность исключить уцененные товары из начисленных баллов.- - Теперь можно выбирать склады для вариантов товаров.Подробнее в Changelog Hikashop.Также при работе с Hikashop стоит учитывать, что один и тот же код поддерживает версии Joomla от 3.х до 5.х, а в таблице сравнения версий заявлена и Joomla 2.5. Беглый просмотр кода показал, что компонент как был, так и остался старым и для совместимости с Joomla 4+ просто добавлен плагин.@joomlafeed#joomla #расширения #hikashop

На сколько актуально делать сайт в 2025 году? Битва с нейросетями и выбор CMSНовый выпуск подкаста...

На сколько актуально делать сайт в 2025 году? Битва с нейросетями и выбор CMSНовый выпуск подкаста...

На сколько актуально делать сайт в 2025 году? Битва с нейросетями и выбор CMSНовый выпуск подкаста "Просто о Digital"Гость:🎙 Владимир Сергеенко ( https://t.me/aixman ) • Интернет-маркетолог с 14-летним опытом• Соавтор книги «Нетворкинг»• Спикер конференции Ассоциации директоров по развитиюВедущий:💻 Игорь Филипенко ( https://t.me/igorleee )• Программист и предприниматель с 16-летним опытом в digital• Основатель подкаста "Просто о Digital"• Специалист по автоматизации бизнес-процессовВ этом выпуске вы узнаете:🔥 Актуальность сайтов в эпоху нейросетей• Актуален ли сайт сейчас и будет ли актуален в будущем?• Зачем нужен сайт? Есть ли иные инструменты привлечения клиентов?🤖 Нейросети vs Поисковики vs Сайты• Почему нейросети не заменят сайты в B2B-сегменте• Как Google и Яндекс меняют алгоритмы из-за AI-конкуренции📊 Сайт как центр вселенной вашего трафика• Почему без сайта вы сливаете 40% маркетингового бюджета впустую?🛡 Безопасность и Joomla 6.0• Как отфильтровать 99% ботов и сэкономить на трафике• Почему Joomla теперь обходит WordPress в безопасности и скорости⚖️ Выбор платформы: битва CMS• WordPress: 50% рынка но 80% уязвимостей• Joomla: профессиональная CMS для сложных проектов• Drupal: почему его похоронили в 2023 году• Tilda: когда конструктор выгоднее CMSПриятного просмотра/прослушивания!RSS: https://cloud.mave.digital/61930Mave: https://igorfilipenko.mave.digitalЯндекс Музыка: https://music.yandex.ru/album/35840190Telegram Mave: https://t.me/mavestreambot/app?startapp=igorfilipenkoApple Podcasts: https://podcasts.apple.com/us/podcast/просто-о-digital-и-бизнесе/id1801903450ВКонтакте: https://vk.com/podcasts-12488584Youtube: https://www.youtube.com/playlist?list=PLfR6jTpnkohDDco32xZ-KyMyWi_S5Xdy2=========================Видео-формат подкаста:Rutube: https://rutube.ru/video/b5762754f9d3e0dc382f32f3034be0a2/Youtube: https://youtu.be/nu1XF2jNbxY#подкаст #podcast

0 Пользователей и 1 Гость просматривают эту тему.
  • 16 Ответов
  • 2052 Просмотров
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Приветствую.
Joomla 3.8.2
С исходниками когда ознакомлен...

Почему Joomla не сохраняет экземпляры jModel и jTable ?
Вызывая это:
JModelLegacy::getInstance('ModelName');
JTable::getInstance('TableName');
Мы всегда получаем новый экземпляры .

Почему в исходнике нет такого рода репозитория , хранилища ??
Спойлер
[свернуть]

Или глобального:
Спойлер
[свернуть]


Из глобальных компонентов я вертел только JoomShoping.
Там методы получения данных из БД размазаны везде.
Экземпляры jTable создаются прямо в циклах О_о.
Каждая итерация jTable::getInstance() --> new jTABLE   и пошла жара...  ЗАЧЕМ ?
VirtueMart бегло просмотрел... Вроде такая же история...

П\С Моё мнение, Прав ли я ?
Спойлер
[свернуть]

Объясните пожалуйста для чего (почему)?
Пожалуйста поддержите дискуссию... А то я сейчас стою на распутье дорог, и бАюсЯ свернуть не туды... :(
« Последнее редактирование: 19.12.2019, 01:38:59 от avantyrist »
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Не ужели форум умер ? :(
Тем за 2019г очень мало :(
Joomla теряет популярность ?
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Ну просто ваш вопрос ни кто не понял.
getInstance() даже если воспользоваться переводчиком означает получить экземпляр.
Соответственно вы получаете новый экземпляр каждый раз как вызываете этот метод.

Если взять для примера view, то вы там инициализируете модель, устанавливаете sates, а потом уже получаете из нее, то что вам нужно, если ваш запрос повторный, то получите уже за кешированный результат.

Если же засунь экземпляр в глобал, то потом проблем не оберетесь.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Ну просто ваш вопрос ни кто не понял.
getInstance() даже если воспользоваться переводчиком означает получить экземпляр.
Соответственно вы получаете новый экземпляр каждый раз как вызываете этот метод.

Если взять для примера view, то вы там инициализируете модель, устанавливаете sates, а потом уже получаете из нее, то что вам нужно, если ваш запрос повторный, то получите уже за кешированный результат.

Если же засунь экземпляр в глобал, то потом проблем не оберетесь.
Я понял, о чем ТС писал. На самом деле, вопрос интересный. Раньше уже обратил на это внимание, но не было времени разобраться.
Дело в том, что при вызове JModel и JTable всегда создается новый объект, не смотря на вводящий в заблуждение метод getInstance(). Думаю, что на это были причины и вопрос скорее надо задать разработчикам Joomla.
getInstance() даже если воспользоваться переводчиком означает получить экземпляр.
Соответственно вы получаете новый экземпляр каждый раз как вызываете этот метод.
А это не верно: по принципу Singleton одновременно существует только 1 экземпляр, он создается только если его до этого не было.
« Последнее редактирование: 20.12.2019, 16:59:59 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Я о том же.
Щас MVC переписываю :)
По принципу  Singleton и Фабрик.

- Получив ProductModel он автоматом создаст ProductTable.   (привязка к '#__product')
       Оба экземпляра будут сохранены в хранилище.

- Далее гдето очень углубились в дебри получения всевозможных данных. Нам понадобился ProductTable.
        Получая его - он не будет создаваться как новый экземпляр. А вытянется из хранилища.
 

Вот пример из JoomShoping который ставит меня в ступор:
Спойлер
[свернуть]

А вот виновник торжества.....
Который только и делает что обрабатывает имя создаваемого класса.
И создаёт его всегда НОВЫЙ.   return new $tableClass($db);
Спойлер
[свернуть]

Вызывая JshoppingModelBaseadmin->publish()
Вот это JTable::getInstance($type, $prefix, $config)  будет создавать НОВЫЙ экземпляр.

Вот обьясните накой черт тут в цикле они создают каждый раз НОВЫЙ экземпляр jTable.
Да тут они явно забыли про методы $table->reset(); и $table->load();   Ну бывает....
Но экземпляр таблицы который они получают тут в цикле может ещё где-то создаваться сотню раз. Каждый раз НОВЫЙ....  Зачем ?
Тоже самое с моделью.

Мне больше так нравится:
     Создался раз -> Запомнили его в хранилище -> Потом тянем из хранилища.

Но вот почему Joomla делает не так :( ? В каких целях ?
« Последнее редактирование: 20.12.2019, 18:04:42 от avantyrist »
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Но вот почему Joomla делает не так  ? В каких целях ?
Думаю, что на это были причины и вопрос скорее надо задать разработчикам Joomla.
В остальных случаях же вызывается единственный экземпляр?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
MODEL             -> всегда новый
TABLE              -> всегда новый
VIEW               -> всегда новый, ну по логике да так и надо...
CONTROLLER   -> Singleton
Спойлер
[свернуть]

И то его можно переопределить...
Спойлер
[свернуть]
Работает себе контролёр и тут на тебе вклинили GameOver :) и запустили ещё парочку контроллёров :)

----------------------------------------------------------------------
Да, вопрос этот к разработчикам движка.
Но на форум обитают люди которые подарили миру отличные расширения этого движка.
Вот и надеюсь что тут кто-то ответит.


« Последнее редактирование: 20.12.2019, 19:27:52 от avantyrist »
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
А это не верно: по принципу Singleton одновременно существует только 1 экземпляр, он создается только если его до этого не было.
Так в другом месте его и не было.

Если уж говорим о singleton и table, то хорошим примером будет batch. Принцип прост.
Получил экземпляр таблицы и уже в цикле reset, load, store. Тут это довольно удобно. Да и каждый плодить экземпляры не нужно.

Вообще причин много.
С таблицами все довольно просто. Зачастую они завязан на один итем, один итем один экземпляр. Подразумеваться что дальнейшем тебе нужно работать с каждым экземпляром Table по отдельности. Так к примеру если хранить table а не создавать новый экземпляр, то сделав
Код
$table Table::getInstance();
$table->title = 'yes';
$table >store();
в абсолютно левом месте, я тайтл yes запишу в какой-то левый итем.

У моделей же все завязано на state. Так к примеру если создать экземпляр до цикла, а потом в цикле делать сохранения, то даже если частично сбрасывать sates все равно что-то забудешь, плюс еще гора сохранённых значений. И тут либо что-то не установишь, либо останется, какой-нибудь state со старым значением. (я как-то раз с таким столкнулся).
То бишь опять-таки нужно работать с каждым экземпляром отдельно.

Вообще когда ты используешь getInstance в большинстве случаев тебе нужен чистый экземпляр без данных, поэтому чтобы не ломать голову с тем, а что ты получишь, проще сделать еще один. Ну и не стоит забывать что и model и table и view могут быть использованные не только в компонентах, а везде где только можно.

К слову в большинстве своем helpers singletone.

Ну а вообще robert прав, стоит спросить на github, там всегда на тебя вываливают гору аргументов, иногда это помогает понять почему так, а иногда нет.
« Последнее редактирование: 21.12.2019, 01:47:59 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Думаю, что на это были причины и вопрос скорее надо задать разработчикам Joomla.
а иначе ж не получится. допустим у вас есть экземпляр текущего юзера, и вам понадобилось загрузить данные из другой таблицы, например материалов которые принадлежат этому юзеру. вы получаете экземпляр таблицы материалов - и это бы означало что вы получили ссылку на таблицу юзеров, при чем уже инициализированного конкретным юзером :) тоже самое с моделями - когда необходима работа одновременно с несколькими экземплярами, то нет возможности делать это синглтоном. но с другой стороны мы можем сами управлять ними, как например Factory::getUser возвращает именно синглтон
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Ну, для этого есть load(), reset(), get($new = true) и т.д. Хотя вспомнил, как в первое время мучился с JDatabaseQuery ^-^. Единственный полезный момент - это, конечно, когда работаешь с несколькими экземплярами одновременно. Но с JUser тоже как-то обходились клонами ;).
Не будь паразитом, сделай что-нибудь самостоятельно!
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
угу, именно когда одновременно
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
TABLE:
Но ведь экземпляр наследующий jTable может быть сам по себе Singleton. И храниться в $coreRepository
Данные итема хранить не как свойства этого экземпляра. а в Хранилище $dataRepository
Метод загрузки данных load($forsed=false) может вызываться с флагом FORSED.
     Указывающий на загрузку данных из БД или Хранилища.
Таким образом Данные будут доступны везде. И не надо их будет постоянно дёргать из БД.

И кстати. При создании экземпляра jTable ВСЕГДА идёт запрос в БД на получение имён полей таблицы.

Спойлер
[свернуть]

Спойлер
[свернуть]


dmitry_stas Вы завсегдатый на JoomShoping канале. Поидеи вы знаете его вдоль и поперёк.
Вас не смущаяют методы из JshoppingModelBaseadmin в админке. 
Там где они в цикле гоняют получение экземпляра таблиц.
Так к примеру захотел соточку итемов поставить в publish() и получил на выходе 200 запросов в БД  *suicide*
     -- 100 на получение названия полей из БД
     -- 100 на сохранение новых данных.
Это Норм ??

П\С
Спасибо за дискусию
*

ProtectYourSite

  • Живу я здесь
  • 2366
  • 138 / 4
  • Безопасность вебсайтов
Дело в том, что при вызове JModel и JTable всегда создается новый объект, не смотря на вводящий в заблуждение метод getInstance(). Думаю, что на это были причины и вопрос скорее надо задать разработчикам Joomla.А это не верно: по принципу Singleton одновременно существует только 1 экземпляр, он создается только если его до этого не было.
Как раз таки наличие метода getInstance() не говорит, что это синглтон.
Синглтоны порождают проблемы при тестировании и отладке, поэтому, если в них нет острой необходимости, то их стараются не использовать либо делать это немного другой реализацией.
*

ProtectYourSite

  • Живу я здесь
  • 2366
  • 138 / 4
  • Безопасность вебсайтов
Так к примеру захотел соточку итемов поставить в publish() и получил на выходе 200 запросов в БД
Палка о двух концах, если объединить это в один запрос, и он окажется достаточно тяжёлым, то он залочит таблицу и все остальные запросы зависнут. Поэтому считается хорошей практикой на апдейт делать много запросов.
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
ProtectYourSite
Это да.
Если именно Синглтон то у него должен быть закрытый конструктор, клоны, вейкапы (магические методы)
Тоесть он должен быть ну прям сооооовсем один одиношечка.
А я тут говорю о единственных экземплярах наследников Model и Table.

*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Палка о двух концах, если объединить это в один запрос, и он окажется достаточно тяжёлым, то он залочит таблицу и все остальные запросы зависнут. Поэтому считается хорошей практикой на апдейт делать много запросов.

Это да. Мелкие запросы ГУД
Но я говорил о конкретном примере
Спойлер
[свернуть]

При создании экземпляра jTable ВСЕГДА идёт запрос в БД на получение имён полей таблицы

К примеру надо опубликовать 100 итомов
   - 100 раз получили названия полей
   - 100 раз изменили(сохранили) данные
Итого 200 запрососв.

Этот  пример я привожу так как такого рода бред встречается очень часто.



*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
При создании экземпляра jTable ВСЕГДА идёт запрос в БД на получение имён полей таблицы
не имена столбцов, а именно загрузка текущего итема. имена столбцов грузятся только 1 раз, при первой инициализации таблицы

К примеру надо опубликовать 100 итомов
   - 100 раз получили названия полей
   - 100 раз изменили(сохранили) данные
Итого 200 запрососв.
не названия полей, а загрузили текущий итем, по первичному ключу :)  но сути это не меняет, 200 запросов остаются, 100 чтения 100 записи. но это стандартная практика для использования таблиц.

Палка о двух концах, если объединить это в один запрос, и он окажется достаточно тяжёлым, то он залочит таблицу и все остальные запросы зависнут. Поэтому считается хорошей практикой на апдейт делать много запросов.
так и есть. всегда приходится искать какой то компромисс между скоростью и памятью. это само собой работает медленнее чем 1 запрос, но зато наверняка отработает, а не вывалится по памяти

Так к примеру захотел соточку итемов поставить в publish() и получил на выходе 200 запросов в БД
ну а вы проведите эксперимент, посмотрите в отладке сколько это времени занимает, и если это был бы один запрос. увидите что не так это и критично
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[решено] Использование model - setState для фильтра по дате

Автор effrit

Ответов: 8
Просмотров: 1772
Последний ответ 13.10.2018, 19:13:49
от effrit
Получение содержимого страницы любого компонента

Автор jmaf

Ответов: 6
Просмотров: 1474
Последний ответ 03.04.2016, 18:25:06
от b2z
TRUNCATE TABLE в компоненте Joomla3

Автор nils_bor

Ответов: 7
Просмотров: 2646
Последний ответ 06.12.2014, 00:41:36
от nils_bor
Отправка запроса POST и получение ответа? Joomla 3.1.5

Автор infoehra

Ответов: 8
Просмотров: 2329
Последний ответ 11.11.2013, 10:33:03
от infoehra
Важное изменение в Joomla Platform - упрощенные Model, View и Controller

Автор b2z

Ответов: 2
Просмотров: 2506
Последний ответ 13.04.2012, 17:11:27
от b2z