Joomla Feed
598 subscribers
425 photos
10 videos
3 files
1.21K links
Новости о Joomla! и веб-разработке по-русски.
Наш сайт: https://joomlaportal.ru
По вопросам размещения новостей о Joomla @sergeytolkachyov
Download Telegram
Интеграция Joomla 5 и Moodle 4.3. Инструкция по установке и настройке библиотеки WT JMoodle. ВИДЕО.
Видео для разработчиков. На самом деле на начальном этапе больше работы нужно сделать на стороне Moodle, поэтому внутри инструкция по настройке и использованию REST API Moodle.

Смотреть видео на YouTube


О самой библиотеке писали чуть раньше.
Пока ещё сохраняется флёр новогодних каникул и есть немного времени на подобное баловство...

#расширения #moodle #разработка #php
Вышел JoomShoppping 5.5.0
Один из самых популярных компонентов интернет-магазина на Joomla.

Что нового?
- при создании пункта меню выбрать категорию, производителя и т.д. можно из выпадающего списка
- обновлён макет выбора уже загруженного изображения при редактировании товара
- исправлено сохранение характеристик (выбор основной категории товара
при мультикатегорийности сбрасывал значение текстовых характеристик)
- обновление роутера компонента
- новый фильтр в списке пользователей в админке

Поля JForm для разработчиков
Добавлены поля Joomla Form для разработчиков сторонних расширений. Теперь можно не писать свои типы полей Joomla для получения данных JoomShopping, а использовать из ядра компонента. Namespace полей Joomla\Component\Jshopping\Administrator\Field.
Доступны поля:
- список зависимых атрибутов
- список значений для выбранного атрибута
- список категорий
- список характеристик
- список значений для указанной характеристики
- список меток (лейблов) товара
- список статусов заказа
- список производителей
- список вендоров
Теперь в своём модуле или плагине можно выбрать категорию товаров таким образом:
<field type="jshoppingcategories"
name="jshoppingcategories"
label="jshoppingcategories"
addfieldprefix="Joomla\Component\Jshopping\Administrator\Field"/>

Ещё примеры использования здесь.

JoomShopping вышел на GitHub
Долгое время разработчики работали с сообществом только посредством своего форума. На форуме они получали предложения, багрепорты, а изменения производились в закрытом репозитории. Однако, недавно появился ещё репозиторий компонента на GitHub для сторонних контрибьютеров, где есть возможность предложить свой код и он даже может быть принят. Для этого изменение должно быть хорошо описано/задокументировано в ветке на форуме или в самом PR: описана проблема, шаги её воспроизведения. Гарантий того, что ваш PR будет сразу принят нет, но это большой шаг в сторону открытости компонента к изменениям.

Скачать JoomShopping
GitHub JoomShopping

#JoomShopping #php #расширения #интернетмагазин
Работа с 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
👩‍💻 Обновление плагина WT JoomShopping Bitrix24 PRO v.3.1.3
Впервые за 1,5 года вышла новая версия плагина отправки заказов из интернет-магазина JoomShopping в CRM Битрикс24. Плагин передает лиды, сделки, создаёт контакты и реквизиты, повторные сделки. Обеспечивает смену статуса заказа в JoomShopping при изменении стадии сделки в Битрикс 24 (двухсторонняя интеграция).

Также он позволяет очень быстро настроить отправку лидов/сделок в Битрикс 24 из форм обратной связи, реализованных с помощью плагина RadicalForm.

👩‍💻 Список изменений
- Улучшена поддержка Joomla 5. Проведен большой рефакторинг кода, подготавливающий плагин к повышению минимальных системных требований до Joomla 5 и PHP 8.1. Также удалены некоторые устаревшие методы.
- SubscriberInterface. Плагин полностью наследует SubscriberInterface
- Changelog url. Добавлен Changelog url, чтобы вы могли просмотреть список изменений в новой версии перед обновлением непосредственно в админ-панели Joomla.
Дальнейшая разработка планируется только для Joomla 5.

Страница расширения
GitHub плагина
Joomla Extensions Directory

#joomla #php #разработка #битрикс24
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from WebTolkRu (Sergey Tolkachyov)
👩‍💻 Совет по Joomla: использовать HTMLHelper для рендера ссылок, изображений и т.д.
При работе с кодом хорошим тоном разработки считается наглядность кода, которая обеспечивает лёгкость его восприятия. Обычно это называют "чистый, читаемый код". Согласитесь, понимать следующую запись не всегда бывает удобно:
echo '<a href="index.php?option='.$option.'&view='.$view.'&id='.$id.'" target="'.$target.'">'.$link_title.'</a>';

или пример из стандартного шаблона JoomShopping:
<a class="lightbox" id="main_image_full_<?php print $image->image_id?>" href="<?php print $this->image_product_path?>/<?php print $image->image_full;?>" <?php if ($k!=0){?>style="display:none"<?php }?> title="<?php print htmlspecialchars($image->img_title)?>">

Наглядностью и лёгкостью чтения, к сожалению, и не пахнет.

