WebTolkRu
100 subscribers
622 photos
73 videos
2 files
648 links
Joomla-разработчик. Контрибьютер ядра Joomla. https://web-tolk.ru. Разработка Joomla на заказ. Также пишу в @JoomlaFeed.
@sergeytolkachyov Хабр: https://habr.com/ru/users/sergeytolkachyov/posts/
Download Telegram
WT Custom menu item banner v.1.2.0
Пользовательские баннеры для пунктов меню Joomla. Адаптивные изображения и адаптивные имиджевые видео. Для вывода используйте пример кода.
Список изменений
- Макеты баннеров. Вёрстку баннеров можно вынести в отдельные макеты в папке plugins/system/wt_custom_menu_item_banner/tmpl. Добавлено поле в настройках баннера для выбора нужного макета баннера разных пунктов меню.
Подробнее
👍2
Forwarded from Joomla Feed (Sergey Tolkachyov)
Call for authors. Joomla.

Вы любите Joomla и умеете её готовить? Вам попадаются Joomla-сайты, на которые без слёз смотреть не возможно и вы знаете как это можно исправить? Вы - Joomla-разработчик и можете создать шаблон, плагин, модуль, компонент гравицапы? Можете настроить любимую CMS как никто другой?

👩‍💻 Поделись своим опытом с сообществом!

✔️ Что может быть интересно:
- обзоры и подборки расширений для Joomla
- чек-листы: что делать с Joomla сразу после установки? Joomla и СЕО, Joomla и интеграции, Joomla и e-commerce
- ты разработчик? Напиши небольшой анонс о своём мега-плагине и о нём узнает самая целевая аудитория.
- напиши статью о том как работает Joomla под капотом. А мы ей поделимся со всеми в канале, чате, сайте сообщества и форуме.
- есть крутой кейс с большими цифрами? Расскажи всем о нём. Это не долго, а всем интересно. По крутым кейсам могут прийти заказчики с похожими проектами.

👩‍💻 Что ты получишь взамен?
Прежде всего благодарность сообщества. Да, все улыбнулись 🙂 Но эта благодарность может выражаться по-разному.
- Благодаря твоему контенту и расширениям твоё имя станет именем Joomla-эксперта. А хорошие заказчики любят экспертов.
- Благодаря твоему контенту больше веб-разработчиков научатся делать как правильно.
- Благодаря твоему контенту будет больше новых Joomla-разработчиков
- Благодаря твоему контенту ты будешь развиваться сам, расти как профессионал и развивать новичков. Чтобы научиться чему-то хорошо - начни это преподавать )) А новички могут стать твоими помощниками и будущими сотрудниками. Опытным специалистам нередко приходится отказываться от проектов из-за занятости. Ты сам об этом знаешь )
- Благодаря твоему контенту ты можешь выйти на международную Joomla-аудиторию.

Joomla представлена в Telegram, в Mattermost, на Хабре, VC и других площадках.

P.S. А если ты ещё и любишь волонтёрить, то также присоединяйся. Для жизни сообщества нужно порой делать много всяких полезных мелочей. Вместе это будет сделать легче.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Forwarded from Joomla Feed (Sergey Tolkachyov)
🏆 Открыто голосование за Joomla в премии CMS Critic People’s Choice Awards 2024
🗓 Голосование продлится до 24 февраля 2025 года.

👩‍💻 Проголосовать! 👩‍💻

Номинации, в которых можно проголосовать за Joomla:
⭐️ Best Free CMS
⭐️ Best Open Source CMS
⭐️ Best Enterprise CMS

Также в номинации Best e-Commerce Solution участвуют компоненты интернет-магазинов для Joomla:
⭐️ HikaShop
⭐️ Virtuemart

Что такое CMS Critic Awards?
С 2012 года премия CMS Critic Awards занимает особое место в сообществе систем управления контентом (CMS). Это единственный в своем роде сайт, который составляет рейтинг системы управления контентом и связанных с ними решений на рынке — от малого до крупного и подчеркивает их инновации и услуги.

