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

refrizherator

  • Захожу иногда
  • 60
  • 1 / 0
Предыдущую проблему решил, всё было из-за цены через точку (20.00 USD)!  Но как тогда сделать, чтобы в экспортируемом файле цена была через запятую, а не через точку, мне нужно периодически его корректировать и поэтому для импорта придется менять каждую цену товара (с 20.00  на 20,00) представляете сколько товара в парфюмерии! К тому же не опэн офис не эксель не делает арифметических операций с дробными числами через точку, они считают, что это толи текст толи нуль, но выходит нуль или ошибка... Как вы с этим справляетесь, подскажите?
*

refrizherator

  • Захожу иногда
  • 60
  • 1 / 0
ВСЁ РЕШЕНО! Спасибо Gruz за помощь! Для того чтобы в экспортируемом файле цены были с разделителем запятая нужно:

в файле administrator/components/com_csvimproved/models/productexport.php

Орієнтовно 404 лінія:
$contents .= $this->_exportmodel->AddExportField($product_price, $fieldname, $field->column_header);

Перед ней вставить это:

$product_price = preg_replace ('/\./Ui',',',$product_price);//##my201011180013 Replace dot with comma in price output

И всё наладится! Это даст возможность проводить арифметические действия с ценами и полноценно использовать Exel, OpenOffice
*

crucian

  • Захожу иногда
  • 69
  • 2 / 0
J 1.5.21, VM 1.1.5
Создаю в CAVI шаблон для заливки доп. фотографий с полями: product_sku -- product_files_file_name -- product_files_file_title -- product_files_file_published

где product_files_file_name - /папка1/мой_файл.jpg
c учетом что путь к файлам в шаблоне прописан так Z:\home\caze\www\components\com_virtuemart\shop_image\product

создает самбнэйл и помещает в папку ресайзед, по клику на который открывается полное изображение, но самбнэйл не отображается. почему?
*