В API Joomla есть довольно богатый инструмент - класс HTMLHelper. В нём довольно много полезных фич, приведу пример для рендера ссылок как самого простого элемента. Метод HTMLHelper::link() принимает 3 аргумента:
- $url - формируем его программно заранее и передаем как параметр
- $text - собственно текст ссылки. Это может быть любое HTML-содержимое: картинка, код и т.д. - как в вёрстке.
- $attribs - самые разные атрибуты ссылки: class, target, onclick, кастомные data-атрибуты и т.д.
Согласитесь, так гораздо нагляднее. И порядок в коде.
use Joomla\CMS\HTML\HTMLHelper;

$url = 'index.php?option=' . $option . '&view=' . $view . '&id=' . $id;
$link_title = HTMLHelper::image('images/headers/raindrops.jpg', 'Alt attrib for image');
$target = '_blank';
$linkAttribs = [
'target' => $target,
'class' => 'btn btn-primary',
'onclick' => 'alert(123);',
'data-link-id' => '4a5d7f6a455sf8',
];

echo HTMLHelper::link($url, $link_title, $linkAttribs);

Частично ознакомиться с методами класса HTMLHelper можно в файле libraries/src/HTML/HTMLHelper.php.

#joomla #php #development #разработка #html
Please open Telegram to view this post
VIEW IN TELEGRAM
Вышел плагин Revars 2.0.0
Revars - это плагин, позволяющий делать замену одного содержимого страницы другим. Чаще всего он используется для создания и работы с собственными переменными вида {VAR_...}. Например создав переменную {VAR_PHONE} вы можете везде на сайте указывать именно её, а сам номер телефона менять только в настройках плагина. {VAR_INN}, {VAR_BRAND_NAME}, {VAR_YANDEX_MAP_SCRIPT} - вариантов для использования переменных множество.
Плагин может учитывать utm-метки и в зависимости от них отображать содержимое страницы, что превращает Joomla в мультилендинг. Также плагин обрабатывает мета-теги: вы можете использовать переменные в тегах title и meta-description страницы.
Языковые переменные Joomla. Плагин может выводить языковые константы Joomla.

👩‍💻 Что нового?
Плагин переписан на архитектуру Joomla 4 / Joomla 5. Это означает, что он без проблем будет работать и на Joomla 6. Также мы помним, что чем больше у вас на сайте плагинов с актуальной архитектурой, тем быстрее работает сама Joomla.
Добавлена поддержка стандартных e-mail шаблонов Joomla 4+. В Joomla 4 / 5 для рассылки уведомлений из компонентов и самой Joomla используются e-mail шаблоны, которые можно редактировать из админки. Теперь в этих шаблонах можно использовать свои переменные из плагина Revars.
Для разработчиков - метод получения переменных Revars в коде
Начиная с Joomla 4 если плагин написан по новой архитектуре вы можете обращаться к методам плагина из любого места Joomla. В Revars есть метод getVariables(), который вернет вам массив с переменными и их значениями.
use Joomla\CMS\Factory;

$app = Factory::getApplication();
// Получаем объект плагина
$revars = $app->bootPlugin('revars','system');
// Обращаемся к любому публичному методу плагина
// Получаем переменные
$variables = $revars->getVariables();
// Посмотрим что мы получили
foreach($variables as $variable)
{
echo $variable->variable.' = '.$variable->value.' <br>';
}

Так как плагин Revars поддерживает создание собственных плагинов - в данном примере кода вы получите не только переменные из самого Revars, но и из всех сторонних плагинов, которые предоставляют для Revars данные. Для этого сторонний плагин должен срабатывать на событие onRevarsAddVariables и возвращать массив объектов. Подробнее в коде самого плагина Revars.

Разработчик плагина @progreccor. Новая версия вышла благодаря усилиям @tsymbalmitia

- Страница расширения и документация
- GitHub расширения
- Пример-болванка для создания собственного плагина для Revars
- Плагин кнопки редактора WT Revars insert для вставки шорт-кодов Revars в редактор

#расширения #разработка #php
Please open Telegram to view this post
VIEW IN TELEGRAM
Программное создание материалов с пользовательскими полями в Joomla 5+
С помощью материалов Joomla на сайте можно сделать не только контентный сайт-статейник или новостник, но каталог, простую доску объявлений и т.д. Начиная примерно года с 2016 очень много трафика из поисковиков уходит в соц.сети, стриминговые платформы, мессенджеры. Много контента стало создаваться напрямую в интерфейсе, например, Telegram. И в связи с этим встаёт вопрос об автоматическом наполнении сайта контентом из соц.сетей и мессенджеров. Для этого как раз и нужно знать как создавать материалы в Joomla 4 / Joomla 5 и старше программным способом. В статье описывается процесс получения данных из сервиса парсинга объявлений о продаже автомобилей в Telegram и сохранения данных в категорию материалов.

Читать статью

