hary
в вашем 2м пункте - почему папка лежать должна в систем - если плагин контент - это просто вы ошиблись?
hary
mytagsplugin.xml манифест можно обзывать в нижнем - а уже src/Extension/myTagsPlugin.php в верхнем - так?
hary
и назване класса в нем тоже также
Artem
mytagsplugin.xml манифест можно обзывать в нижнем - а уже src/Extension/myTagsPlugin.php в верхнем - так?
сам файл манифеста и папка в которой лежит манифест принято называть в нижнем регистре
Artem
а PascalCase применять уже к названиям файлов папок и классов внутри папки src, т.к. по соглашению именно там начинает действовать PSR-4
Artem
а PascalCase применять уже к названиям файлов папок и классов внутри папки src, т.к. по соглашению именно там начинает действовать PSR-4
Точнее PascalCase не имеет никакогоотношения к самому PSR, но так повелось и так удобнее читать код потом
Artem
сразу видно, что это класс и чтто он делает
hary
provider.php defined('_JEXEC') || die; use Joomla\CMS\Extension\PluginInterface; use Joomla\CMS\Plugin\PluginHelper; use Joomla\DI\Container; use Joomla\DI\ServiceProviderInterface; use Joomla\Event\DispatcherInterface; use Joomla\Plugin\Content\MytagsPlugin\Extension\MytagsPlugin; return new class implements ServiceProviderInterface { /** * Registers the service provider with a DI container. * * @param Container $container The DI container. * * @return void * * @since 4.0.0 */ public function register(Container $container) { $container->set( PluginInterface::class, function (Container $container) { $subject = $container->get(DispatcherInterface::class); $config = (array) PluginHelper::getPlugin('content', 'mytagsplugin'); return new MyTagsPlugin($subject, $config); } ); } };
hary
use и тут не так?
Artem
обратите внимание на указание namespace в этом файле. Он задан неверно
hary
в админку добавить и записывать то что там будет в свою таблицу, а на фронте вывводить
Artem
use и тут не так?
и use должен соответсвовать тому, что вы написали у себя в классе, когда указывали nmaespace + само название класса
Artem
то бишь в провайдере юзе - вот такое use Joomla\Plugin\Content\MyTagsPlugin;
1 - вы должны зарегистрировать в манифесте пространство имён, связанное с каким-то путём в файловой системе, где загрузчик будет пытаться найти вызываемый класс. По рекомендации джумла это должен быть неймспейс вида Joomla\Plugin\ТИППЛАГИНА\ИМЯПЛАГИНА и указывать он должен на папку src в корне папки с плагином 2 - по PSR-4 вы теперь обязаны всю иерархию папок внутри своей папки src переносить на неймспейсы 1-в-1. Т.е. создав в src папку Extension вы говорите загрузчику, чтобы все классы в пространстве, начинающемся с Joomla\Plugin\ТИППЛАГИНА\ИМЯПЛАГИНА\Extension он искал в папке Extension внутри src плагина. Если вы внутри папки Extension создадите ещё папкуб например Extended, то в ней будут искаться классы с пространством имён Joomla\Plugin\ТИППЛАГИНА\ИМЯПЛАГИНА\Extension\Extended 3 - Так же, по PSR-4, вы обязаны именовать файлы с классами ровно так же, как вы именуете сам класс, а пространство имён должно сопоставляться с путём в файловой системе. Т.е. когда вы создаёте внутри своей папки Extension файл MyTagsPlugin.php, то и класс должен называться MyTagsPlugin. Если вы обзовёте файл mytagsplugin то и класс нужно будет назвать так же - mytagsplugin. Внутри этого файла нужно указать, к какому пространству имён он относится (грубо говоря, написать путь к своей папке, но не в виде путей файловой системы а в виде пространства имён). Таким образом для файла MyTagsPlugin.php, который лежит в папке src/Extension неймспейс будет Joomla\Plugin\ТИППЛАГИНА\ИМЯПЛАГИНА\Extension 4 - для того, чтобы обратиться к классу в другом файле, вы должны указать, из какого пространства имён и какой файл грузить. Если мы указали в файле MyTagsPlugin.php namespace Joomla\Plugin\ТИППЛАГИНА\ИМЯПЛАГИНА\Extension, то use должен включать в себя этот неймспей, указанный в файле + название класса. Для конкретного случая - э тобудет выглядеть use Joomla\Plugin\ТИППЛАГИНА\ИМЯПЛАГИНА\Extension\MyTagsPlugin
Artem
1 - вы должны зарегистрировать в манифесте пространство имён, связанное с каким-то путём в файловой системе, где загрузчик будет пытаться найти вызываемый класс. По рекомендации джумла это должен быть неймспейс вида Joomla\Plugin\ТИППЛАГИНА\ИМЯПЛАГИНА и указывать он должен на папку src в корне папки с плагином 2 - по PSR-4 вы теперь обязаны всю иерархию папок внутри своей папки src переносить на неймспейсы 1-в-1. Т.е. создав в src папку Extension вы говорите загрузчику, чтобы все классы в пространстве, начинающемся с Joomla\Plugin\ТИППЛАГИНА\ИМЯПЛАГИНА\Extension он искал в папке Extension внутри src плагина. Если вы внутри папки Extension создадите ещё папкуб например Extended, то в ней будут искаться классы с пространством имён Joomla\Plugin\ТИППЛАГИНА\ИМЯПЛАГИНА\Extension\Extended 3 - Так же, по PSR-4, вы обязаны именовать файлы с классами ровно так же, как вы именуете сам класс, а пространство имён должно сопоставляться с путём в файловой системе. Т.е. когда вы создаёте внутри своей папки Extension файл MyTagsPlugin.php, то и класс должен называться MyTagsPlugin. Если вы обзовёте файл mytagsplugin то и класс нужно будет назвать так же - mytagsplugin. Внутри этого файла нужно указать, к какому пространству имён он относится (грубо говоря, написать путь к своей папке, но не в виде путей файловой системы а в виде пространства имён). Таким образом для файла MyTagsPlugin.php, который лежит в папке src/Extension неймспейс будет Joomla\Plugin\ТИППЛАГИНА\ИМЯПЛАГИНА\Extension 4 - для того, чтобы обратиться к классу в другом файле, вы должны указать, из какого пространства имён и какой файл грузить. Если мы указали в файле MyTagsPlugin.php namespace Joomla\Plugin\ТИППЛАГИНА\ИМЯПЛАГИНА\Extension, то use должен включать в себя этот неймспей, указанный в файле + название класса. Для конкретного случая - э тобудет выглядеть use Joomla\Plugin\ТИППЛАГИНА\ИМЯПЛАГИНА\Extension\MyTagsPlugin
@haryseldonc надеюсь так понятнее?
hary
Выше Сергей мне на гите скинул его плагин. Я просто провайдер скопировал себе оттуда - и поменял в нем название на свое, точно так же для файла в папке src\Extensions
hary
по крайней мере пропали ошибки и когда заходишь в админке в этот плагин - показывает мои поля, определенные в манифесте. . дальше буду заставлять вывести их в компоненте тега
hary
правильно надеетесь - я тоже так хочу. не все ж просто фронтендидь. надо и что то посложнее осваивать
hary
Кстати почему то плагин Сергея то у меня установился - но в списке плагинов я его найти не могу. У меня какойто не правильный архив чтоли7
Artem
Вот этот
вот по такому названию не ищет? System - WT Custom menu item banner
hary
так даже я фильтрую списко - показывать только систем - и порядок по айди - чтоб последние сверху - и его там нет
hary
но пишет что успешно установлен.
hary
Быть может нужно другой какой то архив качать7
Sergey
:)
Sergey
Должно работать
Sergey
hary
точно также ищу - и не нахожу
Sergey
точно также ищу - и не нахожу
Не 2 админки разных открыто? А то бывает, ставишь на один сайт, а ищешь на другом
hary
hary
вот типа поставился тут
hary
:0 на одном появилось
Artem
Eugene
@sergeytolkachyov мысль касательно кнопки телеграм: на taplink сделать страничку и там ссылки на все телеграм каналы. как идея 🙂
Sergey
Кто-нибудь загонялся по адаптивной графике? Чтоб прям с sizes и srcset и несколько source?
hary
А на втором собственно и нет - даже накатил заново и в админке не вижу плагина
hary
ну почему то на джумле 5 с этого же архива тянул ставил - и там есть
hary
y/plugins/system/wt_custom_menu_item_banner/
hary
вот - на фтп как лежит
hary
Дискавер открыл поискать - а он там - нажал установить - появилось. он ж сразу должен был ставиться
Vladimir
ну видишь - все таки он помог
Sergey
Дискавер открыл поискать - а он там - нажал установить - появилось. он ж сразу должен был ставиться
Странно. Я установку и обновление проверяю по несколько раз точно. На своих проектах использую. Все ровно встаёт
Артем
Всем привет Кто может помочь советом по wordpress Мне нужно в карточке товара вывести HTML блок с определенным ID
Vladimir
или настолько не любят вордпресс что проще спросить в чате Joomla?
Артем
Я не знаю чат вордпресса
hary
Дальше про плагин добавления полей -в классе плагина вот так class MyTagsPlugin extends CMSPlugin { protected $autoloadLanguage = true; public function onContentPrepareForm($form, $data) { $app = Factory::getApplication(); if (!$app->isClient('administrator')) { return; } if ($app->getInput()->get('option') !== 'com_tags.tag') { return; } if (!($form instanceof Form)) { return; } Form::addFormPath(JPATH_SITE . '/plugins/system/MyTagsPlugin/src/Subform'); $form->loadFile('fields', false); $lang = Factory::getApplication()->getLanguage(); $extension = 'plg_system_MyTagsPlugin'; $base_dir = JPATH_ADMINISTRATOR; $reload = true; $lang->load($extension, $base_dir, $lang->getTag(), $reload); return true; }
RINAT
Я не знаю чат вордпресса
Поиск по телеграмму поможет😊
Артем
Я тоже люблю joomla просто появилась такая задачка вроде простая но не могу въехать
hary
com_tags.tag - так ли я пишу? по идее должно появиться когда в админке открываешь редактирование тега- не?
Vladimir
Я не знаю чат вордпресса
вот тута набираем wordpress
hary
да,я уже взял снова ваш файл и переписал ваше название под свое... поменял меню на теги - и наконец появились в тегах поля у меня
hary
только надо свои переписать. Акак они сохраняются - можно чтоб в свою таблицу писало? как у вас изначально это сделано?
Sergey
hary
или не мучаться- а писать в параметры тега по аналогии как у вас с меню?
hary
ибо по сути у меня те же почти поля - текстовое поле для ссылки
hary
дописал в манифесте ссылку на папку с языками - она в файле плагина, но переменные почему то не переводятся а вот так PLG_WT_CUSTOM_MENU_ITEM_BANNER_FIELDSET_LABEL
hary
или нужно ложить ини файлы в корень как всегда?
Sergey
или нужно ложить ини файлы в корень как всегда?
Языковые файлы для плагина нужно класть в languages админки
hary
да, помогло..
hary
а как можно использовать эти поля на странице, например через конструктор прошки - сработает?
Sergey
Я в этом плагине беру параметры из текущего пункта меню и с ними работаю.
hary
hary
а как можно сделать так чтобы загонять их и сюда в том числе?
hary
добавлять в начале еще use YOOtheme\Application;
Sergey
а как можно сделать так чтобы загонять их и сюда в том числе?
А это нужно ковырять ютим и смотреть как он работает. @septdir
hary
Ох как все....