Ошибка. Новая структура плагинов и JoomShopping 5.3.0 (Joomla 4.4.2)

23.01.2024 12:41
#1
Unkewer
Joomshopping forum user no avatar
Name: Vitalia
14.07.2016
Сообщения: 7
Quote
Ошибка. Новая структура плагинов и JoomShopping 5.3.0 (Joomla 4.4.2)

Создан плагин(структура с provider и src через namespace) для добавления пункта меню в JoomShopping 5.

Файл: имеет путь /plugins/jshoppingmenu/addnewmenu/src/Extension/Addnewmenu.php
Сам файл:
<?php
namespace Joomla\Plugin\Jshoppingmenu\Addnewmenu\Extension;

// phpcs:disable PSR1.Files.SideEffects
defined('_JEXEC') or die;

// phpcs:enable PSR1.Files.SideEffects
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\CMS\Language\Text;
use Joomla\Event\DispatcherInterface;

/**
* Plugin class for redirect handling.
*
* @since 1.6
*/
final class Addnewmenu extends CMSPlugin
{
/**
* Affects constructor behavior. If true, language files will be loaded automatically.
*
* @var boolean
* @since 3.1
*/
protected $autoloadLanguage = true;

/**
* Constructor
*
* @param DispatcherInterface &$subject The object to observe
* @param array $config An optional associative array of configuration settings.
* Recognized key values include 'name', 'group', 'params', 'language'
* (this list is not meant to be comprehensive).
*
* @since 1.5
*/
public function __construct(&$subject, $config)
{
parent::__construct($subject, $config);
}

function onBeforeAdminOptionPanelMenuDisplay(&$menu)
{
$menu['jsbio'] = [
Text::_('PLG_ADDNEWMENU_MENU_TITLE'),
'index.php?option=com_jshopping&controller=addnewmenu',
'rcmjsseo/icon.jpg',
1
];
}

public function onBeforeAdminOptionPanelIcoDisplay(&$menu)
{
$menu['jsbio'] = [
Text::_('PLG_ADDNEWMENU_MENU_TITLE'),
'index.php?option=com_jshopping&controller=addnewmenu',
'rcmjsseo/icon.jpg',
1
];
}
}

Второй файл имеет путь plugins/jshoppingmenu/addnewmenu/services/provider.php
<?php

\defined('_JEXEC') or die;

// phpcs:enable PSR1.Files.SideEffects
use Joomla\CMS\Extension\PluginInterface;
use Joomla\CMS\Factory;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\DI\Container;
use Joomla\DI\ServiceProviderInterface;
use Joomla\Event\DispatcherInterface;

//Внимание указна SYSTEM хотя по факту в другой группе
use Joomla\Plugin\Jshoppingmenu\Addnewmenu\Extension\Addnewmenu;

/**
* service provider.
*
* @since 1.0.0
*/
return new class () implements ServiceProviderInterface {
/**
* Registers the service provider with a DI container.
*
* @param Container $container The DI container.
*
* @return void
*
* @since 4.3.0
*/
public function register(Container $container): void
{
$container->set(
PluginInterface::class,
function (Container $container) {
$dispatcher = $container->get(DispatcherInterface::class);
$plugin = new Addnewmenu(
$dispatcher,
(array)PluginHelper::getPlugin('jshoppingmenu', 'addnewmenu')
);
$plugin->setApplication(Factory::getApplication());

return $plugin;
}
);
}
};

xml файл тоже имеет это же пространство.

При попытки включить плагин ошибок не происходит. Но если заходим в JoomShopping то вываливается ошибка. Словно с новой структурой плагинов надо писать код по другому. Предполагаю что это из-за того, что сам класс в src, а JS не может этого понять.

См. скриншот=

Возможно подцепить меню для JoomShopping`а через новую структуру плагинов?
Ошибка. Новая структура плагинов и JoomShopping 5.3.0 (Joomla 4.4.2)


Joomla: 4.4.2
JoomShopping: 5.3.0
PHP: 8.2
 
23.01.2024 14:19
#2
Unkewer
Joomshopping forum user no avatar
Name: Vitalia
14.07.2016
Сообщения: 7
Quote
Aw: Ошибка. Новая структура плагинов и JoomShopping 5.3.0 (Joomla 4.4.2)

Все ошибка исправлена. Тут проблем нету в самом плагине и JS 5.3 работает.

Проблема связана как вычислили с тем что плагин входит в состав Аддона. И возможно аддон хоть и ставит плагин и включает его, но в рамках JS это не работает корректно с новой структурой. Если ставить плагин отдельно, то ошибка исчезает.

Будем искать какие именно данные нужны чтобы прописать в update.php аддона, чтобы "установить" плагин через JS но в Joomla полноценно

 
23.01.2024 14:43
#3
Unkewer
Joomshopping forum user no avatar
Name: Vitalia
14.07.2016
Сообщения: 7
Quote
Aw: Ошибка. Новая структура плагинов и JoomShopping 5.3.0 (Joomla 4.4.2)

Может кому пригодится. При установки плагинов Joomla 4 через установщик JoomShopping.
В файле update.php, при регистрации плагина через ( метод installJoomlaExtension())
$cache = [
"creationDate" => "date",
"author" => "author",
"authorEmail" => "joomla@authorEmail",
"authorUrl" => "https://www.authorUrl.com",
"version" => $version,
"group" => "",
"namespace" => "Joomla\\Plugin\\Jshoppingmenu\\__NameSpace__",
"filename" => "_dir_name_lowregister",
];

Не хватало как раз в файле "namespace" и "filename" если ставить отдельно эти поля создаются.

 
26.01.2024 14:52
#4
sergeytolkachyov
User sergeytolkachyov
Name: Sergey
11.10.2019
Сообщения: 110
Quote
Aw: Ошибка. Новая структура плагинов и JoomShopping 5.3.0 (Joomla 4.4.2)

Посмотрите пример плагина по новой архитектуре https://github.com/WebTolk/WT-Add-products-info-to-Joomla-script-options- а также в личных моих репах - там полно всего для JoomShopping,
Писал большую статью на Хабре о том, как писать плагины по новой архитектуре Joomla 4 / Joomla 5. Она же на моём сайте. Думаю, Вам как разработчику это должно сильно помочь.


Joomla developer. https://web-tolk.ru JoomShopping Bitrix24 integration, custom developing.
 


Copyrights MAXXmarketing GmbH. Alle Rechte vorbehalten
Durch die Nutzung dieser Website stimme ich zu, dass Cookies zur optimalen Gestaltung der Website sowie zur Analyse der Nutzung der Website verwendet werden. Weiterführende Informationen finden Sie hier. OK, einverstanden.