koshi

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
маленький обзорчик доступных компонентов для импорта товаров (http://storeupdatebooster.blogspot.com/2010/11/virtuemart.html). Какой лучше выбрать?
*

kpk17

  • Захожу иногда
  • 257
  • 2 / 0
а можно как-то свойства товара импортировать?
например нужны разыне вкусы для товара
*

MxR

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Попытался сделать импорт типов по инструкции в ответе #9.
Помогите, пжлст, разобраться с возникшими проблемами:

1. Импортируються только первые 4 строки из файла импорта.
2. В некоторых столбцах CSVI почему-то не распознает текст, а только цифры (на скрине)




Заранее спасибо.



Разобрался. Поставил разделитель текста " и все заработало.
« Последнее редактирование: 29.11.2010, 12:53:11 от MxR »
*

Ilham

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
помогите пожалуйста, при экспорте данных в csv описание товара отображается с HTML тегами как можно убрать теги чтобы был только текст
Присоединяюсь к dakota. Как убрать из описания HTML теги? Некрасиво получается.
*

AndyMuka

  • Новичок
  • 6
  • 0 / 0
Прошу прощения, возможно этот вопрос уже был, но всеже...Сталкнулся с проблемой по импорту, поясню:
Есть ли возможность назначить одному товару к примеру с ID300, различные данные расширенного поиска...Как бы, в поиске забивая "1" или "2" или "3" появлялся этот же товар с ID300...
Заранее спасибо


Все спасибо, разобрался Сам...Оказывается в каждом поле для типа можно написать кучу данных, главное чтоб они разделялись точкой с запятой....
« Последнее редактирование: 10.12.2010, 16:21:51 от AndyMuka »
*

Ilham

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
помогите пожалуйста, при экспорте данных в csv описание товара отображается с HTML тегами как можно убрать теги чтобы был только текст

Скажите люди, кто-нибудь знает как убрать HTML теги из прайса при экспорте. Не могу нигде найти ответа! Помогите!
*

Тимур

  • Захожу иногда
  • 52
  • 1 / 0
Делаю вроде бы все по инструкции, но видимо где-то ошибка закралась, потому что при импорте типов происходит ошибка:
"Ошибка :: Показать/Спрятать
Строка 2: ID типа продукта не найден"
Наверняка дело в каком-то пустяке, прошу подскажите пожалуйста!
*

Gruz

  • Moderator
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Типы уже существуют?

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

Тимур

  • Захожу иногда
  • 52
  • 1 / 0
Тип "Поиск по шин по типоразмеру" существует. Он имеет один из параметров "Width". Товар с артикулом "65453" также существует на сайте. Требуется этому товару присвоить данный тип ну и значение вышеупомянутого параметра.
Схема действий: создал шаблон импорта типов, во вкладке "Установки" выбрал Тип шаблона "Импорт названий типов товара". Затем создал вот такой файл csv в OpenOffice:

product_sku^product_type_name^width
65453^Поиск шин по типоразмеру^145

Загружаю по данному шаблону этот файл, выдается ошибка:
"Ошибка :: Показать/Спрятать
Строка 2: ID типа продукта не найден"
В чем загвоздка? Или может  вообще не то делаю? голова уже кругом идет...
*

Gruz

  • Moderator
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
А попробуй с кавычками:
Код
product_sku^product_type_name^width
"65453"^"Поиск шин по типоразмеру"^145

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

Тимур

  • Захожу иногда
  • 52
  • 1 / 0
Спасибо большое!Все получилось! и правда, все дело было в первой букве W в слове Width. Так что регистр учитывается.
*

Freelancer

  • Новичок
  • 6
  • 0 / 0
Знатоки OpenOffice, помогите пожалуйста.
1.Хочу немного оптимизировать процесс добавления данных в список. У меня совпадают названия больших картинок и миниатюр. Хочу чтоб при добавлении в столбец с картинками значения(300.jpg) в столбец с миниатюрами автоматом добавлялось resized/300.jpg. Пробовал через формулы, что-то не получается. Формула вида ="resized/"+H2(координаты ячейки картинки) вписывает в ячейку с миниатюрой #ЗНАЧЕНИЕ. Если =X="resized/":X+H2, тоже самое. Может это значение нужно как-то вывести? Подходящего оператора в мастере я не нашёл. Извините, если делаю очевидную ошибку, в Excel и Calc не работал никогда.
2. При переносе строки в описании товара оставшийся текст переносится в ячейку ниже. Это можно пофиксить? Можно ли форматировать текст в описании, а то он после импорта на сайте выглядит как фигня, простите за выражение. Если его потом форматировать вручную, смысл загрузки через таблицу вообще исчезает.
3. Стоит ли делать отдельный файл импорта категорий? Им так нужный id можно присвоить, а это плюс, порядку больше. Или не париться? Что посоветуете?
*

Gruz

  • Moderator
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
1. =CONCATENATE("resized/",H2)
Или берёшь экзелевский файл с формулами и открываешь в ОО - увидишь как организовано.
2. На ячейке кнопка F2, после чего вставляешь.
Моя формула, которая заменяет перенос строки на <p>
Код
=IF(ISBLANK($Source.A2),"",SUBSTITUTE(CONCATENATE("<p>",SUBSTITUTE(REPLACE($Source.A2,LEN($Source.A2),1,""),$Constants.$B$1,CONCATENATE("</p>",$Constants.$B$1,"<p>")),"</p>"),"<p></p>",""))
Где $Source.A2 - лист и ячейка, в которой храниться оригинал текста с переносами
В $Constants.$B$1 храниться перенос строки. Теоретически должно было бы сработать \n, то не вышло. Потому я в ту ячейку копи-пейстом вставил один перенос из  $Source.A2.
3. Не стОит.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

Freelancer

  • Новичок
  • 6
  • 0 / 0
Спасибо. =CONCATENATE("resized/";H2) правильно. Я ковырялся с этим оператором, но тоже с синтаксисом напортачил. Плохо, что для простого переноса нужна такая длинная формула. Для удаления переносов в буфере обмена использую uvFilesCorrector. В общем вопрос форматирования остаётся открытым.
« Последнее редактирование: 26.12.2010, 21:43:07 от Freelancer »
*

Gruz

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

Freelancer

  • Новичок
  • 6
  • 0 / 0
Да вопрос переноса не так уж и важен. Я использую uvFC чтобы в нижнюю ячейку текст не попадал. Больше интересует выделение текста жирным, выравнивание и списки. Не знаете, как их сделать?
*

Gruz

  • Moderator
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
99% что средствами OOCalc никак. Я облазил весь Google и не нашёл формулы, которая бы видела форматирование текста. Нет ничего в описаниях регулярных выражений для OOcalc. Я не вижу по чему искать, чтобы организовать автозамену.

Делай импорт раз, описания правь руками, а далее импортируй без описаний, чтобы отредактированные не затирались.

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

Freelancer

  • Новичок
  • 6
  • 0 / 0
Спасибо. Вот только что столкнулся: После импорта длинное название товара обрезалось на 1 символ. В настройках VM ограничения на кол-во символов в названии вроде нет. Кодировка файла utf-8, разделитель текста "( русская Э с shift в en раскладке). Может ставить "( shift+2 в русской)?
*

Gruz

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

Freelancer

  • Новичок
  • 6
  • 0 / 0
Нет, только самый длинный. Ограничение фиксированное походу: 64 символа(Увлажняющий тональный крем для сухой, нормальной и смешанной кожи). Обрезается после "ж". Попробовал товар вручную добавить, тоже обрезает.
« Последнее редактирование: 27.12.2010, 03:52:06 от Freelancer »
*

Gruz

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

Freelancer

  • Новичок
  • 6
  • 0 / 0
Ну или сам руками в БД исправь размер поля, или в том же CSVI в одном из пунктов его меню есть возможность расширить это поле.
Всё, проблема решена. Там написано, что по умолчанию всего 50 символов отведено, так что будьте бдительны, товарищи.:)
P.S. Спасибо
*

