WebTolkRu
99 subscribers
619 photos
72 videos
2 files
644 links
Joomla-разработчик. Контрибьютер ядра Joomla. https://web-tolk.ru. Разработка Joomla на заказ. Также пишу в @JoomlaFeed.
@sergeytolkachyov Хабр: https://habr.com/ru/users/sergeytolkachyov/posts/
Download Telegram
👩‍💻 WT Modules in Jshopping positions v.2.0.1.
Нередко, при разработке интернет-магазина на Joomla JoomShopping бывает нужно вывести информацию из модулей Joomla в карточке товара или в категории. Обычно это делается программным методом прямо в шаблоне магазина.

Данный плагин позволяет выводить модули Joomla в позициях шаблона JoomShopping не вмешиваясь в код. А при необходимости и в собственных, пользовательских позициях.

v.2.0.1. Что нового?

Новая позиция.
Добавлена позиция text_end для страницы завершения заказа и позиция _tmp_var_bottom_allprices для карточки товара JoomShopping (JoomShopping 5.3.1+).
Улучшение совместимости с PHP 8.4.
Проведен небольшой рефакторинг для улучшения работы с PHP 8.4.

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

@webtolkru

#joomla #JoomShopping
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
WT JoomShopping Bitrix24 PRO v.3.2.2
Плагин отправки заказов из интернет-магазина JoomShopping в CRM Битрикс24. Плагин передает лиды, сделки, создаёт контакты и повторные сделки. Обеспечивает смену статуса заказа в JoomShopping при изменении стадии сделки в Битрикс 24 (двухсторонняя интеграция).
Список изменений
- Мелкие правки. Мелкие правки, восстановлена работа плагина на 2 события.
Подробнее
1👍2
На сколько актуально делать сайт в 2025 году? Битва с нейросетями и выбор CMS

Новый выпуск подкаста "Просто о Digital"

