Новости Joomla

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:- создать объект класса события- передать в него параметры

use Joomla\CMS\Event\AbstractEvent;use Joomla\CMS\Factory;use Joomla\CMS\Plugin\PluginHelper;// Грузим плагины нужных группPluginHelper::importPlugin('system');// Создаём объект события$event = AbstractEvent::create('onAfterInitUniverse', [    'subject' => $this,    'data'    => $data, // какие-то данные    'article' => $article, // ещё материал вдовесок    'product' => $product, // и товаров подвезли]);// Триггерим событиеFactory::getApplication()->getDispatcher()->dispatch(    $event->getName(), // Тут можно строку передать 'onAfterInitUniverse'    $event);// Получаем результаты// В случае с AbstractEvent это может быть не 'result',// а что-то ещё - куда сами отдадите данные.// 2-й аргумент - значение по умолчанию, // если не получены результаты$results = $event->getArgument('result', []);
Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды. Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;$event = MyCoolEvent::create('onAfterInitUniverse', [    'subject'    => $this,    'eventClass' => MyCoolEvent::class, // ваш класс события    'data'       => $data, // какие-то данные    'article'    => $article, // ещё материал вдовесок    'product'    => $product, // и товаров подвезли]);
Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.
@joomlafeed#joomla #php #webdev

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

kart072

  • Захожу иногда
  • 57
  • 2 / 0
Доброго времени суток. Под названием этим читал тему, но ответа не нашёл.
У меня сайт на локальном сервере. Когда количество материалов дошло около 5000, основное изображение перестало сохранятся. Версию К2.4.1 после обновил до 2.5.3. Результат не изменился. Галерея сохраняется через zip нормально.
Обнаружил вот что. Когда в одном из материалов удалю изображение, в следующем сохранится.
Как я понял, лимит количества изображений, или выделенной памяти, закончился. Как с этим справится? Ещё очень много нужно загрузить материалов, и к каждому изображение.
Спасибо.
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Cкриншот настроек в студию
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

kart072

  • Захожу иногда
  • 57
  • 2 / 0
Простите за несообразительность.
Можно точнее, какие и где настройки показать?
Искал долго настройки, отвечающие за загрузку главных фото. Не нашёл.
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
...Когда количество материалов дошло около 5000...

Это значит у вас 35000 изображений. Лимита на количество изображений у К2 нет.
Мне с таким количеством материалов и изображений в К2 сталкиваться если честно ещё не приходилось.

Галерея сохраняется через zip нормально.
Спасибо.
Если вы можете загружать другие файлы, то ваше дисковое пространство тоже не при чём.
*

kart072

  • Захожу иногда
  • 57
  • 2 / 0
Спасибо за ответ. Я понимаю, что нет у К2 ограничения по количеству.
Вот мозгую, в чём может быть причина и где искать. Куда залезть, чтобы хоть методом исключения найти причину.
Если есть идеи, что может быть, в чём может быть причина такого поведения К2, буду благодарен.

К2 весрии 2.4.1. Joomla 1.5.25. Обновление К2 до 2.5.3 ничего не изменило.
Восстановление з backup полностью сайта и базы данных, сделанных днём раньше ничего не дало.
Дошёл до тех же материалов и та же история.
Удалю предыдущих 3, три сохранит нормально. Ни больше, ни меньше.
Я вот думаю может К2 кидает все изображения в одну папку, и больше не хочет кидать в неё?
Может как-то изменить путь к другой папке для сохранений основных фото?
От куда копать, куда смотреть? Может есть идеи?
Буду благодарен!

Делаю интернет магазин на K2+K2Mart+VirtueMart. Ещё стоит компонент JCE из-за редактора.

Может всё таки с базой данных не всё в порядке?
Сайт пока на локальном Денвере.
« Последнее редактирование: 06.12.2011, 15:47:13 от kart072 »
*

kart072

  • Захожу иногда
  • 57
  • 2 / 0
У меня идеи закончились. Что с этим делать и как с этим бороться :(
Мистика
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Удалю предыдущих 3, три сохранит нормально. Ни больше, ни меньше.
Я вот думаю может К2 кидает все изображения в одну папку, и больше не хочет кидать в неё?

Может быть,  на сервере стоит какое-то ограничение на кол-во файлов для папки?
Бред, конечно...
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

kart072

  • Захожу иногда
  • 57
  • 2 / 0
Может быть,  на сервере стоит какое-то ограничение на кол-во файлов для папки?
Бред, конечно...

Почему бред? Неет. Если уже всё перемозговано, нужно любые идеи. Вдруг на мысль натолкнёт))
На локальном денвере сайт. Если говорить так, то в денвере что-то?
Не реально. Хотя.... Мозги пухнут за весь день над одним вопросом. Но!
С утра завтра архивирую сайт. Делаю backup базы данных.
Качаю полность чуть другой версии PHP и всё такое Денвер. Устанавливаю его, Joomla.
Ну а потом туда пакую свой сайт. Посмотрю, что скажет.

Ещё есть такой нюанс. Я web-optimizer ставил. Настроил. Отличных результатов добился за пол дня.
93-97 загрузка. Но так как ооочень много нужно загрузить всего, я его удалил и продолжаю без него. Но как вижу файли, которые он создал лежат в папках. Хотя и не включены. .htaccess вернул в исходное состояние.
Голова кругом. Куча работы по материалам, а тут такой стопор. Кажется мелочь. Но вот...

*

kart072

  • Захожу иногда
  • 57
  • 2 / 0
Хочу спросить ваше мнение, если я так решу свою проблему.
Закидываю изображение маленького размера в папку и вывожу её как вводный текст в каталог маленькую.
А при нажатие на подробнее в материале вывожу через галерею SIG Pro. Даже если одна фотка, закидываю её в zip и публикую в материале.
Вопрос вот в чём. Это не сильное извращение? Как это повлияет на производительность сайта?
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Извращение сильное, не производительность повлиять не должно, если хостер нормальный.
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

kart072

  • Захожу иногда
  • 57
  • 2 / 0
Извращение сильное, не производительность повлиять не должно, если хостер нормальный.

Я два дня думал над этим вопросом. Не хотел спешить так делать. Но взглянул с другой точки.
Здесь часто решали проблему, как убрать это умножение фоток К2 на 7. Разные размеры сразу создаёт К2, чтобы CSS не задавал их при загрузке одной фото в разные размеры  тем самым не влияло это на загрузку страниц. А у меня 80% материалов имеют галереи из пары фоток. И того, я вывожу основное фото с двумя размерами (на моём сервере их 7), плюс ещё и галерею. А так я всего лишь публикую и сохраняю одну маленькую фотку и ту же галерею. Так это даже облегчает мой сайт.
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Тогда можете для начала поудалять пару десятков картинок ненужного размера и посмотреть как будут сохраняться новые.

В плане общего объёма сохраняемых изображений (количество файлов правда останется таким же) - можно обойтись и без хаков.

Как выяснилось методом научного тыка, если в глобальных настройках К2 установить для ненужных размеров ширину 0, будет создаваться изображение 1х1 px весом менее 1кб.

Не забываем также про настройки качества (в %) - тоже влияет на объём.
*

kart072

  • Захожу иногда
  • 57
  • 2 / 0
Тогда можете для начала поудалять пару десятков картинок ненужного размера и посмотреть как будут сохраняться новые.

В плане общего объёма сохраняемых изображений (количество файлов правда останется таким же) - можно обойтись и без хаков.

Как выяснилось методом научного тыка, если в глобальных настройках К2 установить для ненужных размеров ширину 0, будет создаваться изображение 1х1 px весом менее 1кб.

Не забываем также про настройки качества (в %) - тоже влияет на объём.

Отличная идея. Так и сделал. Только сразу  и все не нужные. Поиском в папке cache *_L, отметил все найденные и удалил. И так далее. Это нужно делать даже без проблем с загрузкой. Такой груз и объём хранить лишнее. С меня плюс. Загрузка пошла дальше.

Но кажется я понял проблему свою, почему такое поведение выдавал мне К2. Обратил внимание, что папки cache и src по объёму имеют приблизительно 1100Мб (до удаления лишних изображений). При просмотре "К2 инфо" обратил внимание, "Системная информация" "Лимит памяти - 1024М". Я и раньше обратил на это внимание, но не смог увеличить эту цифру, не нашёл как. Но сильно и не искал, не был уверен, что в этом причина. Но анализируя объём папки с изображениями 1100Мб и лимит памяти системы 1024Мб, думается мне, что вот в этом и была причина моей проблемы.
Как и где можно изменить этих 1024Мб? Тогда смогу навсегда и для всех сказать, в этом ли причина?
И тогда тему с таким вопросом можно будет решить для всех и на всегда.
*

kart072

  • Захожу иногда
  • 57
  • 2 / 0
Всё таки да. Такие причины не сохранения в Денвере. Ограничение памяти самого сервера Денвера 1024Мб и дали такой результат. \usr\local\php5\php.ini . Там я и изменил 1024М на 2048М. Сохранения пошли, но почему-то только ..._S и ..._XL. Только этих два размера сохраняет и нормально публикует на страницах.

« Последнее редактирование: 08.12.2011, 17:18:08 от kart072 »
*

kart072

  • Захожу иногда
  • 57
  • 2 / 0
Решено.
Всё как я описал выше. Изменение лимита памяти и всё нормально работает.
Я просто изменил коды раздела работы с изображением, чтобы не создавались лишние изображения как описано в теме
http://joomlaforum.ru/index.php/topic,191782.0.html

staticlight, SDKiller. Огромное спасибо.
*

kart072

  • Захожу иногда
  • 57
  • 2 / 0
Опять дойдя до какого-то количества, та же проблема.
4 дня читал всё под ряд и думал. Проблема точно не в обьёме памяти, а только количестве фалов в папке cache.
С утра с другом пил кофе (сильный программист, хоть и с сайтами дела не имеет).
- Может Windows иметь ограничения по количеству фалов в одну папку? (Сам понимал, что бред).
- Нет. Хоть миллион кидай. НО! Если работаешь на диске в системе FAT, а не NTFS, может происходить всё, что угодно.
Вот так я и решил проблему. Увеличил свободной памяти на диске С, закинул туда полностью свой сайт и вроде полёт нормальный.
А кидал его с дика D на E туда и обратно, никаких изменений. Хотя в принципе мог и изменить формат самого диска, но не хотел опять перемудрить.
Вывод: не ставьте локалы на другие диски, кроме системного. Или их форматируйте в NTFS.
« Последнее редактирование: 23.02.2012, 15:24:27 от kart072 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Обрезание изображений по ширине и высоте в k2

Автор Faina

Ответов: 18
Просмотров: 12967
Последний ответ 24.02.2015, 21:42:16
от nyaforce
Выравнивание изображений в списке категории

Автор adcroco

Ответов: 4
Просмотров: 1879
Последний ответ 27.02.2014, 20:35:50
от adcroco
Количество сохраняемых изображений

Автор Invisible_DEATH

Ответов: 15
Просмотров: 11147
Последний ответ 08.11.2011, 08:52:45
от 00dim00