EvgeniyAL

  • Захожу иногда
  • 191
  • 6 / 0
а можно как-то свойства товара импортировать?
например нужны разыне вкусы для товара

Присоединяюсь. Вот та же самая фигня. Как сделать импорт с позициями.

Если правильно понял, product_parent_sku содержит артикул родителя
В подчиненный товар, в этот столбец записал артикул родителя, но безуспешно(((

Уже замучился, ведь истина где то рядом
*

Gruz

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

EvgeniyAL

  • Захожу иногда
  • 191
  • 6 / 0
То есть при импорте товаров в колонке указываешь существующий артикул товара родителя,  а он не добавляется?
Никогда не пользовался дочерними товарами, но если так сформулирована проблема, то единственная мысль, что это баг в компоненте и он почему-то игнорирует этот столбец.

Да, именно так.

Выглядит это придлизительно следующим образом:

product_sku   product_parent_sku
art1                                               (товар родитель)
art2                    art1                     (подчиненный товар)
art3                    art1                     (подчиненный товар)
art4                    art1                     (подчиненный товар)
*

Gruz

  • Moderator
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Не могу помочь, ибо именно такими не занимался.

Возможно здесь есть ответ:
http://www.csvimproved.com/csvi-virtuemart-documentation/available-fields/productparentsku.html
http://www.csvimproved.com/csvi-virtuemart-documentation/tutorials/child-products.html

Вчастности:
Цитировать
The product parent sku is needed to identify the parent of child products. Important to know is that the category_path field MUST be empty otherwise the product will be treated as a parent product instead of a child product.
Цитировать
To upload child products the following rules need to be met:

   1.      category_path must be empty
   2.      product_parent_sku must contain the sku of the parent item
   3. The parent product must appear before the child products in the import file
   4. attributes must be filled for the parent product and empty for the child products
   5. attribute_values must be filled for the child products and empty for the parent product

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

EvgeniyAL

  • Захожу иногда
  • 191
  • 6 / 0
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

1C УТ 8.x &lt;-&gt; VirtueMart по протоколу CommerceML

Автор Centoff

Ответов: 1315
Просмотров: 215179
Последний ответ 27.10.2020, 15:32:10
от Leo1986
Импорт из CSV товаров с типами и свойствами из

Автор Gruz

Ответов: 499
Просмотров: 151048
Последний ответ 23.02.2017, 15:15:42
от orchanin
Как импортировать файл XML в Joomla VirtueMart?

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

Ответов: 2
Просмотров: 5186
Последний ответ 14.07.2016, 18:40:24
от Berzerker
импорт товаров в YML Яндекс маркет

Автор zmeyx

Ответов: 5
Просмотров: 11481
Последний ответ 14.07.2016, 18:34:28
от Berzerker
Скрипт экспорта товаров в Яндекс маркет (yml)

Автор gaalferov

Ответов: 12
Просмотров: 11796
Последний ответ 08.06.2016, 14:02:27
от DimaXP