Joomla Feed
598 subscribers
425 photos
10 videos
3 files
1.21K links
Новости о Joomla! и веб-разработке по-русски.
Наш сайт: https://joomlaportal.ru
По вопросам размещения новостей о Joomla @sergeytolkachyov
Download Telegram
Добавление своих команд для CLI в Joomla 4 и Joomla 5 с помощью плагина
В Joomla, как и во многих других PHP фреймворках и движках, уже довольно давно (с версий 1.7.x) существует возможность работы с помощью CLI. С его помощью обычно решают те задачи, решение которых в веб-интерфейсе Joomla нецелесообразно из-за возможных ограничений веб-сервера - так называемые "тяжелые" задачи. Это может быть миграция большого количества контента со старой версии Joomla на новую, синхронизация данных с внешним источником по API (синхронизация цен и остатков, выгрузка заказов), работа с файлами и каталогами, выполнение пакетных заданий на больших объёмах и т.д. - всё то, что может занимать много времени и ресурсов сервера.

Как добавить свою команду в CLI интерфейс Joomla расскажет эта статья.

Читать статью
#разработка
Генератор плагина для Joomla 4 и Joomla 5
Данный генератор для Joomla-разработчиков помогает создать болванку плагина по структуре файлов и классов Joomla 4 и Joomla 5. Создаётся сервис-провайдер, основной класс плагина, языковые файлы для русского языка.

Созданный плагин будет не совместим с Joomla 3. Также автор генератора предупреждает, что версия Joomla 4 должна быть не ниже 4.4.4, хотя судя по генерируемому коду всё должно быть ОК. В любом случае разработчик разберется что с этим делать и может сэкономить время.

Генератор болванки плагина для Joomla 4 / Joomla 5

Автор генератора - @sitogon

#разработка
👩‍💻 Обновление плагина 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
Обновление веб-ассета Swiper.js для Joomla - WT JSwiper.js v.11.1.5
В Joomla 4 и Joomla 5 появилась концепция Web Assets и WebAssetManager, с помощью которого можно управлять подключениями css, js файлов, подключением. Все css и js файлы включаются в общий реестр ассетов, затем выстраивается граф зависимостей и в итоге на генерируемую страницу подключается только то что нужно на данной странице.

Поскольку веб-ассеты можно добавлять с помощью плагинов (ссылка на статью ниже) - можно сказать, что появилось новое направление для плагинов - веб-ассеты. Вы можете устанавливать плагины, включающие веб-ассеты и использовать их как зависимости в самых разных местах Joomla: в шаблоне, в макетах модулей и плагинов.

Одним из таких плагинов веб-ассетов является WT JSwiper.js. Плагин добавляет в Joomla WebAssets Registry ассет популярного скрипта swiper.js, который потом легко можно использовать в коде:
$wa = Factory::getApplication()->getDocument()->getWebAssetManager();
$wa->useScript('swiper-bundle')->useStyle('swiper-bundle'); // Локальный файл
$wa->usePreset('swiper-bundle-remote'); // Подключение из CDN

Например, было: иконочный шрифт могут использовать 2 разных модуля. CSS обычно подключается в шаблоне и он грузится везде, даже там, где не надо. Если же подключать CSS в одном модуле, а в другом нет - на странице стиль есть ровно до тех пор, пока опубликован модуль с этим подключением.
Стало: теперь в макетах расширений мы просто пишем $wa->useStyle('my.style'); и за необходимостью подключения нужного ассета (в данном случае CSS с иконочным шрифтом) следит Web Asset Manager. Если мы снимем один модуль с публикации, то нужный ассет подключит другой модуль.

Поскольку плагин - расширение Joomla - его можно обновлять обычным для Joomla способом и всегда иметь самую свежую версию любимого js-скрипта или веб-ассета на всех своих сайтах и сайтах ваших клиентов.

- Скачать WT JSwiper.js для Joomla
- Статья на JPath.ru Как правильно подключать JavaScript и CSS в Joomla 4
- Статья на Хабре: Использование WebAssetsManager Joomla 4 (Joomla 5) и добавление собственных пресетов с помощью плагина
- Документация Swiper.js

#joomla #расширения #разработка #плагин
Вышел плагин 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 4. Часть I
Joomla 4 существенно улучшена по сравнению с Joomla 3. Прямо из коробки вы получаете очень быструю CMS со встроенной поддержкой структурированных данных (которые ранее назывались «микроданными»), а также несколько типов кэширования, подходящих для любой сферы применения, от легковесных персональных сайтов до массивных, нагруженных порталов.

Cтарые версии Joomla имели неоправданно плохую репутацию медленной и плохой для SEO CMS. Но теперь это далеко от истины. Joomla 4 без каких-либо сторонних расширений превосходит своих конкурентов, даже если они используют специально созданные расширения.
В этой серии статей мы обсудим, как оптимизировать Joomla 4, чтобы ещё больше улучшить её производительность, и как избежать всех ловушек, когда разрабатываете сайт для себя или клиента. Наша цель — сайт, привлекательный как для поисковых систем, так и для реальных посетителей.

Это перевод первой из цикла статьи об оптимизации и ускорении Joomla. Перевод сделал участник нашего сообщества Виталий Некрасов @vitalik_a

Читать перевод на Хабре

#хабр #разработка
Обновление компонента SW JProjects v.2.0.0
Компонент позволяет создать свой собственный каталог расширений Joomla (и не только) и предоставляет возможность скачивания, в том числе с использованием лицензионных ключей. Для разработчиков Joomla есть возможность для каждого расширения указать сервер обновлений, changelog url для отображения изменений прямо в панелях администратора сайтов ваших клиентов.
v.2.0.0. Что нового?
👩‍💻 Joomla 5 ready
Сделан большой рефакторинг. Компонент переписан на архитектуру расширений Joomla 5 и работает без плагина обратной совместимости.
👩‍💻 Новый дизайн
Для большинства разделов обновлён дизайн. Вы также можете создать свои собственные макеты и выбрать их в настройках компонента.
👩‍💻 Оглавление в документации
Теперь при чтении документации вам доступны все разделы, связанные с данным расширением.
👩‍💻 Плагины для вставки проекта в контент
Добавлено 2 плагина: контент плагин и плагин кнопки редактора. Контент плагин позволяет превращать non-SEF ссылки вида index.php?option=com_swjprojects... в SEF. А также обрабатывает шорт-коды вида {swjprojects project_id=1 tmpl=your_tmpl_name}. Таким образом вы можете вставлять информацию о проектах везде, где работают плагины контента. Плагин кнопки редактора позволяет легко вставлять ссылки или шорт-коды с выбранным макетом.
👩‍💻 Исправление ошибок
Модуль категорий неправильно работал на мультиязычных сайтах, отображая данные на одном языке. Исправлено.

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

#расширения #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Анатомия умного поиска в 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