Новости 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 Гость просматривают эту тему.
  • 334 Ответов
  • 147258 Просмотров

никак не пойму как работает импорт параметров.

в файле я его обозначаю. для каждого товара в соотв. колонку прописываю. ищу потом в дампе базы значения этого параметра ( и с пятью символами после запятой тоже, т.к. у меня цена), не нахожу там этого. А натолкнулся на это случайно, пытаясь вывести параметр в списке товаров (в виде прайса).

Вот пример моего импорта.
Код
Параметры|||||||||
Тип|Наименование в базе|Наименование|Описание|Номер по порядку|Тип параметра|Возможные значения|Множество значений|Значение по умолчанию|Единица измерения
Компоненты|k_sklade|Складская стоимость|||F||||руб.
|||||||||
Товары|||||||||
Артикул|Наименование товара|Цена товара|Количество в продаже|Складская стоимость|Путь до родительской категории товара|Отгрузка|||
0|1.5KE180CA|4,7|40|188|Диоды|5 дней|||
1|1.5KE200A|4,44|2|8,88|Диоды|6 дней|||
2|1.5KE33CA|6,5|109|708,5|Диоды|7 дней|||
3|1.5KE39CA|4,58|34|155,72|Диоды|8 дней|||
4|1.5KE440|7,6|20|152|Диоды|9 дней|||
5|1.5KE6.8|6,82|100|682|Диоды|10 дней|||
6|1.5KE6.8CA|6,38|120|765,6|Диоды|11 дней|||
7|10BQ015|2,19|2|4,38|Диоды|12 дней|||
8|10BQ040|3,63|10|36,3|Диоды|13 дней|||
9|10MQ040N|3,34|21|70,14|Диоды|14 дней|||
10|10MQ060N|2,82|6|16,92|Диоды|15 дней|||
11|16TTS12S|31,03|2|62,06|Диоды|16 дней|||
12|1N002|0,2|5|1|Диоды|17 дней|||

сам параметр  в дампе я нашел :) а вот значения его для товара (к примеру - 188 8,88 или 708,5) нет. это у меня косяк где то или в коде?
« Последнее редактирование: 13.03.2008, 01:42:18 от Дельфинка »
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Дельфинка
В товаре поле должно называться:
Компоненты;Складская стоимость
У тебя же просто
Складская стоимость
« Последнее редактирование: 13.03.2008, 15:40:50 от Gruz »
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?

Спасибо, теперь появилось. вопрос не по теме этого:
загрузка прайса (1800строк) на локальной машине занимает порядка 5 минут. это нормально?

из какой таблицы мне нужно брать значения компонента для каждого товара, из jos_vm_product_type_1?
« Последнее редактирование: 13.03.2008, 13:50:57 от Дельфинка »
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Дельфинка
1. Да. На локале оно работает существенно медленнее. Видимо у тебя в каждой строке много информации, к тому же.
2.Ну дык залезь в базу и глянь где оно лежит. Там в зависимости от количества типов этих jos_vm_product_type_# может быть неограниченно.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?

у меня прайс из 1800 строк, не содержит описания товара, только цены. На локалке загружается минут за 5-7, на хостинге masterhost прошло 10 минут и браузер повис =) прайс залился не полностью.