Гость:
🎙 Владимир Сергеенко ( https://t.me/aixman ) 
• Интернет-маркетолог с 14-летним опытом
• Соавтор книги «Нетворкинг»
• Спикер конференции Ассоциации директоров по развитию

Ведущий:
💻 Игорь Филипенко ( https://t.me/igorleee )
• Программист и предприниматель с 16-летним опытом в digital
• Основатель подкаста "Просто о Digital"
• Специалист по автоматизации бизнес-процессов

В этом выпуске вы узнаете:

🔥 Актуальность сайтов в эпоху нейросетей
• Актуален ли сайт сейчас и будет ли актуален в будущем?
• Зачем нужен сайт? Есть ли иные инструменты привлечения клиентов?

🤖 Нейросети vs Поисковики vs Сайты
• Почему нейросети не заменят сайты в B2B-сегменте
• Как Google и Яндекс меняют алгоритмы из-за AI-конкуренции

📊 Сайт как центр вселенной вашего трафика
• Почему без сайта вы сливаете 40% маркетингового бюджета впустую?

🛡 Безопасность и Joomla 6.0
• Как отфильтровать 99% ботов и сэкономить на трафике
• Почему Joomla теперь обходит WordPress в безопасности и скорости

⚖️ Выбор платформы: битва CMS
• WordPress: 50% рынка но 80% уязвимостей
• Joomla: профессиональная CMS для сложных проектов
• Drupal: почему его похоронили в 2023 году
• Tilda: когда конструктор выгоднее CMS

Приятного просмотра/прослушивания!


RSS: https://cloud.mave.digital/61930

Mave: https://igorfilipenko.mave.digital

Яндекс Музыка: https://music.yandex.ru/album/35840190

Telegram Mave: https://t.me/mavestreambot/app?startapp=igorfilipenko

Apple Podcasts: https://podcasts.apple.com/us/podcast/просто-о-digital-и-бизнесе/id1801903450

ВКонтакте: https://vk.com/podcasts-12488584

Youtube: https://www.youtube.com/playlist?list=PLfR6jTpnkohDDco32xZ-KyMyWi_S5Xdy2

=========================

Видео-формат подкаста:
Rutube: https://rutube.ru/video/b5762754f9d3e0dc382f32f3034be0a2/

Youtube: https://youtu.be/nu1XF2jNbxY


#подкаст #podcast
👍3
👩‍💻 Раскопал интересный тип поля в Joomla - Groupedlist.
В процессе работы над компонентом нужно разделить опции выпадающего списка на группы. Я писал ранее как это сделать просто в коде тут: статья, пост.
Но как сделать такой список для использования в описаниях форм в xml? Первой мыслью было сделать свой тип поля, расширяющий стандартный \Joomla\CMS\Form\Field\ListField. Однако, в ядре Joomla нашёлся уже готовый класс поля для группированных списков \Joomla\CMS\Form\Field\GroupedlistField. Он расширяет напрямую FormField и имеет 2 метода - getGroups() и getInput().

В getInput() вызывается метод getGroups() для получения массивов с группами опций и его можно было спокойно заменить на collectLayoutData(), где этой работе самое и место, но это не слишком принципиально. И там и там работа делается. Поэтому нас интересует именно метод getGroups().

Мы создаём свой класс поля, расширяем GroupedlistField. Делаем обязательно свой $type для поля и реализуем метод getGroups(). Всё.
use Joomla\CMS\Form\Field\GroupedlistField;
use Joomla\CMS\HTML\HTMLHelper;

class ServerschemelistField extends GroupedlistField
{
// type совпадает с именем файла и класса
// без суффикса 'Field'
protected $type = 'Serverschemelist';

/**
* Method to get the field options.
*
* @return array The field option objects.
*
* @throws Exception
*
* @since 1.0.0
*/
protected function getGroups(): array
{
// наши группы
$group1 = [];
$group2 = [];
$data = []; // какой-то массив с чем-нибудь
// Собираем первую группу опций
foreach ($data as $item) {
$optionattr = [];
// Атрибуты для <option>
if ($something_happend) {
$optionattr['option.attr'] = [
'selected' => 'selected',
'onclick' => 'earthQuake()',
'showon' => 'field1:value1000',
];
}

$group1[] = HTMLHelper::_(
'select.option',
$item->option_value,
$item->option_label_text,
$optionattr
);
}
// Аналогично собираем $group2
// ...
$groups = [
['Имя группы 1'] = $group1,
['Имя группы 2'] = $group2,
];
// В parent::getGroups() будут значения
// из xml-описания формы, если они есть.
// Соединяем их с нашими.
return array_merge(parent::getGroups(), $groups);
}
}


@webtolkru

#joomla #php #webdev #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍2🔥2❤1👏1
Forwarded from Joomla Feed (Sergey Tolkachyov)
👩‍💻 Вышел компонент интернет-магазина HikaShop 6.1.0.
Один из известных компонентов магазина для Joomla.
v.6.1.0 Что нового?
Модуль корзины. Отображение корзины в виде offcanvas-элемента.
Кнопка выхода в панели управления пользователя. Что тут сказать, просто добавили.
Отправка писем только для заказов, оплаченных определёнными способами. Это удобно для рассылки сообщений, привязанных к региону или провайдеру (например, инструкции по банковскому переводу только для заказов, оплаченных банковским переводом).
Листинг выплат по партнерской системе. В разделе управления партнёрскими программами появилось новое подменю «Выплаты», в котором перечислены выплаты партнёрам (упрощённое отслеживание и сверка). Добавлены настройки, благодаря которым можно определить категории товаров, на которые начисляется партнёрская комиссия с продаж.
Список комплектов товаров. Система комплектов позволяет отслеживать остатки товаров, продаваемых в комплекте.

Подробнее в блоге Hikashop.

Поскольку мы не сообщали ранее о Hikashop 6.0, то вкратце скажем, что он вышел в июне 2025г. В новой версии было:
- 13 исправлений ошибок
- 17 улучшений. В частности:
- - Hikashop теперь проверяет UserAgent пользователя перед добавлением товара в корзину, чтобы отсечь ботов. Ведь компонент хранит корзины в базе данных.
- - улучшен роутинг компонента, позволяющий использовать в названии товара даже слеши.
- - улучшения фильтра товаров - ускорение загрузки категорий/брендов/характеристик.
- 4 новых функции:
- - добавлена поддержка Joomla 6.0.
- - Улучшена возможность адаптации форм HikaShop на фронтенде к шаблонам, не использующим стандартные классы Joomla.
- - Плагин внутреннего баланса: возможность исключить уцененные товары из начисленных баллов.
- - Теперь можно выбирать склады для вариантов товаров.

Подробнее в Changelog Hikashop.

Также при работе с Hikashop стоит учитывать, что один и тот же код поддерживает версии Joomla от 3.х до 5.х, а в таблице сравнения версий заявлена и Joomla 2.5. Беглый просмотр кода показал, что компонент как был, так и остался старым и для совместимости с Joomla 4+ просто добавлен плагин.

@joomlafeed

#joomla #расширения #hikashop
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Forwarded from Joomla Feed (Sergey Tolkachyov)
This media is not supported in your browser
VIEW IN TELEGRAM
joomLab Avatar плагин загрузки аватара для пользователя.

Плагин joomLab Avatar добавляет в форму регистрации и в форму редактирования пользователя поле для загрузки аватара.

При этом используется стандартное пользовательское поле media, которое создается в момент установки плагина.
В настройках плагина Вы сможете указать папку, где хранить аватары, а так же задать размер миниатюры изображения и выбрать изображение "заглушки".

Разработчик участник нашего сообщества Александр Новиков (@pro_portal).

Страница расширения
Документация

#joomla #расширения
👍4👏1
SM WT CDEK аддон доставки для JoomShopping v.1.3.1
Способ доставки для интернет-магазина JoomShopping. Работает с API CDEK v.2. Считает стоимость доставки, позволяет выбрать пункт выдачи заказа CDEK на карте, отображает полную информацию о ПВЗ в заказе. Для работы аддона необходимо установить и настроить библиотеку WT CDEK. Joomla 4.2.7+, JoomShopping 5+.
Список изменений
- Правки JS и shippingform расширения.. Переписан JS-скрипт расширения. Теперь, если ПВЗ не выбран и способ доставки СДЕК с ПВЗ оказался первым - кнопка Далее формы также блокируется, как и после кликов.
Подробнее
👩‍💻 Совет по Joomla: значение переменной по умолчанию с помощью класса Joomla\Registry\Registry.
Очень часто в Joomla мы видим, что данные приходят не в виде массива или простого объекта (stdClass), а их нужно получать с помощью метода get(). Например, в плагине или модуле:
$option = $this->params->get('my_option');

Это означает, что мы получили данные в виде объекта Joomla\Registry\Registry.

❓ Зачем это?
Возможность указать значение переменной по умолчанию. Лично для меня первое и самое важное - это возможность указать значение переменной по умолчанию, если его (значения) в параметрах нет.
Вы выпускаете новую версию своего мега-плагина и вводите в него новую опцию my_option. Мы используем её везде в PHP коде. Однако, мы же понимаем, что люди обновятся, а обновлять настройки плагина не полезут. Не полезут до тех пор, пока не станет любопытно "а что же там нового?" или что-нибудь не отвалится. И пока они не установят новый параметр и не сохранят настройки плагина - в коде он так и не появится.

Чтобы ничего не отвалилось нам в коде нужно предположить сценарий по умолчанию, которому, соответственно, нужны значения параметров по умолчанию. Вот тут нам и поможет класс Registry.
$myOption = $this->params->get('my_option', 'default_value_if_null_or_not_exists'); // string по умолчанию

И теперь нам не надо писать свои проверки на наличие переменной и её пустоту, а так же вы всегда уверены, что получите вменяемое значение для работы в коде. По умолчанию можно указать что угодно. Чаще всего это какая-нибудь строка, число, массив.
$myOption = $this->params->get('my_option'); // null, если не найдено
$myOption = $this->params->get('my_option', []); // пустой массив по умолчанию
$myOption = $this->params->get('my_option', 100500); // ставка за час работы по умолчанию ;-)
$myOption = $this->params->get('my_option', 'Joomla'); // движок для работы по умолчанию


@webtolkru

#joomla #php #webdev #dev #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
Forwarded from Joomla Feed (Sergey Tolkachyov)
👩‍💻 Joomla признана лучшей CMS 2025 в конкурсе 20i FOSS Awards.
Мероприятие 20i FOSS Awards, организуемое хостинг компанией 20i, призвано помочь в популяризации программного обеспечения с открытым исходным кодом.
В этом году определены победители конкурса, и Joomla снова признана лучшей CMS.
В тройку победителей голосования так же вошли WordPress и Strapi.
Поздравляем всех проголосовавших и хотим выразить благодарность за многолетнюю поддержку проекта!

https://www.20i.com/foss-awards/winners

#joomla #community
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Forwarded from Joomla Feed (Sergey Tolkachyov)
👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?
В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:
- создать объект класса события
- передать в него параметры
use Joomla\CMS\Event\AbstractEvent;
use Joomla\CMS\Factory;
use Joomla\CMS\Plugin\PluginHelper;

// Грузим плагины нужных групп
PluginHelper::importPlugin('system');
// Создаём объект события
$event = AbstractEvent::create('onAfterInitUniverse', [
'subject' => $this,
'data' => $data, // какие-то данные
'article' => $article, // ещё материал вдовесок
'product' => $product, // и товаров подвезли
]);
// Триггерим событие
Factory::getApplication()->getDispatcher()->dispatch(
$event->getName(), // Тут можно строку передать 'onAfterInitUniverse'
$event
);
// Получаем результаты
// В случае с AbstractEvent это может быть не 'result',
// а что-то ещё - куда сами отдадите данные.
// 2-й аргумент - значение по умолчанию,
// если не получены результаты
$results = $event->getArgument('result', []);

Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды.
Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;

$event = MyCoolEvent::create('onAfterInitUniverse', [
'subject' => $this,
'eventClass' => MyCoolEvent::class, // ваш класс события
'data' => $data, // какие-то данные
'article' => $article, // ещё материал вдовесок
'product' => $product, // и товаров подвезли
]);

Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.

🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.

@joomlafeed

#joomla #php #webdev
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍3
WT JSwiper - SWiper.js для Joomla-разработчиков v.12.0.1
Этот плагин для разработчиков Joomla. Плагин регистрирует Swiper.js пакет в Joomla Web Assets Manager. Затем вы можете использовать его в своих расширениях c помощью $wa->useScript('swiper-bundle')->useStyle('swiper-bundle').
Список изменений
- Bug Fixes. core: fixes issues when slidesOffsetBefore & slidesOffsetAfter are combinated with centeredSlides, slidesPerView & loop (#8038) (74cc297), closes #7298 #7956 #6916
effect-cards: fix offset in vertical direction when rotate is unset (a248ca1), closes #8075
get-device: regexp tweak (60bb79b), closes #8057
types: correct types for getSlideTransformEl (b34bdce), closes #8054
- Features. a11y: add wrapperLiveRegion param to disable wrapper live region in a11y module (#8061) (d03044e)
move to SVG icons for navigation (264603c), closes #6652 #4990
remove LESS and SCSS styles in favor of CSS (118ec66)
virtual: add slidesPerViewAutoSlideSize para...
Подробнее
Forwarded from Joomla Feed (Sergey Tolkachyov)
👩‍💻 SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla.
Компонент - менеджер цифровых проектов для Joomla! CMS. Компонент обеспечивает создание каталога цифровых проектов и предоставляет возможность скачивания, в том числе с использованием лицензионных ключей.

👩‍💻 v.2.5.0. Что нового?
Схемы структур данных для серверов обновлений. Теперь с SW JProjects вы может создавать сервер обновлений не только для расширений Joomla, но и свои собственные. Например, вам нужно, чтобы структура данных сервера обновлений была другая и формат должен быть, например, не XML, а JSON. Формирование структуры данных для сервера обновлений расширений Joomla вынесено в отдельный плагин. Вы можете создать свой собственный плагин и реализовать в нём нужную вам структуру данных, добавив или наоборот исключив отображаемые данные. Сервер обновлений в компоненте по-прежнему отображает информацию о списке проектов и их версиях, о конкретном проекте и его changelog.
Можно выбрать схему данных сервера обновлений глобально для всего компонента, выбрать другую схему данных для категории проектов, а так же выбрать схему в каждом проекте.

Разработчикам в качестве образца можно посмотреть плагин схемы данных для Joomla в составе компонента или же плагин-образец JSON-схемы на GitHub.


Группа плагинов swjprojects. Для нужд компонента создана группа плагинов swjprojects. В частности, в этой группе находится плагин структуры данных Joomla расширений для сервера обновлений.

Изменение языковых констант. Изменены некоторые языковые константы в панели администратора. Если вы делали переопределение констант - переопределите их снова.

👩‍💻 Joomla 6. Внесены изменения для корректной установки и работы компонента на Joomla 6. Компонент успешно протестирован на Joomla 6-beta2.

Минимальная версия Joomla - 5. Подняты минимальные системные требования: Joomla 5.0.0 и PHP 8.1.

- Страница расширения
👉 Плагин-образец кастомной JSON-схемы данных для сервера обновлений на GitHub.
- GitHub расширения
- Документация на GitHub
- Joomla Extensions Directory

#joomla #расширения
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Схема данных для сервера обновлений. SW JProjects - Документация.
Страница документации по новой функции компонента.

Читать

@webtolkru

#joomla #разработка #php #webdev
❤1👍1
Forwarded from Joomla Feed (Sergey Tolkachyov)
👩‍💻 IWS.BY VK app widget - Виджет приложения ВКонтакте для Joomla.
Модуль «Виджет приложения ВКонтакте» для Joomla поможет добавить на сайт виджет с карточкой приложения или игры из социальной сети ВКонтакте.


У вас возникла потребность отобразить информацию о ваших приложениях или играх на сайте с кнопкой перехода в социальную сеть, то этот модуль для Вас. Вам не придется хранить информацию о приложении у себя на сайте, все данные получаются через публичное API социальной сети ВКонтакте. Хранение информации на стороне ВКонтакте позволит Вам не нагружать базу данных сайта.

В модуле имеется всего несколько опций и полей, которые максимально упрощают публикацию виджета. Первая опция позволяет подключить публичное API социальной сети ВКонтакте, необходимое для работы виджетов. Следующее поле потребует ввести идентификатор приложения или игры, присвоенный в социальной сети ВКонтакте. Следующая опция позволит выбрать вид отображаемой информации в виджете.
Модуль имеет 3 варианта отображения:
- карточка
- участники
- кнопка

Поддерживаемые версии Joomla: Joomla 3, Joomla 4, Joomla 5.

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

#joomla #расширения #vk
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Forwarded from Joomla Feed (Sergey Tolkachyov)
👩‍💻 WT Set elements v.1.0.0: плагин поля для RadicalMart.
Плагин пользовательского поля компонента интернет-магазина для Joomla - RadicalMart (@radicalmart). Плагин позволяет создавать набор элементов, включающих заголовок, изображение и краткое описание и выбирать необходимые из них в товаре. Отображать наборы элементов можно в виде товара и в списке товаров (в своих макетах). От клиента поступил запрос на возможность добавления для товаров в RadicalMart списка повторяемых элементов. Это должен был быть редактируемый в одном месте список функций и режимов, которые могли относиться к разным товарам одной категории в разных сочетаниях.

Во вкладке параметров "Отображение" вы можете выбрать отображать или нет элементы в категории товаров и/или карточке товара. Для каждого вида возможно выбрать собственный макет. Файлы макета находятся в /layouts/plugins/radicalmart_fields/wtsetelements. Вы можете использовать свои файлы макета в формате .php, разместив их в этой папке. Кроме того, файлы макетов можно переопределить стандартным способом Joomla, после чего они будут доступны по адресу: /templates/YOUR_TEMPLATE/html/layouts/plugins/radicalmart_fields/wtsetelements.

Плагин предполагает самостоятельную разработку макетов вывода. Макеты "из коробки" следует рассматривать как образец для создания собственных.

Плагин бесплатный. Протестирован на Joomla 5.3.3 и RadicalMart 2.2.4.

Плагин разработан в соавторстве участниками нашего сообщества: Сергеем Сергевниным (@gresserg) и Сергеем Толкачёвым (@sergeytolkachyov).

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

@joomlafeed

#joomla #расширения #radicalmart
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
WT PDF.js v.5.4.149
Библиотека JavaScript, которая преобразовывает документы в формате PDF в код HTML5 Canvas, пригодный для просмотра в веб-браузере.
Список изменений
- v.5.4.149. Обновление библиотеки до версии 5.4.149.
Подробнее
👍2
Какое будущее ждёт веб-сайты как технологию? "Беседа" с ИИ Grok. 2025 год.
Решил пощупать искусственный интеллект Grok и "побеседовать" с ним на темы, интересующие всех, кто так или иначе связан с веб-разработкой. Получилось что-то вроде небольшого интервью, где получилось так, что Grok'у пришлось в какой-то степени обороняться и защищать положение о своей полезности. ИИ отвечал в "режиме эксперта". Посмотрим, что из этого вышло. И этот текст будет скорее фиксацией текущей ситуации. Любопытно будет взглянуть на эти прогнозы спустя те самые 5 лет и посмотреть что сбылось, а что нет.

➡️ А спровоцировало эту "беседу" высказывание одного из веб-разработчиков в чате сообщества WordPress о том, что "сайты уже всё", "всё заменил ИИ" - в уже прошедшем времени.

В общем, кому любопытно - можно пробежаться ))

Читать сей экзерсис

P.S. любопытно было бы задать те же вопросы другим ИИ. Интересно как они будут раздувать тему полезности и восторгов касательно ИИ в маркетинговых целях.

@webtolk

#joomla #ai #будущее #grok
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2