Новости 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 Ответов
  • 215113 Просмотров
*

rgtinerda

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1140 : 24.02.2014, 15:13:23 »
Вот вопрос:
КАК выгрузить артикулы для товаров?
либо как сделать чтобы артикулы засовывала выгрузка в наименование либо в характеристики
*

Alex2

  • Захожу иногда
  • 113
  • 6 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1141 : 25.02.2014, 08:28:29 »
Вот вопрос:
КАК выгрузить артикулы для товаров?
либо как сделать чтобы артикулы засовывала выгрузка в наименование либо в характеристики
Артикул и так выгружается в карточку товара. Возможно он просто не отображается на сайте. Для отображения Артикула надо править код в VM, страница категорий либо карточку товара.
*

Autocom

  • Захожу иногда
  • 306
  • 3 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1142 : 25.02.2014, 14:44:13 »
 На VirtueMart 2.0.26d авторизация не проходит, на  2.0.24 работает.
Видимо чего то поменяли разработчики.
*

rgtinerda

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1143 : 26.02.2014, 08:24:11 »
На VirtueMart 2.0.26d авторизация не проходит, на  2.0.24 работает.
Видимо чего то поменяли разработчики.

в checver.php

if ((($sh_version >= "200" and $sh_version <= "299") and $version != "2.0.0-RC-2M" and $version_status == "Final") or $sh_version == "2026d")
*

Autocom

  • Захожу иногда
  • 306
  • 3 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1144 : 26.02.2014, 10:33:35 »
Если вы читали эту тему, я это сам уже советовал несколько раз другим.
Но дело явно не в этом.
*

rgtinerda

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1145 : 26.02.2014, 10:59:42 »
Если вы читали эту тему, я это сам уже советовал несколько раз другим.
Но дело явно не в этом.

че пишет та
2.0.26d сборка работает у меня
*

Autocom

  • Захожу иногда
  • 306
  • 3 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1146 : 26.02.2014, 11:02:00 »
Ставили с нуля или обновлялись?
Пробовал несколько раз, после обновления перестает работать авторизация.
*

rgtinerda

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1147 : 26.02.2014, 11:04:02 »
адрес какой?
*

Autocom

  • Захожу иногда
  • 306
  • 3 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1148 : 26.02.2014, 11:05:18 »

После обновления на 2.0.26d 1С пишет: "не удалось установить соединение с сервером. Проверьте имя пользователя и пароль"
« Последнее редактирование: 27.02.2014, 13:28:36 от Autocom »
*

rgtinerda

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1149 : 26.02.2014, 11:10:40 »
AutoComputer.ru Сейчас там 2.0.24
После обновления на 2.0.26d 1С пишет: "не удалось установить соединение с сервером. Проверьте имя пользователя и пароль"
чего HTML пишет какую ошибку
*

rgtinerda

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1150 : 26.02.2014, 11:11:47 »
чего HTML пишет какую ошибку
http://autocomputer.ru/vmshop_1c.php
просит авторизацию
*

Autocom

  • Захожу иногда
  • 306
  • 3 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1151 : 26.02.2014, 11:12:34 »
он и должен её просить
На данной версии авторизация проходит
*

rgtinerda

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1152 : 26.02.2014, 11:13:18 »
он и должен её просить
На данной версии авторизация проходит
дак авторизуйся и посмотри что далее будет
*

Autocom

  • Захожу иногда
  • 306
  • 3 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1153 : 26.02.2014, 11:16:32 »
При попытке запуска на версии 2.0.26д:
Notice: Undefined variable: somecontent in /home/ХХХХХХХ/data/www/ХХХХХr.ru/vmshop_1c.php on line 179
*

rgtinerda

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1154 : 26.02.2014, 11:23:53 »
При попытке запуска на версии 2.0.26д:
Notice: Undefined variable: somecontent in /home/ХХХХХХХ/data/www/ХХХХХr.ru/vmshop_1c.php on line 179
вот как я решил проблему:
!
Переустановил Joomla и вирт, этап ошибки проскочил.
Но как только настраиваю в магазине "Дополнительная информация"
то ошибка опять появляется.
Решил пока не трогать настройку.
!
т.е. где то там капать, по сути проблема не решена
*

Autocom

  • Захожу иногда
  • 306
  • 3 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1155 : 26.02.2014, 11:27:08 »