Каждый год награда CMS Critic Awards присуждается одному победителю в различных отраслевых категориях, таких как: «Лучшая облачная CMS», «Лучший DXP», «Лучшая Headless CMS и других. Затем результаты оглашаются через СМИ вместе с выбором редакции CMS Critic.
Обычно только TOP-5 движков по количеству номинаций допускаются до 2-го этапа - голосования. Но в этом году список номинантов увеличили до 6.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
WT JSwiper - SWiper.js для Joomla-разработчиков v.11.2.2
Этот плагин для разработчиков Joomla. Плагин регистрирует Swiper.js пакет в Joomla Web Assets Manager. Затем вы можете использовать его в своих расширениях c помощью $wa->useScript('swiper-bundle')->useStyle('swiper-bundle').
Список изменений
- Bug Fixes. cards: fix slides swap issue in loop mode (e012e34), closes #7823
core: fix slidePrev issue in free-mode (a3fee36), closes #7869
virtual: fix when Element not swiping in Safari (5abdbfd), closes #7679
Подробнее
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Прикольно, надо взять на вооружение какую-нибудь идею отсюда))
😁3
Forwarded from Joomla Feed (Sergey Tolkachyov)
Reset Article Hits and Fake Hits плагин для Joomla

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

🧐 Странная фича: накрутка просмотров.
Плагин может добавить фейковых просмотров к материалам. Разработчик считает, что это может быть полезно для тестирования или моделирования трафика.

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

Плагин работает на Joomla 3 - Joomla 5 (с плагином обратной совместимости).

Страница расширения на JED
👍3😁1
This media is not supported in your browser
VIEW IN TELEGRAM
👩‍💻 Совет по Joomla: программный рендер модулей

Модули порой удобно использовать в местах, которые в Joomla не всегда предназначены для этого 😀. Например, в переопределениях макета. Из материала делаем посадочную страницу: часть инфы находится в самом материале, часть - в полях, а часть удобно вывести модулем. При этом модуль этот должен находиться между телом материала и данными из пользовательских полей.

Для реализации берём в руки ModuleHelper и приступаем.
use \Joomla\CMS\Helper\ModuleHelper;

$modules = ModuleHelper::getModules('landing-masonry');
if(!empty($modules))
{
foreach ($modules as $module)
{
// рендерим всё, что нашли в позиции landing-masonry
echo ModuleHelper::renderModule($module);
}
}

👩‍💻 А что если посложнее?
В этом случае всё просто. Но здесь в тему будет упомянуть ещё один способ работы с модулями. Контекст: магазин одежды. В карточке товара нужно вывести информацию о размерной сетке, типовые рекомендации по уходу и т.д. Это короткие тексты, которые повторяются из товара в товар и не нужно их копировать многажды. Эти тексты отображались простым аккордеоном Bootstrap.
Но! В этот же аккордеон нужно было добавить и описание товара JoomShopping.
Поэтому я сделал с помощью своего модуля WT Quick links следующее.

1️⃣ Создал модуль типа WT Quick Links, в котором в список элементов занёс все нужные тексты.
2️⃣ Не стал назначать модуль какой-либо позиции. В шаблоне JoomShopping захардкодил id модуля. Хотя лучше было бы назначить модуль в некой уникальной позиции, которая встречалась бы только в нужном нам месте на сайте.
3️⃣ Программным способом в данные модуля добавил нужные данные из JoomShopping так, как мне нужно (в начало списка - описание товара).
4️⃣ Отрендерил модуль с помощью ModuleHelper в product_default.php шаблона JoomShopping.
use Joomla\CMS\Helper\ModuleHelper;

// Модуль id 136 - Доставка, оплата и гарантии в карточку товара + ОПИСАНИЕ ТОВАРА JoomShopping
$module = ModuleHelper::getModuleById('136');

$module_params = new Joomla\Registry\Registry($module->params);
// Формируем новые параметры модуля перед рендером.
$new_module_params = [];
$i = 1;

// Помещаем описание товара в самое начало

if (!empty($this->product->description)){
$new_module_params['fields']['fields0'] = (object) [
'item_header' => Text::_('JSHOP_DESCRIPTION'),
'item_text' => $this->product->description
];
}
// Переименовываем все остальные ключи массива элементов из модуля
foreach ($module_params->get('fields') as $key => $value)
{
$new_module_params['fields']['fields' . $i] = $value;
$i++;
}
$new_module_params = new Joomla\Registry\Registry($new_module_params);
// Соединяем старые и новые параметры модуля.
$module_params->merge($new_module_params);

