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

Dism

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #780 : 26.09.2012, 10:27:30 »
нет не решена

а дублируются тк неправильный механизм поиск товара в скрипте
Дело в том что обратно загружается id которое присвоил VirtueMart а не артикул товара, из-за этого как я понимаю и нестыковка. Может я и не прав.
*

fenixnow

  • Захожу иногда
  • 89
  • 2 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #781 : 26.09.2012, 10:37:28 »
прав

кинь хмлевский файлик с заказами я вспомню :)
*

Dism

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #782 : 26.09.2012, 10:51:50 »
прав

кинь хмлевский файлик с заказами я вспомню :)

В выгрузке
<Ид>89088f68-018c-11e2-acb8-001d92f430ef</Ид>
<Артикул>200554</Артикул>

А в загрузке
<Ид>4</Ид> без артикула
*

fenixnow

  • Захожу иногда
  • 89
  • 2 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #783 : 26.09.2012, 10:56:25 »
VirtueMart не оперирует никакими id как в 1С
*

Dism

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #784 : 26.09.2012, 11:02:05 »
VirtueMart не оперирует никакими id как в 1С

Не важно оперирует он или нет, важно что 1с для оперирования нужен id а он то как раз не возвращается.
*

Dism

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #785 : 26.09.2012, 11:46:11 »
VirtueMart не оперирует никакими id как в 1С

Я так понял нужно добавить в таблицу vm_product ещё одну колонку  в которую добавлять ид 1С и этот ид и следует выгружать, так-как в него шифруется и каталог в котором находится товар.
*

Dism

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #786 : 26.09.2012, 14:07:40 »
VirtueMart не оперирует никакими id как в 1С

Вопрос решил следующим образом. Скрипт создаёт таблицу product_to_1c в которой хранятся ИД 1с, запросом извлёк ИД и вставил в файле createzakaz.php в строке $t1_2 = $t1_1->addChild ( "Ид",  вместо id VirtueMart ИД 1С. После этого товары не дублируются.
*

fenixnow

  • Захожу иногда
  • 89
  • 2 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #787 : 26.09.2012, 14:11:47 »
молодец, выкладывай :)
*

Vitek

  • Захожу иногда
  • 185
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #788 : 26.09.2012, 14:31:51 »
Вопрос решил следующим образом. Скрипт создаёт таблицу product_to_1c в которой хранятся ИД 1с, запросом извлёк ИД и вставил в файле createzakaz.php в строке $t1_2 = $t1_1->addChild ( "Ид",  вместо id VirtueMart ИД 1С. После этого товары не дублируются.
Где ж ты раньше был :-) Напиши подробнее что да как плззз.
Ещё может сможешь придумать как производителя выгрузить на сайт?
*

Dism

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #789 : 26.09.2012, 15:02:40 »
На идеальность решения не претендую, если кто знает как лучше сделать запрос пишите.

$sql = "SELECT c_id FROM `#__".DBBASE."_product_to_1c` where `product_id` = '" . $razbor_zakaza_t->product_id . "'";
         $db->setQuery ( $sql );
         $id_1c = $db->loadResult ();   // получаем ИД 1С       
                        $t1_2 = $t1_1->addChild ( "Ид", $id_1c );      

вместо


         $t1_2 = $t1_1->addChild ( "Ид", $razbor_zakaza_t->product_id );

А все товары в категориях только у меня отображаются или все молчат.
*

Dism

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #790 : 26.09.2012, 15:09:41 »
Разработчик пишет что  Выгрузка производителей реализована, а где-то описано каким образом?
*

Dism

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #791 : 26.09.2012, 16:35:18 »
Ясно. Всем нужны только готовые решения. А поучаствовать никто не хочет.
*

Vitek

  • Захожу иногда
  • 185
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #792 : 26.09.2012, 18:14:14 »
вместо
         $t1_2 = $t1_1->addChild ( "Ид", $razbor_zakaza_t->product_id );

А все товары в категориях только у меня отображаются или все молчат.
А где это вместо и что на что менять, плз поподробнее, чтоб не испортить все.
Товары у меня как надо выгружаются, правда у меня 1с 8.2 УТ 10.3
*

Dism

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #793 : 26.09.2012, 18:26:22 »
createzakaz.php

находим и заменяем:

 $t1_2 = $t1_1->addChild ( "Ид", $razbor_zakaza_t->product_id );

на:

$sql = "SELECT c_id FROM `#__".DBBASE."_product_to_1c` where `product_id` = '" . $razbor_zakaza_t->product_id . "'";
$db->setQuery ( $sql );
$id_1c = $db->loadResult ();   // получаем ИД 1С       
$t1_2 = $t1_1->addChild ( "Ид", $id_1c );
*

Dism

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #794 : 26.09.2012, 18:33:40 »
Товары у меня как надо выгружаются, правда у меня 1с 8.2 УТ 10.3
а VirtueMart какой версии?
*

Vitek

  • Захожу иногда
  • 185
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #795 : 26.09.2012, 18:44:04 »
а VirtueMart какой версии?
Joomla 1.5.23 Virt 1.1.9 1С 8.2 УТ 10.3
Все работает гууд, была проблема с выгрузкой заказов, я решил с помощью печати штрихкода в письме с заказом (которое на почту приходит), ещё иногда при выгрузке только изменений вылазит ошибка, пока не вникал почему.
*