Понятно. Я пока оставил версию 2.0.24. На ней всё работает.
В т.ч. и  "Дополнительная информация"
*

rgtinerda

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1156 : 26.02.2014, 12:58:16 »
Скажите: у кого нибудь есть шаблон, для VirtueMart так, чтобы товары отражались в строчку и без картинок.
И при заказе можно было вставлять количество.
*

rgtinerda

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1157 : 27.02.2014, 15:48:32 »
Скажите: у кого нибудь есть шаблон, для VirtueMart так, чтобы товары отражались в строчку и без картинок.
И при заказе можно было вставлять количество.
Повторюсь:
Ищу решение или модуль для вирта:
вывод товара в виде прайса с возможностью установления количества товара и сохранения в корзину
*

Amatoravg

  • Осваиваюсь на форуме
  • 20
  • 1 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1158 : 27.02.2014, 16:32:50 »
Всем привет! Особенно тем, у кого в последнее время проблема с авторизацией.
Решение найдено:
checkauth.php - был написан под 1.5
в нем $testcrypt = JUserHelper::getCryptedPassword($password, $salt);  - может некорректно работать.

Меняем
//if($crypt == $testcrypt){
на
$credentials = array( 'username'=>$username_esc, 'password'=>$password );
$options = array( 'remember'=>true );
if( JFactory::getApplication()->login( $credentials, $options )){

Кому лень править, откорректированный файл можно скачать отсюда:
http://infostart.ru/public/236338/
*

Autocom

  • Захожу иногда
  • 306
  • 3 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1159 : 28.02.2014, 09:45:30 »
Плюсанул. Но видимо поторопился. Человек опять чужие наработки выдает за свои.
Ещё и продает то, что взял здесь бесплатно.
« Последнее редактирование: 04.04.2014, 09:14:11 от Autocom »
*

Amatoravg

  • Осваиваюсь на форуме
  • 20
  • 1 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1160 : 28.02.2014, 17:31:13 »
блгдрю :)
*

davudo

  • Новичок
  • 6
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1161 : 02.03.2014, 01:45:57 »
Тебе скорее всего поможет вот это:

В файле offers.php поменять
            $ins->product_price_vdate = "0";  
            $ins->product_price_edate = "0";
на
            $ins->product_price_publish_up = "0";  
            $ins->product_price_publish_down = "0";
мне помогло.
Тебе скорее всего поможет вот это:

В файле offers.php поменять
            $ins->product_price_vdate = "0";  
            $ins->product_price_edate = "0";
на
            $ins->product_price_publish_up = "0";  
            $ins->product_price_publish_down = "0";
мне помогло.

После изменения строк вывалилась ошибка
Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.
Обмен не выполнен
Ответ сервера:
<b>Notice</b>:  Undefined index:  cashgr in <b>/home/virtwww/w_piramida_7e9ba18a/http/components/com_virtuemart/1cexport/system/offers.php</b> on line <b>108</b><br />
<br />
<b>Notice</b>:  Undefined index:  cashgr in <b>/home/virtwww/w_piramida_7e9ba18a/http/components/com_virtuemart/1cexport/system/offers.php</b> on line <b>112</b><br />
<br />
<b>Notice</b>:  Undefined variable: offers in <b>/home/virtwww/w_piramida_7e9ba18a/http/components/com_virtuemart/1cexport/system/offers.php</b> on line <b>162</b><br />
failure\nerror MySQL

Выгрузка товаров завершена с ошибками!
« Последнее редактирование: 02.03.2014, 01:49:28 от davudo »
*

davudo

  • Новичок
  • 6
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1162 : 02.03.2014, 01:54:42 »
Помогите настроить за деньги. Цена не выгружается..
*

Alex2

  • Захожу иногда
  • 113
  • 6 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1163 : 02.03.2014, 14:20:33 »
После изменения строк вывалилась ошибка
Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.
Обмен не выполнен
Ответ сервера:
<b>Notice</b>:  Undefined index:  cashgr in <b>/home/virtwww/w_piramida_7e9ba18a/http/components/com_virtuemart/1cexport/system/offers.php</b> on line <b>108</b><br />
<br />
<b>Notice</b>:  Undefined index:  cashgr in <b>/home/virtwww/w_piramida_7e9ba18a/http/components/com_virtuemart/1cexport/system/offers.php</b> on line <b>112</b><br />
<br />
<b>Notice</b>:  Undefined variable: offers in <b>/home/virtwww/w_piramida_7e9ba18a/http/components/com_virtuemart/1cexport/system/offers.php</b> on line <b>162</b><br />
failure\nerror MySQL