$module->params = $module_params->toString();

// Всё готово! Рендерим модуль.
echo ModuleHelper::renderModule($module);

Вот так.

@webtolkru

#joomla #webdev #php #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
👩‍💻 Совет по Joomla: получение значений пользовательских полей в любом месте

Пользовательские поля Joomla содержат самую разную дополнительную к основным сущностям информацию. И отображает её нужно бывает в самых разных местах. Легко работать с полями, когда они есть в объекте материала или контакта. Но когда их нет - их нужно получить. Для этого существует класс \Joomla\Component\Fields\Administrator\Helper\FieldsHelper.

У этого класса среди прочих самым ходовым, наверное, является метод getFields(). С его помощью мы получаем списки полей и, если нужно, их значений для конкретного контекста.

Контекст в коде Joomla - это отличительный признак вида <com_component>.<entity>. Например, com_content.articles. По нему мы понимаем, что работаем с материалами Joomla и конкретно со статьями.

/**
* @param string $context Контекст для поиска полей
* @param object|array|null $item объект сущности, для которой ищем поля.
* @param int|bool $prepareValue (если int - определяем где показывать значения): 1 - после заголовка, 2 - до основного контента, 3 - после контента, 0 - OFF. Если НЕ false и НЕ 0 - ПОЛУЧАЕМ ПОЛЯ И ЗНАЧЕНИЯ ПОЛЕЙ
* @param ?array $valuesToOverride значения для переопределения
* @param bool $includeSubformFields Включать ли поля, помеченные, что они только для сабформы?
*
* @return array
*
* @throws \Exception
* @since 3.7.0
*/
public static function getFields()

Таким образом мы в коде нередко видим такие вещи:
use Joomla\Component\Fields\Administrator\Helper\FieldsHelper; 

// Получили поля. Всё ок.
$article->jcfields = FieldsHelper::getFields('com_content.articles', $article, true);

Но поводом для написания этого поста стало несколько другое. В последнем примере кода $article = это объект материала, для получения которого мы создаём сначала модель, в модели создаётся объект базы данных... Итого это всё довольно тяжеловесно.

А если нам нужно просто получить поля со значениями, но как-то полегче?
Для этого достаточно передать вместо $article массив или stdClass с ключом id.
use Joomla\Component\Fields\Administrator\Helper\FieldsHelper;

// Получили поля. Всё ок.
$fields = FieldsHelper::getFields('com_content.articles', [ 'id' => 159 ], true);

Итого мы получили все поля (с учётом прав доступа и т.д.) для материала с id 159, но при этом сэкономили ресурсы сервера.

@webtolkru

#joomla #разработка #php #webdev
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Forwarded from Joomla Feed (Sergey Tolkachyov)
Событие Pizza, Bugs & Fun приближается - 22 февраля 2025 года

