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

radius

  • Давно я тут
  • 550
  • 45 / 0
Итак решение найдено. Если вы импортируете данные в кодировке UTF-8, то в файл administrator/components/com_csvimproved/helpers/csvi_class_file.php вставляем перед строкой 376 строку:

setlocale(LC_CTYPE, "ru_RU.UTF-8");

(для версии CSVI 1.8.1)
И больше никаких кавычек :)
*

Gruz

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

ppg

  • Новичок
  • 8
  • 0 / 0
Подскажите, как закачать прайс более 20000 позиций. У меня, блин, более 500 не закачивает. :(
*

myasnik1985

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Цитировать
Если я хочу, чтобы после импорта были опубликованы только те товары, которые есть в прайсе, то перед операциями я в PHPMyAdmin даю команду
Код:

UPDATE `jos_vm_product` SET product_publish = "N"

А после даю команды
Код:

UPDATE `jos_vm_category` SET `category_browsepage`="browse_2";
UPDATE `jos_vm_category` SET `category_flypage` = "flypage.tpl";

так как импортер у новых категорий прописывает шаблоны категорий по умолчанию.


А если я хочу чтобы N прописывалась у определеной категории товаров, какую команду мне давать в phpmyadmin?
*

Gruz

  • Moderator
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Код
UPDATE `jos_vm_product` as prod 
LEFT JOIN `jos_vm_product_category_xref` AS cats
ON prod.product_id = cats.product_id
SET product_publish = "N"
WHERE cats.category_id = 794

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

avda

  • Осваиваюсь на форуме
  • 24
  • 1 / 0
как  правилно  установить компонент com_csv_improved_0.9   для Версия Joomla 1.5.14  и VirtueMart 1.1.3
*

sokoll

  • Захожу иногда
  • 94
  • 0 / 0
Спасибо Gruz за FAQ. +1 Но есть вопрос.
Есть дока описания полей? потомучто по твоей аналогии у меня данные совсем в другие места вставляюся. а поиск не дал результатов.
У меня есть прайс, в exel, но к каким полям присваивать значения туплю, цена понятна а вот остальное..
кину пример
Код
Номенклатура	                           Остаток	    Оригинальный номер	                розница	опт 5%

ДВС
    Бачек
        бачек ГУР
            Audi
                бачек ГУР Audi A6 б/у    1,000            4B0955453A                            500

*

cherry

  • Осваиваюсь на форуме
  • 44
  • 2 / 0
Установила CSVI 1.8.1 (пробывала 1.6 таже проблема)
В ответ получила, что компонент успешно установился, а ниже вот такое сообщение

Import/Export component for VirtueMart
PROBLEM_READING_TABLE_CSVI_TEMPLATESPROBLEM_READING_TABLE_CSVI_LOGS


Затем иду по ссылке

administrator/index.php?option=com_csvimproved&task=availablefields&controller=availablefields (Доступные поля)

и там высвечиваются ворнинги:


Warning: Invalid argument supplied for foreach() in C:\Apache\htdocs\joom159\administrator\components\com_csvimproved\models\templates.php on line 512

Warning: array_unshift() [function.array-unshift]: The first argument should be an array in C:\Apache\htdocs\joom159\administrator\components\com_csvimproved\views\availablefields\view.html.php on line 54

Warning: Invalid argument supplied for foreach() in C:\Apache\htdocs\joom159\libraries\joomla\html\html\select.php on line 68


там же выпадающий список тоже пусть возле кнопки Пуск.


Также захожу в журнал, получаю ошибку:
       * Не удалось загрузить журнал :: Table 'joom159.jos_csvi_logs' doesn't exist SQL=SELECT COUNT(id) AS total FROM jos_csvi_logs
        * Не удалось загрузить журнал


Посмотрела, а в БД нет ни одной таблицы jos_csvi_*

Подскажите, пожалуйста, из-за чего могут быть эти проблемы, и почему при установке компонента таблицы не создаются?

Joomla1.5.9 VM 1.1.3 PHP5
« Последнее редактирование: 08.10.2009, 17:22:48 от cherry »
*

Albert_gk

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Поставил CSV 1.7 - вроде нормально всё поставилось но при любой кнопке в меню CSV Improved выдаёт пустую страницу с ошибкой:
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/.../public_html/.../administrator/components/com_csvimproved/helpers/subscription_check.php on line 4

Какая версия PHP нужна? На серваке выставлена по умолчанию 4.3.9 но можно выбрать максимум 5.3.*
Вопрос - если я выберу 5.3 то ничего не слетит? Сайты переустонавливать не потребуется?
« Последнее редактирование: 09.10.2009, 01:00:22 от Albert_gk »
*

Albert_gk

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
В итоге - выставил 5.3 - весь сайт покрылся необработанным кодом - на самом деле местами. Тогда поставил PHP 5.2 - и всё стало как прежде только CSV заработал!
*

cherry

  • Осваиваюсь на форуме
  • 44
  • 2 / 0
ответ на свой вопрос нашла на оф.сайте

Цитировать
There are a few requirements your system needs to meet to be able to use CSV Improved. The requirements are:

    *
      PHP version 5.2 or higher
    *
      MySQL version 5 or higher
    *
      Apache 1.3 or higher
    *
      Joomla 1.5.14
    *
      VirtueMart 1.0.x or VirtueMart 1.1.x
    *
      GD 2.0 library if you want to automatic resize thumbnails
    * Magic Quotes turned off

секвил у меня стоит древней версии..

« Последнее редактирование: 10.10.2009, 00:20:08 от cherry »
*

cherry

  • Осваиваюсь на форуме
  • 44
  • 2 / 0
нашла!   в настройках шаблона можно увеличить время выполнения скрипта в секундах!  ставлю 300 сек это 5 мин

он всеравно через 30 сек.. вываливает невозможно отобразить страницу

и стал загружать 540 записей из 10 тыс. и все (на 200 записей больше)

кто-нибудь загружал больлше тысячи записей импортом??
« Последнее редактирование: 14.10.2009, 14:25:54 от cherry »
*

nullomg

  • Новичок
  • 9
  • 2 / 0
кто-нибудь загружал больлше тысячи записей импортом??

сделал импорт 10к записей (Импорт: 10807)
но что-то очень уж долго, около получаса) файл 700кб