Выгрузка товаров завершена с ошибками!


Укажите больше информации.
Какие используете Версии 1С, Joomla, VM, плагина.
Установлена ли соответствующая "Версия модуля обмена" от 1С.
Приложите лог выгрузки.
*

emafanasev

  • Новичок
  • 4
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1164 : 02.03.2014, 19:41:36 »
Всем привет! Проблема такая:

Joomla 2.5.18
VirtueMart 2.0.26d
скрипт 2.1.0 beta
1С 8.1 УТ 10.3

Не смотря на внесение этих изменений:
Меняем
//if($crypt == $testcrypt){
на
$credentials = array( 'username'=>$username_esc, 'password'=>$password );
$options = array( 'remember'=>true );
if( JFactory::getApplication()->login( $credentials, $options )){
авторизация через 1с не работает.

В логе скрипта создается следующая запись:
Код
#Fields: date	time	priority	clientip	category	message
2014-03-02 16:01:07 INFO ---.---.---.--- - Скрипт адптации 1С и магазина VirtueMart версии: 2.0.26d Релиз: MINOR,
версия скрипта: 2.1.0.beta, обнуление базы перед выгрузкой: yes, выгрузка архивом: yes
2014-03-02 16:01:07 INFO ---.---.---.--- - Этап 1) Авторизация на сервере
2014-03-02 16:01:07 INFO ---.---.---.--- - Этап 1) Успешно

При обращению к vmshop_1c.php через браузер, он просит пароль, и тут те же самые логин/пароль проходят.

Собственно вопрос - куда копать? !
Заранее благодарен!
« Последнее редактирование: 02.03.2014, 20:06:28 от emafanasev »
*

emafanasev

  • Новичок
  • 4
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1165 : 02.03.2014, 20:22:31 »
Прошу прощения, сглупил. Авторизация проходит. Надо было всего лишь выставить VM_HTTP_VERS равным 0.

При выгрузке ошибка:
Код
...
--------------Добавляем товар: Цвет--------------
Для продукта Цвет создано дополнительное поле Цвет со значением Бежевый
Этап 4.1.3) Товар - Цвет добавлен
Этап 4.1.3) Обновляем товар id - 11, наименование - Цвет
Этап 4.1.3) Обновляем товар id - 11, наименование - Цвет
Этап 4.1.3) Обновляем товар id - 11, наименование - Цвет
Этап 4.1.3) Обновляем товар id - 11, наименование - Цвет
Этап 4.1.3) Обновляем товар id - 11, наименование - Цвет
Этап 4.1.3) Обновляем товар id - 11, наименование - Цвет
--------------Добавляем товар: Цвет--------------
Для продукта Цвет создано дополнительное поле Цвет со значением Бежевый
Этап 4.1.3) Товар - Цвет добавлен
Этап 4.1.3) Обновляем товар id - 12, наименование - Цвет
Этап 4.1.3) Неудача: Невозможно обновить продукт id - 12
Этап 4.1.3) UPDATE #__virtuemart_products_ru_ru SET `slug`='tsvet', `virtuemart_product_id`='12' where virtuemart_product_id='12'

Судя по всему скрипт почему-то выгружает не название товара, а название его характеристики... Подскажите, пожалуйста, в чем проблема?
« Последнее редактирование: 03.03.2014, 14:53:34 от emafanasev »
*

rgtinerda

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1166 : 03.03.2014, 14:57:02 »
Прошу прощения, сглупил. Авторизация проходит. Надо было всего лишь выставить VM_HTTP_VERS равным 0.

При выгрузке ошибка:
Код
...
--------------Добавляем товар: Цвет--------------
Для продукта Цвет создано дополнительное поле Цвет со значением Бежевый
Этап 4.1.3) Товар - Цвет добавлен
Этап 4.1.3) Обновляем товар id - 11, наименование - Цвет
Этап 4.1.3) Обновляем товар id - 11, наименование - Цвет
Этап 4.1.3) Обновляем товар id - 11, наименование - Цвет
Этап 4.1.3) Обновляем товар id - 11, наименование - Цвет
Этап 4.1.3) Обновляем товар id - 11, наименование - Цвет
Этап 4.1.3) Обновляем товар id - 11, наименование - Цвет
--------------Добавляем товар: Цвет--------------
Для продукта Цвет создано дополнительное поле Цвет со значением Бежевый
Этап 4.1.3) Товар - Цвет добавлен
Этап 4.1.3) Обновляем товар id - 12, наименование - Цвет
Этап 4.1.3) Неудача: Невозможно обновить продукт id - 12
Этап 4.1.3) UPDATE #__virtuemart_products_ru_ru SET `slug`='tsvet', `virtuemart_product_id`='12' where virtuemart_product_id='12'

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