Уже несколько лет в мире Joomla проводятся мероприятия "Pizza, Bugs & Fun" (#PBF), где каждый может посвятить несколько часов своего мозгового времени тому, чтобы наша любимая CMS стала ближе к идеалу.

Видео из этого поста рассказывает об организационных вопросах, которые пригодятся для участия в PBF:
- как создать аккаунт в Mattermost (чат международного Joomla-сообщества)
- как создать аккаунт в Joomla! Documentation
- как написать статью в Joomla! Documentation
- как создать аккаунт на GitHub (у разработчиков обычно уже он есть)
- как настроить патч тестер
- как протестировать патч
- как получить вознаграждение

В рамках события PBF все желающие могут собираться в общий онлайн чат, обсудить вопросы Joomla и приложить к их разрешению свою руку. Самый классный вариант, когда эта встреча происходит оффлайн: тогда организовывается пицца, напитки по вкусу и несколько часов совместного творчества.

Каждый помогает тем, что он умеет:
- кто-то пишет недостающую документацию,
- кто-то пишет код,
- кто-то тестирует как исправлены ошибки или сделан новый функционал.

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

На момент написания данного поста в репозитории Joomla 752 открытых Issue (как правило это баги) и 223 Pull request (PR, исправление багов и новый функционал). Все PR обязательно тестируются минимум двумя участниками сообщества, дабы в конечный код движка не проскочила ошибка.

Если каждый из участников только нашего сообщества сделает даже одно тестирование, то, боюсь, PR и Issue на всех не хватит 😀 И ничего не останется нашим коллегам из международных Joomla-чатов.

Смотреть видео
Сайт

@joomlafeed

#joomla #php #community #webdev
👍2
Вот делают же люди сайты....
😁1
WT Multicategories плагин мультикатегорий Joomla

Joomla плагин позволяет добавлять в категории статьи или контакты из других категорий (функционал мультикатегорий). id дополнительной категории берутся из пользовательского поля материалов или контактов.

👩‍💻 v.1.0.1 Что нового?
Исправление безопасности (в первый раз такое): в один файл забыл вставить стандартную проверку Joomla defined('_JEXEC') or die;.

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

@webtolkru

#joomla #php #расширения #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Forwarded from Joomla Feed (Sergey Tolkachyov)
Вышла новая версия JED Checker 2.4.4
Компонент позволяет проверить на возможные ошибки и соответствие требованиям Joomla Extensions Directory расширения, которые Joomla-разработчики хотят опубликовать в официальном маркетплейсе расширений Joomla.
Что нового?
М
ного исправлений и улучшений для поддержки Joomla 5.
Узнать подробнее и скачать эту версию можно на странице GitHub releases.
Компонент поддерживает участник нашего сообщества Денис Рябов (@dryabov).

Страница JED
👍2
Forwarded from Joomla Feed (Sergey Tolkachyov)
Постинг материалов Joomla сайта в сообщество VK

При редактировании материала появляется кнопка "Поделиться в VK". После ее нажатия данных материал публикуется в выбранном сообществе VK. Изображение для поста берется из поля "Изображение вводного текста".

Плагин бесплатный. Разработчик - участник нашего сообщества @mitriy_bug

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

#расширения #vk
👍6
Forwarded from Vladimir Egorov
#joomla

Вышла новая версия компонента "J SMS Registration" - 2.2.0

Добавлена возможность авторизации через Яндекс ID

https://sitogon.ru/dlya-tech-kto-delaet-internet/298-avtorizatsiya-cherez-yandeks-id-v-joomla
👍2
Forwarded from Joomla Feed (Sergey Tolkachyov)
SW JProjects v.2.3.0 - обновление менеджера цифровых проектов для Joomla разработчиков
Компонент позволяет разработчикам сайтов на Joomla вести свой собственный сервер обновлений для своих расширений Joomla (шаблонов, модулей, плагинов etc), что позволяет доносить обновления сразу всем своим клиентам. Возможность скачивания по лицензионным ключам.

👩‍💻 v.2.3.0. Что нового?
Поле домен для ключа. В форму создания ключа добавлено поле домен. Поле хранится в отдельной ячейке таблицы базы данных.
Новый раздел: ключи пользователя. Во фронтенд добавлен новый раздел - ключи пользователя. Вы можете создать пункт меню для пользователя, где он сможет увидеть список всех своих лицензионных ключей. Раздел доступен только авторизованным пользователям сайта.
Мелкие исправления и рефакторинг. Несколько мелких исправлений ошибок и улучшений.

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

@joomlafeed

#расширения #joomla #php #разработка #development
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
👩‍💻 Совет по Joomla: показ уведомлений Joomla.renderMessages.

Пользователь совершает какие-то действия на сайте и получает сообщения об успешном или не успешном их результате, а также просто информационные сообщения. В php коде мы привыкли использовать для этого метод enqueueMessage():
use Joomla\CMS\Factory;

$html = 'Message';
Factory::getApplication()->enqueueMessage($html, 'warning');

Чаще всего в качестве сообщения используются языковые константы, чтобы пользователи могли получать сообщения на своём языке:
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;

Factory::getApplication()->enqueueMessage(Text::_('SOME_LANG_CONSTANT'), 'info');

Рендер сообщений Joomla во фронтенде
Здесь нам потребуется файл подключённые файлы ядра core.js и messages.js. Немного выдержки из кода:
/**
* Рендер сообщений, отправленных через JSON
* Используется некоторыми javascript, в частности validate.js
*
* @param {object} messages JavaScript объект, содержащий сообщения для рендера.
* Пример:
* const messages = {
* "message": ["Это будет зелёное сообщение", "И это тоже"],
* "error": ["Это будет красное сообщение", "И это тоже"],
* "info": ["Это будет синее сообщение", "И это тоже"],
* "notice": ["Какое-то информационное сообщение", "И это тоже"],
* "warning": ["Оранжевое сообщение", "И это тоже"],
* "my_custom_type": ["Такое же как инфо-сообщение", "И это тоже"]
* };
* @param {string} selector CSS-селектор контейнера для рендера сообщений
* @param {bool} keepOld Удалить предыдущие сообщения? Да, если true
* @param {int} timeout Таймаут исчезновения сообщения в миллисекундах
* @return void Метод ничего не возвращает
*/

Вот как это выглядит на практике:
Joomla.renderMessages({
message: [Joomla.Text._('COM_SWJPROJECTS_USER_KEYS_KEY_SUCCESSFULLY_COPYED')]
});

Теперь мы видим, что в качестве сообщения мы и в Javascript можем использовать языковые константы. И это круто! Для этого мы используем метод Joomla.Text._() (по аналогии с Text::_() в PHP). Но Javascript откуда-то должен получить значения этих языковых констант. И для этого в php коде нашей страницы мы должны позаботиться о нём и добавить нужные для js языковые константы с помощью метода Text::script().
use Joomla\CMS\Language\Text;

Text::script('SOME_LANG_CONSTANT_SUCCESS');
Text::script('SOME_LANG_CONSTANT_FAIL');

Таким образом я смогу получить в js доступ к значениям языковых констант SOME_LANG_CONSTANT_SUCCESS и SOME_LANG_CONSTANT_FAIL.

@webtolkru

#joomla #разработка #webdev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
WT JSwiper - SWiper.js для Joomla-разработчиков v.11.2.3
Этот плагин для разработчиков Joomla. Плагин регистрирует Swiper.js пакет в Joomla Web Assets Manager. Затем вы можете использовать его в своих расширениях c помощью $wa->useScript('swiper-bundle')->useStyle('swiper-bundle').
Список изменений
- Bug Fixes. element: remove infinite preloader in loop (#7886) (c0d3ece)
- Features. core: export swiper-vars.scss for overwriteability (#7883) (0b688a1), closes #7882
update ssr-window to latest (c521888)
Подробнее
👍2
Forwarded from Vladimir Egorov
#joomla

https://sitogon.ru/joomla-components/honeysuckle

Для скачивания доступна новая версия (1.1.3) компонента "Жимолость"

Компонент защищает сайты под управлением Joomla от атак спам-ботов.

Напоминаю: компонент распространяется бесплатно.

Ключевым дополнением новой версии стала поддержка английского языка.

За перевод большое человеческое спасибо Сергею Толкачеву ( https://web-tolk.ru )
👍2
Forwarded from Joomla Feed (Sergey Tolkachyov)
WT Multicategories v.1.1.0 - плагин мультикатегорий для Joomla

Позволяет добавлять в категории статьи или контакты из других категорий, если они указаны в пользовательском поле. Для удобства указания дополнительных категорий Joomla вы можете использовать плагин пользовательского поля WT Category.

👩‍💻 v.1.1.0. Что нового?
Работа в панели администратора. Добавлена опция работы плагина в панели администратора для материалов. При фильтрации по категории будут добавлены также и те материалы, у которых данная категория указана как дополнительная.
Уточнение SQL-запроса. Был изменен SQL-запрос для работы с несколькими категориями.

Плагин бесплатный. Поддерживает Joomla 4 и Joomla 5.

@joomlafeed

Страница расширения
GitHub расширения
WT Category - плагин пользовательского поля Joomla для выбора категорий

#расширения
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
"Неевклидный товар".

Попалось в ВК) Хороший юмор))
😁4