Dism

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #796 : 26.09.2012, 18:51:48 »
Joomla 1.5.23 Virt 1.1.9 1С 8.2 УТ 10.3
Все работает гууд, была проблема с выгрузкой заказов, я решил с помощью печати штрихкода в письме с заказом (которое на почту приходит), ещё иногда при выгрузке только изменений вылазит ошибка, пока не вникал почему.
А скрипт какой версии?
*

Vitek

  • Захожу иногда
  • 185
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #797 : 26.09.2012, 18:59:20 »
А скрипт какой версии?

2.0.8.

2.0.9. - у меня не заработал
2.1.0 - работает, но он вставляет название товара в краткое описание товара, в принципе не критично
Другие версии не проверял
*

Dism

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #798 : 27.09.2012, 00:47:03 »
все товары в категориях решил переустановкой VirtueMart? видимо что-то в коде важное зацепил, поэтому проще бвло переустановить, чем найти где ошибка.
*

Vitek

  • Захожу иногда
  • 185
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #799 : 27.09.2012, 05:23:14 »
все товары в категориях решил переустановкой VirtueMart? видимо что-то в коде важное зацепил, поэтому проще бвло переустановить, чем найти где ошибка.
Поздравляю!
Как бы нам ещё свойство - производитель выгружать?
*

Dism

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #800 : 27.09.2012, 15:04:29 »
Поздравляю!
Как бы нам ещё свойство - производитель выгружать?
Я не очень силён в этом. Может есть желающие скинуться на доработку скрипта. Тогда и желающие доделать найдутся.
*

Alex2

  • Захожу иногда
  • 113
  • 6 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #801 : 27.09.2012, 19:34:49 »
Все доброго времени суток.

Исходные данные:

скрипт 2.0.9
joomla Версия 1.5.18
VirtueMart 1.1.4 stable
"Управление торговлей", редакция 10.3 (10.3.18.3)
define ( 'VM_DB', 'no' );    // Обнулять таблицы перед выгрузкой?

Если переместить товар в 1С из одной группы в другую, то после выгрузки изменений, на сайте ничего не меняется.
Как был товар в старой группе, так там и остался.
Подскажите, как итсправить?
*

Dism

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #802 : 28.09.2012, 00:53:32 »
Все доброго времени суток.

Исходные данные:

скрипт 2.0.9
joomla Версия 1.5.18
VirtueMart 1.1.4 stable
"Управление торговлей", редакция 10.3 (10.3.18.3)
define ( 'VM_DB', 'no' );    // Обнулять таблицы перед выгрузкой?

Если переместить товар в 1С из одной группы в другую, то после выгрузки изменений, на сайте ничего не меняется.
Как был товар в старой группе, так там и остался.
Подскажите, как итсправить?


define ( 'VM_DB', 'yes' ); и должно получиться :)
*

Alex2

  • Захожу иногда
  • 113
  • 6 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #803 : 28.09.2012, 07:39:13 »
define ( 'VM_DB', 'yes' ); и должно получиться :)
Но тогда картинки с категорий удалятся
*

Autocom

  • Захожу иногда
  • 306
  • 3 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #804 : 28.09.2012, 09:17:04 »
Но тогда картинки с категорий удалятся
Должны новые создаться из изображений товаров.
*

Alex2

  • Захожу иногда
  • 113
  • 6 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #805 : 28.09.2012, 13:28:02 »
Должны новые создаться из изображений товаров.
Мне нужно, чтобы остались картинки, которые я сам установил
*

Vitek

  • Захожу иногда
  • 185
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #806 : 28.09.2012, 13:55:15 »
Мне нужно, чтобы остались картинки, которые я сам установил
+1 как сделать чтою картинки не трогал 1с ?
*

Dism

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #807 : 28.09.2012, 14:36:30 »
+1 как сделать чтою картинки не трогал 1с ?
Заменить всё и по новой изменить картинки категорий. По другому думаю не получится.
*

Darkman

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #808 : 30.09.2012, 22:40:50 »
вес товара импортируется у каго нибудь?
*

exact

  • Новичок
  • 1
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #809 : 05.10.2012, 20:14:48 »
Вышла VirtueMart 2.0.12 с ней есть корректно работающий коннектор к БД 1С ?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как импортировать файл XML в Joomla VirtueMart?

Автор Кот Смюлан

Ответов: 2
Просмотров: 5184
Последний ответ 14.07.2016, 18:40:24
от Berzerker
Обсуждение бесплатного компонента импорта-экспорта товаров VirtueMart "CSV Improved 1.9"

Автор danklassik

Ответов: 14
Просмотров: 17296
Последний ответ 18.02.2016, 10:21:33
от Storm
Перенос товаров с сайта на сайт (оба на joomla+virtuemart)

Автор fedorkit

Ответов: 8
Просмотров: 14310
Последний ответ 31.01.2016, 22:09:30
от Messir
VirtueMart 1.1.3 stable - выгрузка товаров в яндекс.маркет

Автор zufar

Ответов: 690
Просмотров: 172794
Последний ответ 05.02.2015, 16:39:22
от newjey
Описание полей таблиц в базе данных VirtueMart

Автор EmDmAl

Ответов: 39
Просмотров: 39803
Последний ответ 30.01.2015, 16:15:38
от nick71