Какие настройки лучше выставить? (строк за раз и секунд)
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
У меня аццкий сото-прайс на 2666 строк почти без описания на локале минуты 3-4 (не засекал, так на глаз). На хосте дважды меньше.
Вот пример
Код
Наличие на складе;Наличие товара|Отгрузка|Артикул|Наименование товара|Цена товара|Оптовая цена;Мелкий опт|Оптовая цена;Крупный опт|Гарантия;Гарантия|Путь до родительской категории товара|Производитель
товар ожидается и доступен к заказу (поставка в течении 1-2 дней)|zamovlennya.gif|ASUSKK8VMX|MB ASUS K8V-MX|57,00|55.00|50.00|1|1. Системные платы/Socket 754|Asus
товар есть на складе|je.gif|MBASUSK8VVM|MB ASUS K8V-VM, K8M890, A64 s754,PCI-E16x,Video, DDR400,SATA Raid,1Gb LAN,Sb 6ch, mATX|57,00|55.00|53.00|30|1. Системные платы/Socket 754|Asus
товар ожидается и доступен к заказу (поставка в течении 1-2 дней)|zamovlennya.gif|MBASR775I945GZ945|MB ASRock 775I945GZ, i945GZ, s775, VGA, FSB 800, S-ATA,DDRII533,AGI (PCI-E 4x),SB7.1, 10/100Lan,mATX|59,00|58.00|57.00|22|1. Системные платы/Socket 775|ASRock
товар ожидается и доступен к заказу (поставка в течении 1-2 дней)|zamovlennya.gif|MBASUSP5BMXWF|MB ASUS P5B - MX/WiFi-APP,i946GZ,FSB1066,SVGA,PCI-E16x,DDR2-667,SATA2,1Gb Lan, SB 6ch, WiFi,uATX|79,00|78.00|76.00|12|1. Системные платы/Socket 775|Asus
товар ожидается и доступен к заказу (поставка в течении 1-2 дней)|zamovlennya.gif|MBASUSP5B|MB ASUS P5B ,I965, FSB1066, DDR2-800, PCI-E16x, SATA2 RAID, 1Gb LAN, SB 8ch, ATX|99,00|98.00|96.00|24|1. Системные платы/Socket 775|Asus

Можешь сравнить количество инфы в строке? Количество полей?

По поводу настроек, я юзаю дефолтные.
Попробуй на нескольких строках при импорте, оно же там в лог время выводит.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?

Хм...

Код
Товары||||||
Артикул|Наименование товара|Цена товара|Количество в продаже|Компоненты;Складская стоимость|Путь до родительской категории товара|Отгрузка
0|1.5KE180CA|4,7|40|188|Диоды|5 дней
1|1.5KE200A|4,44|2|8,88|Диоды|6 дней
2|1.5KE33CA|6,5|109|708,5|Диоды|7 дней
3|1.5KE39CA|4,58|34|155,72|Диоды|8 дней
4|1.5KE440|7,6|20|152|Диоды|9 дней
5|1.5KE6.8|6,82|100|682|Диоды|10 дней
6|1.5KE6.8CA|6,38|120|765,6|Диоды|11 дней
такой прайс. даже меньше чем у вас.
не пойму почему так .... попробую другую сборку и сравню..

p.s.: сейчас заливаю обновление из столбиков: артикул, цена и отгрузка. Общее время выполнения: 355.5967 сек.

заливаю сейчас вот это:
Код
Товары||
Артикул|Цена товара|Путь до родительской категории товара
0|4,7|Диоды
1|4,44|Диоды
2|6,5|Диоды
3|4,58|Диоды
4|7,6|Диоды
5|6,82|Диоды

в логе вижу:
инфо: Начало обработки CSV.
инфо: Определение формата файла успешно выполнено. Время выполнения: 0.0007 сек.
ошибка: A Product Sku must be entered.
ошибка: A product name must be entered.
инфо: Строка 3
Товар не был добавлен. |
Время выполнения: 0.3784 сек.
инфо: Данные товара обновлены
инфо: Строка 4
Товар успешно обновлен. 16|1.5KE200A
Время выполнения: 0.8016 сек.

не пойму.. артикул не может быть нулевым, или тут в другом проблема...
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Ты видимо не тот разделитель при импорте указал.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?

Разделитель все тот. Сборка не помогла =)

Прикрепляю свой прайс с параметром.
попробуйте на локальном хосте пожалуйста....

[вложение удалено Администратором]

 !!!???!!!
Народ помогите!
При удаление товаров в прайсе выдает вот такую ошибку:

Error: The following image update command failed: unlink

Не могу понять в чем дело. >:(

У меня сборка 1.0.13 rus (Joomla)
Скрипт SimpleCSV 1.5 beta очень долго грузил прайс (более 10 минут и браузер вис)
Попытался разобраться ...

в файле globals.php есть код:

Код
/**
 * Эмуляция регистрации глобальных переменных (Register Globals Emulation)
 * больше не настраивается в этом файле. Сейчас этот параметр настраивается в глобальной
 * конфигурации сайта, в админцентре.
 */
if( defined( 'RG_EMULATION' ) === false ) {
if( file_exists( dirname(__FILE__).'/configuration.php' ) ) {
require( dirname(__FILE__).'/configuration.php' );
}

if( defined( 'RG_EMULATION' ) === false ) {
// В The configuration file is old so default to on
define( 'RG_EMULATION', 1 );
}
}

я изменил в нем:

Код
define( 'RG_EMULATION', 0 );
  и прайс стал мой грузиться за пару минут (1800 позиций).
P.S.: в админке RG_EMULATION изначально выключен у меня был. Пробовал даже в .htaccess выключить - не помогало. Правка кода - помогла :)


