WebTolkRu
99 subscribers
618 photos
72 videos
2 files
643 links
Joomla-разработчик. Контрибьютер ядра Joomla. https://web-tolk.ru. Разработка Joomla на заказ. Также пишу в @JoomlaFeed.
@sergeytolkachyov Хабр: https://habr.com/ru/users/sergeytolkachyov/posts/
Download Telegram
Forwarded from Joomla Feed (Sergey Tolkachyov)
Работа с Joomla в PHPStorm. Шаблоны (boilerplate) для быстрого создания модулей, плагинов Joomla в IDE.
PHPStorm - среда разработки для PHP-программистов, работающих с кодом как на чистом PHP, так и с такими PHP-фреймворками как Symfony, Laravel, Yii и другими. Эти фреймворки чаще всего используются на "серьёзных" "взрослых" проектах с большой посещаемостью, нагрузкой на сервер, аудиториями с миллионами посетителей. Однако, у многих до сих пор вызывает удивление то, что Joomla - это тоже PHP-фреймворк. Долгое время это был параллельный CMS проект, а начиная с Joomla 4 фреймворк вошёл в состав ядра Joomla CMS. Таким образом у вас под капотом CMS полноценный PHP фреймворк, который в умелых руках может стать мощным проектом.

PHPStorm с 2016 года имеет отличную поддержку Joomla, подсказывает методы работы ядра, аргументы функций, навигация по коду и всё-всё, что обычно является атрибутом "серьёзных" движков.

Бойлерплейты Joomla расширений для PHPStorm
Участник нашего сообщества, разработчик Игорь Бердичевский (@septdir) поделился на GitHub своими "плюшками" для работы с Joomla:
- codeStyle - Code formating style
- colors - цветовая схема для PHPStorm
- fileTemplates - шаблоны для расширений Joomla
- options - файл с названиями для шаблонов
- project - шаблон для пустого Joomla-проекта включая задания для сборщика проекта Phing
- templates - Live Templates for files
- watchers - Configuration for File Watcher
Этот инструментарий позволяет разработчику в PHPStorm быстро создать каркас нового модуля, плагина, компонента и не тратить время на ручное создание структуры файлов и папок.

Репозиторий JetBrains-PhpStorm на GitHub

Также полезные ссылки:
- официальная документация PHPStorm по работе с Joomla
- Настройка IDE (PhpStorm) для работы с Joomla - большая подробная статья, инструкция как всё правильно настроить и работать. Автор - участник нашего сообщества Дмитрий Рекун (@drekun)

#joomla #php #phpstorm #ide #cms #framework #boilerplate #github #laravel #symfony #yii
👍2
👩‍💻 Совет по Joomla: вардампер от Symfony
В состав Joomla Framework, вошедшего под капот Joomla 4+, входят некоторые компоненты Symfony, среди которых и VarDumper.

Соответственно в Joomla 4 / Joomla 5 можно использовать вместо var_dump() следующее:
use Webtolk\Cdekapi\Cdek;

$cdek = new Cdek();
$cities = $cdek->getLocationCities(['page'=>'1']);
dump($cities);
dd($cities);

dump() может показывать структуру массива/объекта сворачиваемыми уровнями.
dd() - это dump & die. После дампа дальнейшее выполнение кода остановится с помощью exit().

#joomla #development #php #разработка #symfony #cookbook
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🙏1
Важные моменты!
- До Joomla 4.2.7 по сути тег <namespace> из XML манифеста не работал. Поэтому нужно было в комплект библиотеки добавлять системный плагин, который бы регистрировал неймспейс на событии (Event Dispatcher) onAfterInitialise c помощью JLoader. Начиная с Joomla 4.2.7 его починили и можно обходиться без плагина.
- Пока что обновление библиотеки = переустановке. То есть расширение удаляется и устанавливается. Такое решение было принято где-то в недрах версий Joomla 3.x. Почему? - скрыто под горами PR. Нужно искать. Почему это важно? Потому что при установке любого расширения создается запись в "реестре" расширений - в базе данных в таблице #__extensions. В этой таблице есть 2 столбца типа TEXT - params и custom_data. А это, согласитесь, немалый объём данных. Если вы храните какие-то параметры библиотеки в базе данных с помощью Joomla\CMS\Helper\LibraryHelper, то нужно учитывать это поведение инсталлера и при обновлении библиотеки предварительно сохранять, а потом добавлять обратно сохранённые параметры в installer script расширения.
// фрагмент метода preflight() 

/**
*
* Joomla при обновлении расширений типа library по факту удаляет их (вместе с данными в базе),
* а потом устанавливает заново.
* Дабы избежать потерь данных библиотеки из базы пишем этот костыль.
*
* @see https://github.com/joomla/joomla-cms/issues/39360
*
*/

if ($type == 'update')
{
$lib_params = LibraryHelper::getParams('Webtolk/Amocrm');
$jconfig = $this->app->getConfig();
$options = [
'defaultgroup' => 'wt_amo_crm_temp',
'caching' => true,
'cachebase' => $jconfig->get('cache_path'),
'storage' => $jconfig->get('cache_handler'),
];
$cache = Cache::getInstance('', $options);
$cache->store($lib_params, 'wt_amo_crm_temp');

}

return true;

}

А в методе postflight() соответственно помещаем спасённые параметры обратно с помощью LibraryHelper::saveParams('Webtolk/Amocrm', $lib_params);.
- Чтобы библиотека работала - она должна быть включена в менеджере расширений (Меню - Система - Управление - Расширения).
- Нередко для работы библиотеки нужны некие параметры (API ключи, токены и прочее), что должно указываться людьми в админке Joomla. Для этих целей удобно писать плагин (своего интерфейса для настройки параметров расширение типа library не имеет). Либо системный, либо своей кастомной группы - не важно. Внутри своей библиотеки получать параметры плагина довольно быстро можно так:
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\Registry\Registry;

if (PluginHelper::isEnabled('system', 'wt_amocrm'))
{
$plugin = PluginHelper::getPlugin('system', 'wt_amocrm');
$params = \json_decode($plugin->params);
$param = $params->param;
// ИЛИ можно использовать Joomla\Registry\Registry
$params = new Registry($plugin->params);
$param = $params->get('param', 'defatul value if empty');
}


#php #разработка #joomla #symfony