импортировал:
category_id^product_id^product_name^product_sku^product_price^product_currency^product_in_stock^product_unit

с таким временем выполнения лучше свой напишу))
« Последнее редактирование: 15.10.2009, 00:03:06 от nullomg »
*

sokoll

  • Захожу иногда
  • 94
  • 0 / 0
Знатоки, подскажите. Покланюсь Вам в ноги
Кто-нибуть пробовал имопртировать типы товара с параметрами и характеристиками?
Пока не пойму какие поля выбирать. Если есть успешные примеры отпишитесь.

И тут же второй вопрос.
Я так понял что если захотели обновить позиции на сайте, то надо заходить в MySQL и скриптом очищать таблицы, а потом заливать новые значения.
А есть ли вариант проще?
Чтобы менеджер, которому далеки позания php,  простым нажатием заливал новые данные на сайт.
Т.е. нужна автоматизация импорта, экспорт не обязателен
Заранее спасибо.
*

cherry

  • Осваиваюсь на форуме
  • 44
  • 2 / 0
вообщем у меня проблема была в том что у моего хостинга на моем тарифе были вот такие
Ограничения на системные ресурсы
Цитировать
    *

      некритическая нагрузка (нагрузка на процессор > 10%)

            Если процесс нагружает процессор в течение длительного периода более чем на 10% - процесс корректно завершается. Этот период для серверов виртуального хостинга составляет 20 секунд, для VIP-серверов этот период составляет 30 секунд.

    *

      критическая нагрузка (нагрузка на процессор > 60%)

            Если процесс нагружает процессор в течение длительного периода более чем на 60% - процесс корректно завершается. Этот период для серверов виртуального хостинга составляет 10 секунд.

    *

      RAM (оперативная память сервера)

            Лимит для виртуального хостинга составляет 32 Мб на процесс.

    *

      Ограничение на число запущенных процессов от имени пользователя

          o 32 процесса на тарифах виртуального хостинга
          o 128 процессов на тарифах VIP-хостинга

И меня выбрасывало через 10 сек начала импорта, т.е. срабатывало ограничение критическая нагрузка (нагрузка на процессор > 60%)

Так что никакие дописывания .htaccess или установки в коде лимитов времени или памяти, или через админку - тут не помогают!

Пришлось заливать товар кусочками по 400 товаров файле..
*

nullomg

  • Новичок
  • 9
  • 2 / 0
2cherry , т.е. импорт 400 позиций товара занимает менее 10 сек? какие поля импортируете? хотелось бы уточнить этот вопрос, т.к. файл с 1000 позициями заливается окло 3 - 4х минут.
*

cherry

  • Осваиваюсь на форуме
  • 44
  • 2 / 0
вот моя шапка

Код
~product_sku~^~product_name~^~category_path~^~product_price~^~product_special~^~product_publish~^~product_currency~
*

nullomg

  • Новичок
  • 9
  • 2 / 0