посмотри в 1с в номенклатуре одинаковые наименования есть
*

emafanasev

  • Новичок
  • 4
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1167 : 03.03.2014, 15:38:39 »
посмотри в 1с в номенклатуре одинаковые наименования есть

Вроде различные все... Какие именно наименования проверить надо? Я в 1с совсем новичок=) УТ демо базу импортирую...
*

rgtinerda

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1168 : 03.03.2014, 15:54:00 »
Вроде различные все... Какие именно наименования проверить надо? Я в 1с совсем новичок=) УТ демо базу импортирую...
у меня была очень похожая ошибка при повторной выгрузке.
поставь yes в конфиге на пункте очищении базы при выгрузке.
либо снеси товары в VirtueMart и попробуй выгрузить снова
либо в товаре с наименованием цвет под id 12 добавь символ (например-*)
проблема в одинаковом названии товара
*

emafanasev

  • Новичок
  • 4
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1169 : 03.03.2014, 17:19:38 »
у меня была очень похожая ошибка при повторной выгрузке.
поставь yes в конфиге на пункте очищении базы при выгрузке.
либо снеси товары в VirtueMart и попробуй выгрузить снова
либо в товаре с наименованием цвет под id 12 добавь символ (например-*)
проблема в одинаковом названии товара

в конфиге стоит yes в пункте очищения
снести и выгрузить снова пробовал, результат тот же
в том то и проблема - товара с именем "цвет" нет в базе, но есть у товаров характеристика названием "цвет", скрипт почему-то принимает название характеристики за название товара. Вот и возникает ошибка дублирования, так как в базе есть несколько товаров с характеристикой "цвет".

Вот лог импорта после полной чистки базы от следов скрипта:
Код
...4.1.2) Категория и все ее подкатегории созданы
--------------Добавляем товар: Цвет отделки--------------
Этап 4.1.3) Товар - Цвет отделки добавлен
Этап 4.1.3) Обновляем товар id - 19, наименование - Цвет отделки
Этап 4.1.3) Обновляем товар id - 19, наименование - Цвет отделки
--------------Добавляем товар: Ассорти (конфеты)--------------
Этап 4.1.3) Товар - Ассорти (конфеты) добавлен
--------------Добавляем товар: Барбарис (конфеты)--------------
Этап 4.1.3) Товар - Барбарис (конфеты) добавлен
--------------Добавляем товар: Белочка (конфеты)--------------
Этап 4.1.3) Товар - Белочка (конфеты) добавлен
--------------Добавляем товар: Цвет--------------
Для продукта Цвет создано дополнительное поле Цвет со значением Бежевый
Этап 4.1.3) Товар - Цвет добавлен
Этап 4.1.3) Обновляем товар id - 23, наименование - Цвет
Этап 4.1.3) Обновляем товар id - 23, наименование - Цвет
Этап 4.1.3) Обновляем товар id - 23, наименование - Цвет
Этап 4.1.3) Обновляем товар id - 23, наименование - Цвет
Этап 4.1.3) Обновляем товар id - 23, наименование - Цвет
Этап 4.1.3) Обновляем товар id - 23, наименование - Цвет
--------------Добавляем товар: Цвет--------------
Для продукта Цвет создано дополнительное поле Цвет со значением Бежевый
Этап 4.1.3) Товар - Цвет добавлен
Этап 4.1.3) Обновляем товар id - 24, наименование - Цвет
Этап 4.1.3) Неудача: Невозможно обновить продукт id - 24
Этап 4.1.3) UPDATE #__virtuemart_products_ru_ru SET `slug`='tsvet', `virtuemart_product_id`='24' where virtuemart_product_id='24'

Товара "Цвет отделки", "Цвет" нет в базе. В чем может быть проблема? !
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

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

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

Автор danklassik

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

Автор fedorkit

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

Автор zufar

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

Автор EmDmAl

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