Стоит упомянуть статью Дмитрия Рекуна (@drekun) Как программно создать материал с настраиваемыми полями на PHP и Владимира Егорова (@sitogon) Как программно добавить статью в Joomla 3 и Joomla 4, посвященным той же в целом задаче. Зачем нужна ещё одна статья на ту же тему? В процессе разработки плагина по упомянутым статьям обнаружились неописанные нюансы работа Joomla, а так же сами кейсы применения были несколько другими. Поэтому всё оформилось в отдельную статью.

@joomlafeed

#разработка #php
Анатомия умного поиска в Joomla 5. Создание плагина.
Исторически в ядре Joomla существовало 2 компонента поиска: просто "поиск" и "умный поиск" (smart search). Простой поиск был в составе ещё Joomla 1.x и с тех пор существенно не менялся, а начиная с Joomla 4 был исключен из состава ядра. Начиная с Joomla 2.5 в число штатных был включен компонент Умного поиска (smart search) - com_finder, главным отличием которого от простого поиска стала индексация контента. Как создать плагин для умного поиска Joomla расскажет эта статья.

Читать на Хабре

#разработка #php #хабр
👩‍💻 Joomla разработчикам: как починить пагинацию в своих расширениях для Joomla 5.1.3+
Это информация о возможном сломе обратной совместимости в классе Pagination Joomla 5.1.3+. Релиз 5.1.3 был связан с закрытием уязвимостей. В нём был изменён подход к генерации ссылок для страниц пагинации.

Как было?
До сих пор ссылки на отдельные страницы, а также ссылки на страницы "В начало", "В конец", "Вперед" и "Назад" автоматически включали все параметры запроса, которые присутствуют в текущем запросе ($app->getInput()). Такое поведение создает возможность атаки злоумышленников на заражение кэша.

Как стало?
Чтобы смягчить этот фактор, пришлось внести изменения в поведение класса Pagination. Класс разбивки на страницы по умолчанию будет включать только следующие параметры запроса в процесс генерации URL-адреса:
$defaultUrlParams = [
'format' => 'CMD',
'option' => 'CMD',
'controller' => 'CMD',
'view' => 'CMD',
'layout' => 'STRING',
'task' => 'CMD',
'template' => 'CMD',
'templateStyle' => 'INT',
'tmpl' => 'CMD',
'tpl' => 'CMD',
'id' => 'STRING',
'Itemid' => 'INT',
];

Если этих параметров достаточно для формирования корректного URL с помощью Route::_(), то можно ничего не менять. Если вам нужны нетипичные параметры (например, project_id, cat_id, product_id и т.д.), то их следует добавить в объект пагинации в методе display() вашего View.
public function display($tpl = null)
{

$app = Factory::getApplication();
$this->pagination = $this->get('Pagination');

// Flag indicates to not add limitstart=0 to URL
$this->pagination->hideEmptyLimitstart = true;

// Add additional parameters to pagination url
$queryParameterList = [
'catid' => 'int',
'project_id' => 'int',
'language' => 'string',
];

foreach ($queryParameterList as $parameter => $filter)
{
$value = $app->getInput()->get($parameter, null, $filter);

if (is_null($value))
{
continue;
}

$this->pagination->setAdditionalUrlParam($parameter, $value);
}

}

Обратите внимание, что для каждого параметра нужно указать тип фильтра: int, string, cmd, word и т.д.

Также примеры для com_finder и com_content на GitHub

#разработка #joomla #php #development
Please open Telegram to view this post
VIEW IN TELEGRAM
SW JProjects v.2.1.0 - обновление менеджера цифровых проектов для Joomla разработчиков
Компонент позволяет разработчикам сайтов на Joomla вести свой собственный сервер обновлений для своих расширений Joomla (шаблонов, модулей, плагинов etc), что позволяет доносить обновления сразу всем своим клиентам. Возможность скачивания по лицензионным ключам.

👩‍💻Что нового?
Умный поиск. Добавлен плагин индексации проектов для компонента умного поиска Joomla. Плагин поддерживает мультиязычность, отображает иконку проекта в результатах поиска.
Исправление работы пагинации в списке версий. Релиз Joomla 5.1.3 был релизом закрытия уязвимостей. В связи с этим в механизм формирования ссылок пагинации Joomla были внесены изменения. Из-за этого перестали работать ссылки пагинации в списке версий. Исправлено.

Страница расширения
GitHub расширения
Joomla Extensions Directory

@joomlafeed

#расширения #joomla #php #разработка #development
Please open Telegram to view this post
VIEW IN TELEGRAM
Как событие Joomla назовёшь, так оно и триггернётся?
— Нет! Вы, конечно, можете называть события как угодно и вызывать откуда угодно, но правильно составленные имена событий не будут требовать заучивания, они как будто сами будут печататься на экране.

Как же следует именовать события в своих компонентах? — Так, чтобы они читались как полноценные предложения, а для этого надо разобраться с их структурой.

Обычное предложение состоит из подлежащего, сказуемого и дополнения.

Читать статью на Хабре участника нашего сообщества Виталия Некрасова (@vitalik_a)

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