вот моя шапка

Код
~product_sku~^~product_name~^~category_path~^~product_price~^~product_special~^~product_publish~^~product_currency~
очень хорошо, а не затруднит назвать хоть примерное время обработки?)
*

MOHCTPUK

  • Захожу иногда
  • 50
  • 5 / 6
  • d[-_-]b
уменя в базе кирилица не отабражаетса, в базе     Ö вещи.
пробовал прописать
Код
setlocale(LC_CTYPE, "ru_RU.UTF-8");
на 376 строке  (рядом с /* Set the delimiter */)
не помогло, потом взял код в кавычках

Код
"product_sku"^"product_name"^"category_path"^"product_price"^"quantity_options"
50003^"АВТОРЕВЮ"^1^8^"drop,1,6,1"
всёравно выводит Ö

*

nullomg

  • Новичок
  • 9
  • 2 / 0
*

pikachu

  • Осваиваюсь на форуме
  • 46
  • 7 / 0
Joomla 1.5.14, VirtueMart 1.1.4, CSVI 1.8

Установлено всё и работает в штатном режиме (ошибок не всплывало). В VirtueMart созданы все нужные категории и в них еще нет товаров.

Имеется файл .csv (все разграничения и разделители выставлены), в нем 4 столбца: id товара, наименование товара, цена, id категории.

При импорте .csv например с 10 позициями - в превью высвечивается только одна (первая) позиция из .csv. Причем все поля отображаются правильно. После нажатия Импорт (в поле превью) процесс якобы удачно завершен, но в VirtueMart ни одного товара нет.

В какую сторону можно покопать? Спасибо.
*

nullomg

  • Новичок
  • 9
  • 2 / 0

В какую сторону можно покопать? Спасибо.

может быть связанно с тем, если напрямую импортить id товара as product_id,  product_sku == id товара
*

Erepb

  • Осваиваюсь на форуме
  • 44
  • 4 / 0
У меня импорт 12000 товаров происходит примерно за 50 минут. Столбцов - 13, магазин на локалхосте. Есть мысль, что, если запретить скрипту вываливать все товары на страницу после завершения обработки - это время резко сократится. Пока ничего не ковырял, поэтому, подскажите, кто знает, как это сделать.
Сама схема заливки с такими временными затратами такова: рабочий магазин и магазин на локалке идентичны. Делаю заливку товаров у себя, потом заливаю дамп базы на рабочий. Не совсем грамотно, поэтому подумываю о VDS-хостинге.
*

nullomg

  • Новичок
  • 9
  • 2 / 0
Для теста без использования csvimproved самописным скриптом 11000 товаров заливаются в пустую базу за полторы минуты )) я плакал) Но только в пустую базу) csvimproved делает очень много проверок на существование записи.
*

Erepb

  • Осваиваюсь на форуме
  • 44
  • 4 / 0
Эх, я б рад был прибить базу и залить по-новой... Только с CSV загружаются не все поля, к сожалению. Например, полное описание товара остается на сайте.
*

artruslan

  • Осваиваюсь на форуме
  • 12
  • 2 / 4
Народ выложите кто-нибудь работающий файл csv, чтобы проверить загрузку через csv.
Мне нужно завести в магазин больше 1000 товаров никак не могу это реализовать. Помогите разобраться! Уже больше недели мучаюсь, а результат ни в какую!
Вообще как можно создать файл csv? Как в нем создавать товары? Что писать? Как картинки, цены и все остальные данные о товаре прописываются?
Направте как правильно это дело сделать!
*

Erepb

  • Осваиваюсь на форуме
  • 44
  • 4 / 0
Что-то мне подсказывает, неплохо бы Вам немножко рассказать о своей системе - какая версия CMS, магазина и csv improved (если он вообще есть).
*

nullomg

  • Новичок
  • 9
  • 2 / 0
Эх, я б рад был прибить базу и залить по-новой... Только с CSV загружаются не все поля, к сожалению. Например, полное описание товара остается на сайте.
С csv можно подгрузить любое поле в vm, даже если его нет по умолчанию в available fields, туда его можно добавить принудительно, как простой вариант через phpmyadmin.
*

Erepb

  • Осваиваюсь на форуме
  • 44
  • 4 / 0
Цитировать
С csv можно подгрузить любое поле в vm

Да, это понятно, просто пока из адинэски выгружается минимум - вот и приходится какие-то поля оставлять нетронутыми.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

1C УТ 8.x <-> VirtueMart по протоколу CommerceML

Автор Centoff

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

Автор Gruz

Ответов: 499
Просмотров: 151044
Последний ответ 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