Благодарю Gruz за помощь в решении этой проблемы.
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
!!!???!!!
Народ помогите!
При удаление товаров в прайсе выдает вот такую ошибку:

Error: The following image update command failed: unlink

Не могу понять в чем дело. >:(
Посмотри что в БД у тебя в полях для фото прописано. Поиграйся с ними. Я когда-то так решал, по-моему.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?

Столкнулся с еще одной проблемкой!
При загрузке ЦСВ не отображает в прайсе перечень товаров, хотя в админке пишет, что все обновлено и добавлено.
Но на самом деле нет. Отображает только пару позиций.
Что делать подскажите пожалуйста!!!!!!!! :( 
*

Dimas_83

  • Новичок
  • 3
  • 0 / 0
У меня такой проблем :)

Первый раз импортирую после установки. Все ок.
Второй раз и последующие - в виртумарте не появляются цены.... хотя файл абсолютно идентично построены...

Снес VM, установил заново, установил загрузку CSV - первый раз все ок, последующие - цен нет....
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
1. Ты последнюю версию поставил? В теме автор выкладывал релизы.
2. В базе что происходит с ценами после первого раза? После второго?
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?

Добрый день! Установил версия beta 5, но у меня проблема, при загрузки csv файла, (даже примера), вылетает сообщение об ошибке 404 (файл не найден), файл загружаю с компьютера! Помогите пожалуйста, я в этом деле совсем новичек!
*

Dimas_83

  • Новичок
  • 3
  • 0 / 0
1. Ты последнюю версию поставил? В теме автор выкладывал релизы.
2. В базе что происходит с ценами после первого раза? После второго?

Проблема решилась установкой старой версии ВМРЕ 1.0.12...
Релиз выгрузки 5...
*

Dimas_83

  • Новичок
  • 3
  • 0 / 0
И еще подскажите: когда я импортирую данные, выгрузка тупо добавляет(обновляет)?
Т.е. каждый раз, если у меня какой-то товар в новом прайсе отсуствует, а на сайте он есть с прошлого раза, мне надо сначала удалить все значение, а затем вгружать новые...

Новый косяк, если категория называтся, например, "Ручки, ножки, вилки", то при загрузке они разобъются на 3 категории "Ручки","ножки","вилки"....

Если поменять , на . то все работает типа "Ручки. ножки. вилки"

Подскажите, как убрать эту проверку на запятые
« Последнее редактирование: 14.04.2008, 15:59:45 от Dimas_83 »

При обычной загрузке тоже вылетает эта ошибка!! Или же ничего не происходит! В чем может быть дело?
joomla 1.0.13
« Последнее редактирование: 14.04.2008, 17:26:51 от jora »

Dimas_83,

на ветке уже было!

* Если в тексте попадаются запятые, то они принимаются как разделитель.
administrator\components\com_virtuemart\classes\ps_simple_csv.php
в районе строки 806
Код:
Код
    if( !is_array($paths) ) $paths = explode(',', $paths);
    if( !is_array($paths) ) $paths = explode('|', $paths);
    if( !is_array($paths) ) $paths = explode(';', $paths);
Заменить на:

Код
//##my Закоментував, щоби не било категорію по комах    if( !is_array($paths) ) $paths = explode(',', $paths);
    if( !is_array($paths) ) $paths = explode('|', $paths);
//##my Закоментував, щоби не било категорію по крапка з комами    if( !is_array($paths) ) $paths = explode(';', $paths);

Бить категорию будет только по слешам.
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
И еще подскажите: когда я импортирую данные, выгрузка тупо добавляет(обновляет)?
Т.е. каждый раз, если у меня какой-то товар в новом прайсе отсуствует, а на сайте он есть с прошлого раза, мне надо сначала удалить все значение, а затем вгружать новые...
Ну дык там же есть галочка проверки обновления. Если ставишь, то всё, чего нет в прайсе, депубликуется.

При обычной загрузке тоже вылетает эта ошибка!! Или же ничего не происходит! В чем может быть дело?
joomla 1.0.13
Подозреваю дело в настройках твоего хоста. Попробуй как работает на локале.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?

Ребята ! Нужна помощь!
вообщем имеется такой вот вид :
есть один основной товар (катушка Certate) и есть модели (Certate 1500,Certate 2000, и тп).
В настоящий момент логически в магазине один товар это катушка Certate, а вот эти модели сделанный как бы в описании товара с помощью HTML и хитрых манипуляций с формами. что делает процесс очень долгим и мучительным.
НО в таком виде нельзя импортировать из CSV.
Как можно настроить такой вид , например типов товара или доп полей ?
или может все модели(Certate 1500,Certate 2000, и тп). сделать  как отдельный товар ? но тогда возникает проблема как отобразить в таком вот виде как на рисунке  , хотябы похожем , чтоб открыл категорию и описания товаров в иде списка друг за другом , и чтоб сверху каринка одна общая с описанием категории .....

[вложение удалено Администратором]

На 1,5 версию джомлы можно установить этот компонент?

Народ подскажите. перерыл ветку ответа не нашол.
Установил модуль сделалт csv пытаюсь залить а он мне выдает ошибку что страница не найдена.
*

akman

  • Новичок
  • 3
  • 0 / 0
Помогите.
Установил simple_csv_1_beta_3 все работало, а потом вдруг при загрузке CSV на сервер стала появляться 500-ая страница Internal Server Error.
В логах выдает Premature end of script headers: /home/nama/public_html/index.php
SoftException in Application.cpp:544: Directory "/home/nama/public_html" is writeable by group    !!!???!!!  !!!???!!! :o
*

secretlive

  • Захожу иногда
  • 52
  • 0 / 0
Помогите разобратся!!!
Установил 5 версию этого хака, потом с помощью OpenOffice.org переделал примеры в CSV c разделтелями |.

Потом при загрузке выдает ошибку:

Инфо: Начало обработки CSV.
Инфо: Строка 1
Ожидаются данные.
Не указан обрабатывающий модуль.
Строка пропущена.
*

Jan

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
при установке пишет Ошибка: Please specify an ID to validate
устанавливаю beta 1.5
Joomla Lavra 2008 + VM 1.1.0
что делать?

при установке пишет Ошибка: Please specify an ID to validate
Аналогичная проблема.
У меня Joomla 1.5.3 + VM 1.1.0
Jan, если разберешься самостоятельно, огромная просьба - запости сюда как :)
*

Jan

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
да как же разобраться?
где автор модуля? может он подскажет
*

Jan

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
при установке пишет Ошибка: Please specify an ID to validate
устанавливаю beta 1.5
Joomla Lavra 2008 + VM 1.1.0
что делать?
надо добавить ф-ию в модул products (настройки-список модулей-products там выбрать ф-ии и доватить следующую ф-ию
имя функции  product_simple_csv
имя класса ps_simple_csv
метод класса upload_csv
права admin
но после этого при загрузке файла пишет ошибку serurity token
to EMakar
напиши что у тебя будет выводить
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Хак] Ускорение загрузки магазина (минимум в 10 раз)

Автор ifx

Ответов: 66
Просмотров: 40752
Последний ответ 15.01.2020, 10:38:34
от ChaosHead
Модификация поиска

Автор Александр216

Ответов: 7
Просмотров: 1609
Последний ответ 19.03.2013, 23:54:51
от Александр216
Расширяний вид админки через сайт

Автор ranaza

Ответов: 1
Просмотров: 1342
Последний ответ 25.08.2012, 11:50:30
от ranaza
Модификация browse_listtable.tpl.php

Автор Servelatin

Ответов: 0
Просмотров: 1339
Последний ответ 15.05.2012, 16:23:23
от Servelatin
Без оплаты через сайт, наличными при получении

Автор doroshenkok

Ответов: 0
Просмотров: 1474
Последний ответ 13.03.2012, 10:29:48
от doroshenkok