Дайджест Joomla за 2-е полугодие 2021

b4350596eae26b5315d7539ea92b1bc1.jpg

Все главные новости из мира Joomla за лето и осень 2021 года, в одной статье.

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

Главные новости о Joomla

Выход Joomla 4

Конечно, самой главной новостью мира Joomla стал выход долгожданной Joomla 4, чему был посвящён отдельный пост на хабре с кратким обзором нововведений. С момента предыдущей мажорной версии прошло 9 лет.

В «коробке» Joomla 4 появилось немало нового функционала, вот некоторая часть:

  • появился REST API

  • css-фреймворк Bootstrap 5

  • cоответствие админки и шаблона Cassiopeia ГОСТ Р 52872–2019и WCAG 2.1

  • нативная поддержка HTML-шаблонов писем, с мультиязычностью

  • новая функция «Процессы» (статья-обзор на vc.ru)

Произошло слияние Joomla 4 CMS и Joomla Framework, из-за чего возможности для разработчиков сильно расширились. Движок стал поддерживать стандарты PSR (PSR7,  PSR17 и PSR18). Проект Joomla является проектом-участником PHP FIG, отвечающим за разработку и реализацию этих стандартов.

Что с Joomla 3?

Третья линейка не будет получать новый функционал, но продолжит получать обновления безопасности в течение 2 лет с момента выхода Joomla 4.

Миграция с Joomla 3.10 на Joomla 4.0

Напоминаем, что переход с Joomla 3.x на Joomla 4.x является миграцией. Joomla 3.10.0 называют «мостом» между линейкой 3.x и 4.x. Перед миграцией необходимо убедиться, что все используемые расширения имеют поддержку Joomla 4, а Ваш хостинг отвечает минимальным техническим требованиям.

В Joomla 3.10 в компоненте «Обновления Joomla» находится кнопка «проверить обновления». После нажатия запускается Pre-update Check — проверка на совместимость текущего окружения и расширений с Joomla 4.

Электронная коммерция на Joomla

JoomShopping

JoomShopping — это один из самых популярных интернет магазинов для Joomla в России,  СНГ и Европе, обладает интеграциями со всеми популярными платежными системами и сервисами доставки. Имеет сотни расширений и интеграций.

Летом произошло обновление компонента интернет-магазина JoomShopping 4.18.6 и 4.18.7. Обновление вышло после длительного перерыва, почти 8 месяцев.

Что нового?

  • Добавлена поддержка формата изображений WebP

  • Cron для импорта и экспорта.

  • Показывается дата и время для отзывов.

  • Исправления кода для совместимости с PHP 8.

JoomShopping 5 для Joomla 4

JoomShopping 5 — знаковое событие для этого интернет магазина. Предыдущая версия менялась во время перехода с joomla 2.5 на Joomla 3. При этом внешний вид интернет магазина не менялся со времен Joomla 1.5. С одной стороны это печально, с другой стороны позволяет работать огромному количеству аддонов и расширений в режиме совместимости. В целом разработчики «довели» JoomShopping до того, чтоб он заработал на Joomla 4. Скорее всего плагины, аддоны, модули для более старых версий будут и работать на 5-й версии или сразу или с минимальными доработками.

Скачать JoomShopping

WT SM Otpravka.pochta.ru — интеграция JoomShopping с Почтой России для бизнеса.

Вышло несколько релизов. Расширение позволяет рассчитывать стоимость доставки Почтой России по тарифам согласно договору. Создаёт трек-номера и показывает их клиенту, отправляет на электронную почту и сохраняет в истории заказа. Трек-номер при необходимости можно передать в CRM Битрикс24.

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

Бесплатный шаблон для интернет-магазина на базе JoomShopping 4.18 с использованием CSS-фреймворка Bootstrap 4.6.

На момент создания шаблона Bootstrap 5 был ещё в статусе beta-версии. Представленный шаблон — не конечный продукт. В виду того, что каждый интернет-магазин — явление по своему уникальное, к нему следует относиться как к некой болванке, которую следует адаптировать под каждый конкретный проект.

Скачать шаблон для JoomShopping

Phoca Cart

Компонент интернет-магазина Phoca Cart теперь полностью поддерживает Joomla 4.

«Из коробки» магазин имеет счета, POS, мотивация покупателей (скидки, купоны, подарочные сертификаты, бонусная система с полной или частичной оплатой заказа баллами, специальные цены для групп покупателей).

На сайте разработчика есть готовые переопределения для популярных шаблонов:

  • Cassiopeia (Joomla 4)

  • Gantry 5

  • Astroid

  • Helix

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

Платёжный плагин Stripe Checkout для Phoca Cart от команды NorrNext

Вышел новый платёжный плагин Stripe Checkout для компонента интернет-магазина Phoca Cart от NorrNext. выпустили платежный плагин Stripe Checkout for Phoca Cart.

Отличие от обычного Stripe заключается в переходе на внешнюю страницу платежного шлюза, а также в поддержке дополнительных систем оплаты, которые интегрируются со Stripe. Также команда NorrNext создавала платёжные плагины Phoca Cart для Сбербанка, Робокассы, 2Checkout

Новость о релизе

HikaShop

Один из известных платных компонентов электронной коммерции для Joomla получил версию для Joomla4 с поддержкой PHP 8. HikaShop имеет 3 редакции: бесплатный Starter, и платные Essential и Business.

Таблица сравнения редакций

С помощью аддонов можно расширить функционал магазина до маркетплейса или аукциона, продавать цифровые товары, в том числе серийные номера, лицензионные ключи и т.д.

Virtuemart

Пожалуй, старейший компонент интернет-магазина для Joomla. Компонент разрабатывается сообществом. На данный момент ведётся адаптация ядра Virtuemart для Joomla 4. Стабильная версия для Joomla 3 — 3.8.9. Скачать можно здесь http://dev.virtuemart.net/projects/virtuemart/files Там же есть версия 3.8.9RC с поддержкой Joomla 4. Обсуждение проекта ведется на форуме Virtuemart.

СЕО-продвижение для Joomla

Плагин сео-формул WT SEO Meta templates

Плагин получил несколько релизов. Он нужен для создания и meta-description по заданной формуле, например «Купить {PRODUCT_NAME} за {PRODUCT_PRICE} в {CITY}». Состоит из основного плагина и плагинов-провайдеров, в которых настраиваются формулы.</p> <p>На данный момент созданы следующие плагины-провайдеры: </p> <ul><li><p>WT SEO Meta templates — Virtuemart (интернет-магазин)</p></li><li><p>WT SEO Meta templates — JoomShopping (интернет-магазин)</p></li><li><p>WT SEO Meta templates — My City Selector (компонент мульти-региональности Joomla). Компонент My City Selector на GitHub</p></li><li><p>WT SEO Meta templates — Content, стандартные материалы и категории Joomla и их пользовательские поля.</p></li></ul> <p>При установке основного плагина установка плагинов-провайдеров происходит автоматически.</p> <p>Документация и скачать</p> <h4>WT JoomShopping Schema.org — плагин микроразметки для JoomShopping</h4> <p>Плагин добавляет на страницы JoomShopping микроразметку Schema.org в формате ld+json.</p> <p>Поддерживаются: </p> <ul><li><p>главная страница магазина</p></li><li><p>категория товара</p></li><li><p>карточка товара</p></li><li><p>список производителей</p></li><li><p>список товаров производителей</p></li></ul> <p>Документация и скачать</p> <h4>WT JShopping products anywhere — вставка товаров в материалы Joomla</h4> <p>Это пакет, состоящий из двух плагинов: контент-плагина и плагина кнопки редактора, позволяющие быстро и удобно вставлять товары JoomShopping в материалы, модули и везде, где работают контент-плагины. Если Вы измените категорию товара (например), то ссылки исправятся автоматически, что очень удобно для перелинковки на сайте: обзоры и рейтинги товаров, посадочные страницы с product placement и т.д.</p> <p>Контент-плагин поддерживает макеты вывода. Это значит, что Вы можете создать свой собственный макет вывода и представить более полную информацию о вставленном товаре: изображение, краткое описание, цену, количество просмотров, рейтинг, количество товара и т.д.</p> <p>Страница расширения</p> <h3>Статьи о Joomla</h3> <h4>12 новых возможностей Joomla 4.</h4> <p>Обзор нововведений Joomla 4 от специалиста по Virtuemart Виталия Wedal.</p> <p>Прочесть обзор</p> <h4>Статья о двухсторонней интеграции Joomla и Битрикс24</h4> <p>Небольшой кейс двухсторонней интеграции интернет-магазина на Joomla + JoomShopping и CRM Битрикс24. Обращения с форм обратной связи уходят в Битрикс24 в качестве лидов, заказы — в качестве лидов или сделок на нужной стадии. При изменении стадии лида или сделки в CRM происходит смена статуса заказа в JoomShopping.</p> <p>Читать кейс</p> <h4>Разработка форм обратной связи для Joomla 3</h4> <p>Статья на Хабре описывает разные подходы к созданию форм обратной связи на сайтах и интернет-магазинах Joomla на примере магазинов на базе Virtuemart и JoomShopping.</p> <h4>Руководство по новой функции Joomla 4 — Процессы</h4> <p>Статья на vc.ru с обзором одной из самых любопытных новинок Joomla 4  — функции Workflows, которая в русскоязычной интерпретации получила перевод «Процессы». Статья описывает самый очевидный способ применения новинки — создания на сайте этапов издательского процесса: автор, редактор, главный редактор, корректор. Эти этапы с лёгкостью можно заменить своими: копирайтер, редактор, сео-специалист. </p> <p>Учитывая, что в Joomla есть лог действий пользователей, всегда можно понять кто и на каком этапе внёс определенные правки. Данный функционал можно применить и для многопользовательской работы над документами во внутрикорпоративных порталах:   разрабатывают документ юристы, вносят поправки другие отделы — маркетинг, тех.поддержка, BigBoss. Корпоративная почта освободится от длинных цепочек писем.</p> <h3>Joomla-разработчикам</h3> <h4>Библиотека полей lib_fields</h4> <p>Разработчики часто создают свои типы полей JForm, необходимые для реализации функционала. Некоторые типы полей повторяются из проекта в проект, поэтому возникла идея объединить их в библиотеку.</p> <p>Список групп полей: </p> <p>Разработчики предлагают всем внести свой вклад в развитие библиотеки и присылать свои поля, которые могут пригодиться другим людям.</p> <p>https://github.com/JPathRu/lib_fields </p> <p><strong>А так же: </strong></p> <p>Универсальный плагин для кастомных полей Joomla https://github.com/Delo-Design/radicaluniversalfield</p> <p>Библиотека mpdf для Joomla! https://github.com/Delo-Design/jmpdf</p> <p>Revars — плагин замены переменных в тексте (например, контакты, адреса офисов и т.д.) https://github.com/Delo-Design/revars </p> <h4>Скрипт очистки Joomla от предустановленных расширений</h4> <p>Этот скрипт особенно полезен для начальной разработки сайта на Joomla. Дело в том, что по умолчанию в Joomla включена масса расширений, которые большинству сайтов не нужны, как раз этот скрипт позволяет быстро отключить все не нужное в Joomla.</p> <p><strong>Какие плюсы от отключения лишних расширений? </strong></p> <ul><li><p>Уменьшение количества запросов к базе данных.</p></li><li><p>У вас не генерируются левые URL для контактов, фидов и других расширений, которые возможно вы никогда, не будет использовать.</p></li><li><p>Админка становится намного чище и легче из-за того, что у вас не светятся лишние компоненты, модули и плагины.</p></li></ul> <p>Скачать код скрипта</p> <h4>Как правильно подключать JavaScript и CSS в Joomla 4</h4> <p>В Joomla 4 появилась концепция Web Assets, которая упорядочила работу с JavaScript и CSS в Joomla. По сути каждый отдельный JS или CSS файл представляет собой ассет (ресурс).</p> <p>В этой статье рассказывается: </p> <ul><li><p>о реестре скриптов и стилей</p></li><li><p>как правильно подключать скрипты и стили</p></li><li><p>как определять их зависимости</p></li><li><p>как их переопределять и отключать</p></li><li><p>как создавать пресеты скриптов и стилей</p></li><li><p>как создавать пользовательский класс ассета</p></li></ul> <p>Читать статью на JPath.ru</p> <h4>Создание внешних запросов с использованием HttpFactory (Joomla)</h4> <p>Пост на хабре об создании внешних запросов с использованием API Joomla без подключения сторонних библиотек (Guzzle etc), включая токены аутентификации в заголовках запроса. В Joomla 3 «из коробки» доступны 3 драйвера транспорта: cURL, socket, stream.</p> <h4>System — Elodie — плагин для получения отдельных полей через REST API Joomla4</h4> <p>На Facebook промелькнул любопытный плагин, позволяющий получать отдельные поля из API Joomla 4. Как пишет автор плагина, при его реализации он опирался на спецификацию JSON-API SPEC. Этот плагин может пригодится разработчикам проектов, где в качестве бэкенда используется Joomla4.</p> <p>Скачать плагин</p> <h4>Подготовка расширения к переходу на Joomla 4</h4> <p>Joomla 4 уже здесь, но обновление не всегда проходит гладко. Чаще всего из-за сторонних расширений, использующих устаревшие методы API. Этот материал — попытка собрать в одном месте решения наиболее часто встречающихся проблем при переходе на Joomla 4.</p> <p>Читать статью</p> <h4>Ajax-запросы нативными средствами Joomla</h4> <p>Небольшая заметка о том, как делать ajax-запросы штатными средствами без использования дополнительных js-библиотек (jQuery, etc). Joomla 3 и Joomla 4 предоставляют небольшую обёртку для конструирования XMLHttpRequest. </p> <h4>Проблема с SSL и просроченным DST ROOT CA X3 сертификатом в Joomla</h4> <p>У Joomla в комплекте есть своя цепочка сертификатов, которые она применяет, когда проверяет обновления — <strong>/libraries/src/Http/Transport/cacert.pem</strong> Поэтому Joomla может работать даже с просроченными сертификатами на сервере. Просто поставьте себе https://raw.githubusercontent.com/joomla/joomla-cms/3.10-dev/libraries/src/Http/Transport/cacert.pem в /libraries/src/Http/Transport/cacert.pem</p> <p>Удостовериться в проблеме можно вот так: </p> <p>https://gist.github.com/kernusr/74dc666148ccd753eaaee4128fdb059a</p> <p>Файл кладём в корень сайта и открываем в браузере</p> <p>Если видим ошибку, то открываем файл и комментируем строку</p> <pre><code class="php">$options[CURLOPT_CAINFO] = __DIR__ . '/libraries/src/Http/Transport/cacert.pem';</code></pre> <p>И ещё раз проверяем. Если ошибка была только первый раз, то обновите сертификат джумле. Если оба — всё равно обновите сертификат и потом идите бить хостера.</p> <p>Оригинальный пост в Joomla-чате в Телеграм</p> <h3>Расширения</h3> <p>Ожидаемо, новости о расширениях для Joomla связаны по большей части с их адаптацией для Joomla 4. На официальном каталоге расширений Joomla Extensions Directory есть раздел с расширениями, у которых заявлена поддержка Joomla 4.</p> <h4>No Boss Autoupdate — авто обновление расширений Joomla</h4> <p>Расширение для Joomla 3 и Joomla 4. Позволяет автоматически обновлять расширения Joomla аналогично автоматическому обновлению расширений в WordPress.</p> <p>Возможности расширения: </p> <ul><li><p>Обновление расширений по крону или через интервал времени.</p></li><li><p>Уведомления об обновлениях</p></li><li><p>Исключение расширений из списка обновлений.</p></li></ul> <p>Страница расширения</p> <p><em>Тем не менее, автоматические обновления расширений могут приводить к непредсказуемым последствиям, о чём иногда пестрят новости о WordPress. Рекомендуем держать обновления расширений под личным контролем.</em></p> <h4>RadicalForm Elements — бесплатный конструктор форм для Yootheme Pro</h4> <p>Это конструктор форм обратной связи, работает в паре с плагином формы обратной связи RadicalForm. С помощью него вы можете легко создавать любые формы — как типовые, так и нестандартные, включая квизы. </p> <p>Расширение содержит набор элементов для билдера Yootheme Pro, с помощью которых вы можете быстро накликать форму.</p> <p>Страница расширения</p> <h4>JL Content Fields Filter 2.0.0 — фильтр материалов Joomla по пользовательским полям.</h4> <p>Популярная бесплатная система фильтрации материалов по полям Joomla. Фильтр поддерживает Ajax и фильтрует материалы прямо в категории материалов. Теперь фильтр поддерживает Joomla 4.</p> <p>Страница расширения</p> <h4>Обновление Slogin 2.10.1 — авторизация через соц.сети</h4> <p>Один из старейших компонентов социальной авторизации для Joomla, которому в 2021 году исполнилось уже 9 лет. Поддерживает почти все популярные сервисы авторизации и имеет огромное количество сторонних плагинов и модулей интеграции. </p> <p>Что нового? </p> <p>Страница расширения</p> <h4>JComments 4 — компонент комментариев для Joomla 4.</h4> <p>JComments продолжает развиваться для Joomla 4 сообществом на GitHub. Поддерживается PHP 8 и MySQL 8. Все релизы отмечены как <strong>maintaince release</strong>. Это означает поддержку расширения в работоспособном состоянии без добавления нового функционала.</p> <p>Что нового? </p> <ul><li><p>большая работа по актуализации кодовой базы расширения и соответствия её стандартам Joomla 4.</p></li><li><p>удалены все локализации фронтенда, кроме русской и английской в связи с тем, что они требуют обновления.</p></li><li><p>удален плагин простого поиска, так как в Joomla 4 остался компонент только «умного» поиска</p></li><li><p>шаблоны разделены на layouts и поддерживают Bootstrap 5</p></li><li><p>добавлена поддержка Gravatar</p></li></ul> <p>JComments на GitHub</p> <h4>YtVideo 1.8.0 плагин вставки видео с YouTube</h4> <p>Обновился один из самых функциональных плагинов для вставки YouTube роликов на сайт Joomla. Плагин загружать ролик на страницу по факту клика на превью видео, что позволяет значительно ускорить загрузку страницы. Фоновое изображение предварительно кешируется и поддерживает ленивую загрузку. Поддерживаются изображения в формате WebP. Так же плагин умеет обрабатывать просто ссылки на видео YouTube.</p> <p>В релизе: </p> <p>Документация и скачать</p> <h4>Phoca Gallery 4.5</h4> <p>Компонент галереи изображений для сайта уходит корнями в 2007 год. На данный момент для Joomla 4 есть версия, имеющая статус beta-версии. В целом она работает с Joomla 4, однако на «боевых» проектах рекомендуется использование только стабильных версий.</p> <p>Страница расширения</p> <h4>WT JoomShopping Bitrix24 PRO 2.6.0</h4> <p>Плагин двухсторонней интеграции интернет-магазина JoomShopping и CRM Битрикс24. Появился выбор условия создания лида/сделки: всегда или только после успешной оплаты. Добавлено новое значение для отправки в Битрикс24 — трек-номер Почты России.</p> <p>Страница расширения</p> <h4>DJ Extensions</h4> <p>Команда DJ-Extensions известна многими расширениями, среди которых: </p> <ul><li><p>DJ-Catalog (компонент каталога)</p></li><li><p>DJ-Classifieds (доска объявлений) </p></li><li><p>DJ-Reviews (компонент отзывов)</p></li><li><p>DJ-MediaTools (компонент галереи изображений)</p></li></ul> <p>и другие. Почти все расширения поддерживают Joomla 4.</p> <p>Расширения https://dj-extensions.com/ </p> <p>Также команда предлагает свои расширения-провайдеры для динамического контента YooTheme Pro.</p> <h4>Tassos extensions</h4> <p>Греческий разработчик Tassos Marinos известен несколькими своими расширениями для Joomla. </p> <p><strong>Convert Forms</strong></p> <p>Среди них Convert Forms — билдер форм с большим количеством интеграций, шаблонов отображения. Одной из важных особенностей этого конструктора форм является возможность создавать зависимые поля и списки, чем вряд ли может похвастаться какое-либо другое расширение. Convert Forms поддерживает Joomla 4. </p> <p>Страница расширения</p> <p><strong>Google Structured Data</strong></p> <p>Компонент добавления микроразметки Schema.org на сайт. Поддерживается 20 компонентов для отображения микроразметки, 13 типов микроразметки. Google Structured Data поддерживает Joomla 4.</p> <p>Страница расширения </p> <h3>Шаблоны Joomla</h3> <p>В Joomla для максимальной свободы и качества вёрстки как правило пишутся шаблоны под проект. Тем не менее, существует не мало конструкторов и фреймворков, которые можно использовать, когда нужно сделать быстро и недорого. На мой взгляд, большинство билдеров страдают от избыточной верстки и мусора в коде, что является платой за удобство работы с мышкой и нежелание отшлифовывать код. На выходе, как правило, получаются своеобразные «сайты на Тильде». Но у этих решений есть свой рынок и некоторые из них могут показывать неплохие результаты. Напомним статью »90 баллов в PageSpeed для сайта на Joomla», где в качестве подопытного был бесплатный шаблон на фреймворке Astroid.</p> <h4>Шаблон JoomShaper Helix</h4> <p>Один из самых популярных билдеров для шаблонов — Helix Ultimate имеет версию для Joomla 4, поставляется с Bootstrap 5, FontAwesome 5. Конструктор страниц SP Page Builder  позволяет быстро собрать мышкой лендинг из готовых блоков. </p> <p>Сайт JoomShaper</p> <h4>Шаблон YooTheme</h4> <p>Шаблоны и конструктор страниц YooTheme PRO для Joomla любят за чистоту кода и скорость загрузки. Одна из уникальных возможностей — динамический контент. Он позволяет конструировать переопределения макета прямо в билдере, создавая нужные макеты без глубокого погружения в код.  Для динамического контента можно создавать свои провайдеры и таким образом работать с любым компонентом. С версии 2.6.0 конструктор страниц и фреймворк поддерживают Joomla 4.</p> <p>Страница расширения</p> <h4>Шаблон Astroid</h4> <p>Команда JoomDev завершила разработку расширений для Joomla и закрыли joomla-проекты. Свои платные расширения они выложили в открытый доступ. </p> <p>Их главный шаблон и фреймворк Astroid форкнули несколько команд, одна из них — Templaza — успешно продолжает разработку и поддержку. Templaza  выпустила несколько версий с исправлениями и улучшениями.<br />Форк Astroid от Templaza</p> <h4>Gantry от команды RocketTheme</h4> <p>Команда разработчиков RocketTheme продолжают разработку Gantry 5 и выпустили новую версию фреймворка. В версии начиная с Gantry 5.5 есть поддержка Joomla 4. </p> <p>https://gantry.org </p> <h4>Шаблон Nature</h4> <p>Хотите чуть расширенную версию шаблона Cassiopeia? Иогда можете попробовать шаблон Nature для Joomla 4 от разработчика drmenzelit. В этом шаблоне более расширенные настройки чем шаблоне по умолчанию. В настройках шаблона: </p> <ul><li><p>Цвета блоков и текста</p></li><li><p>Размеры заголовков и контейнеров</p></li><li><p>Настраиваемые позиции для модулей</p></li><li><p>Поддержка фавиконок, которые можно генерировать с помощью сервиса https://realfavicongenerator.net/, который создаёт в том числе манифесты для PWA.</p></li></ul> <p>Демо-сайт Скачать</p> <h3>Жизнь русскоязычного Joomla-сообщества</h3> <p>Русскоязычное сообщество Joomla довольно обширно, охватывает не только страны СНГ, но и Европы. </p> <h4>Ресурсы сообщества: </h4> <p>https://joomlaforum.ru/ — форум русской поддержки Joomla.</p> <p>https://joomlaportal.ru/ — интернет-портал Joomla-сообщества.</p> <h4>Telegram: </h4> <p>https://t.me/joomlaru — чат сообщества «Joomla! по-русски»</p> <p>https://t.me/projoomla — Joomla для профессионалов, разработчики Joomla</p> <p>https://t.me/joomlafeed — Новости о Joomla! и веб-разработке по-русски.</p> <p>https://t.me/joomla_jobs — вакансии и предложения работы по Joomla: фуллтайм, частичная занятость и разовые подработки. Размещение вакансий здесь: https://jpath.ru/jobs/add </p> <p>https://t.me/joomlatalks — англоязычный чат сообщества.</p> <h4>Работа Joomla Support восстановлена</h4> <p>После отсутвия онлайн одного из старейших форумов по Joomla, его работа восстановлена. Форум переехал на другой хостинг и будет поддерживаться командой Joomlaforum.</p> <p>Немного истории: форум зародился во времена joomla 1.0 и был одним из самых популярных ресурсов по Joomla в рунете того времени. В последствии ресурс откололся от joom.ru (не удивляйтесь, но раньше это было новостное издание по Joomla) и популярность его стала постепенно уменьшаться, что чуть не привело к закрытию форума.</p> <h2>Благодарности</h2> <p>Хочу сказать большое спасибо участникам Joomla-сообщества, которые помогли в сборе и обработке информации: </p> <ul><li><p>Ринат Кажетов</p></li><li><p>Владимир Елисеев (DeloDesign)</p></li><li><p>Евгений Сивоконь (NorrNext)</p></li></ul> <p class="copyrights"><span class="source">© <a target="_blank" rel="nofollow" href="https://habr.com/ru/post/592461/?utm_campaign=592461&amp;utm_source=habrahabr&amp;utm_medium=rss">Habrahabr.ru</a></span></p> </div> <br> <!--<div align="left"> <script type="text/topadvert"> load_event: page_load feed_id: 12105 pattern_id: 8187 tech_model: </script><script type="text/javascript" charset="utf-8" defer="defer" async="async" src="//loader.topadvert.ru/load.js"></script> </div> <br>--> <div style="padding-left: 20px;"> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2514821055276660" crossorigin="anonymous"></script> <!-- PCNews 336x280 --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-2514821055276660" data-ad-slot="1200562049" data-ad-format="auto"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <!-- comments --> <noindex> <div style="margin: 25px;" id="disqus_thread"></div> <script type="text/javascript"> var disqus_shortname = 'pcnewsru'; var disqus_identifier = '1133351'; var disqus_title = 'Дайджест Joomla за 2-е полугодие 2021'; var disqus_url = 'http://pcnews.ru/blogs/dajdzest_joomla_za_2_e_polugodie_2021-1133351.html'; (function() { var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); })(); </script> <!--<noscript>Please enable JavaScript to view the <a rel="nofollow" href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>--> <!--<a href="http://disqus.com" rel="nofollow" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>--> </noindex> </div> <br class="clearer"/> </div> <br class="clearer"/> <div id="footer-2nd"></div> <div id="footer"> <br/><br/> <ul class="horz-menu"> <li class="about"><a href="/info/about.html" title="О проекте">О проекте</a></li> <li class="additional-menu"><a href="/archive.html" title="Архив материалов">Архив</a> </li> <li class="additional-menu"><a href="/info/reklama.html" title="Реклама" class="menu-item"><strong>Реклама</strong></a> <a href="/info/partners.html" title="Партнёры" class="menu-item">Партнёры</a> <a href="/info/legal.html" title="Правовая информация" class="menu-item">Правовая информация</a> <a href="/info/contacts.html" title="Контакты" class="menu-item">Контакты</a> <a href="/feedback.html" title="Обратная связь" class="menu-item">Обратная связь</a></li> <li class="email"><a href="mailto:pcnews@pcnews.ru" title="Пишите нам на pcnews@pcnews.ru"><img src="/media/i/email.gif" alt="e-mail"/></a></li> <li style="visibility: hidden"> <noindex> <!-- Rating@Mail.ru counter --> <script type="text/javascript"> var _tmr = window._tmr || (window._tmr = []); _tmr.push({id: "93125", type: "pageView", start: (new Date()).getTime()}); (function (d, w, id) { if (d.getElementById(id)) return; var ts = d.createElement("script"); ts.type = "text/javascript"; ts.async = true; ts.id = id; ts.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//top-fwz1.mail.ru/js/code.js"; var f = function () { var s = d.getElementsByTagName("script")[0]; s.parentNode.insertBefore(ts, s); }; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(document, window, "topmailru-code"); </script> <noscript> <div style="position:absolute;left:-10000px;"> <img src="//top-fwz1.mail.ru/counter?id=93125;js=na" style="border:0;" height="1" width="1" alt="Рейтинг@Mail.ru"/> </div> </noscript> <!-- //Rating@Mail.ru counter --> </noindex> </li> </ul> </div> <!--[if lte IE 7]> <iframe id="popup-iframe" frameborder="0" scrolling="no"></iframe> <![endif]--> <!--<div id="robot-image"><img class="rbimg" src="i/robot-img.png" alt="" width="182" height="305" /></div>--> <!--[if IE 6]> <script>DD_belatedPNG.fix('#robot-image, .rbimg');</script><![endif]--> </div> <!--[if lte IE 7]> <iframe id="ie-popup-iframe" frameborder="0" scrolling="no"></iframe> <![endif]--> <div id="footer-adlinks"></div> <noindex> <!--LiveInternet counter--><script type="text/javascript"> document.write("<a rel='nofollow' href='//www.liveinternet.ru/click' "+ "target=_blank><img src='//counter.yadro.ru/hit?t45.6;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+ ";"+Math.random()+ "' alt='' title='LiveInternet' "+ "border='0' width='1' height='1'><\/a>") </script><!--/LiveInternet--> <!-- Rating@Mail.ru counter --> <script type="text/javascript"> var _tmr = window._tmr || (window._tmr = []); _tmr.push({id: "93125", type: "pageView", start: (new Date()).getTime()}); (function (d, w, id) { if (d.getElementById(id)) return; var ts = d.createElement("script"); ts.type = "text/javascript"; ts.async = true; ts.id = id; ts.src = "https://top-fwz1.mail.ru/js/code.js"; var f = function () {var s = d.getElementsByTagName("script")[0]; s.parentNode.insertBefore(ts, s);}; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(document, window, "topmailru-code"); </script><noscript><div> <img src="https://top-fwz1.mail.ru/counter?id=93125;js=na" style="border:0;position:absolute;left:-9999px;" alt="Top.Mail.Ru" /> </div></noscript> <!-- //Rating@Mail.ru counter --> <!-- Yandex.Metrika counter --> <script type="text/javascript"> (function (d, w, c) { (w[c] = w[c] || []).push(function () { try { w.yaCounter23235610 = new Ya.Metrika({ id: 23235610, clickmap: true, trackLinks: true, accurateTrackBounce: true, webvisor: true, trackHash: true }); } catch (e) { } }); var n = d.getElementsByTagName("script")[0], s = d.createElement("script"), f = function () { n.parentNode.insertBefore(s, n); }; s.type = "text/javascript"; s.async = true; s.src = "https://mc.yandex.ru/metrika/watch.js"; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(document, window, "yandex_metrika_callbacks"); </script> <noscript> <div><img src="https://mc.yandex.ru/watch/23235610" style="position:absolute; left:-9999px;" alt=""/> </div> </noscript> <!-- /Yandex.Metrika counter --> <!-- Default Statcounter code for PCNews.ru http://pcnews.ru--> <script type="text/javascript"> var sc_project=9446204; var sc_invisible=1; var sc_security="14d6509a"; </script> <script type="text/javascript" src="https://www.statcounter.com/counter/counter.js" async></script> <!-- End of Statcounter Code --> <script> (function (i, s, o, g, r, a, m) { i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () { (i[r].q = i[r].q || []).push(arguments) }, i[r].l = 1 * new Date(); a = s.createElement(o), m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m) })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga'); ga('create', 'UA-46280051-1', 'pcnews.ru'); ga('send', 'pageview'); </script> <script async="async" src="/assets/uptolike.js?pid=49295"></script> </noindex> <!--<div id="AdwolfBanner40x200_842695" ></div>--> <!--AdWolf Asynchronous Code Start --> <script type="text/javascript" src="https://pcnews.ru/js/blockAdblock.js"></script> <script type="text/javascript" src="/assets/jquery.min.js"></script> <script type="text/javascript" src="/assets/a70a9c7f/jquery/jquery.json.js"></script> <script type="text/javascript" src="/assets/a70a9c7f/jquery/jquery.form.js"></script> <script type="text/javascript" src="/assets/a70a9c7f/jquery/jquery.easing.1.2.js"></script> <script type="text/javascript" src="/assets/a70a9c7f/jquery/effects.core.js"></script> <script type="text/javascript" src="/assets/a70a9c7f/js/browser-sniff.js"></script> <script type="text/javascript" src="/assets/a70a9c7f/js/scripts.js"></script> <script type="text/javascript" src="/assets/a70a9c7f/js/pcnews-utils.js"></script> <script type="text/javascript" src="/assets/a70a9c7f/js/pcnews-auth.js"></script> <script type="text/javascript" src="/assets/a70a9c7f/js/pcnews-fiximg.js"></script> <script type="text/javascript" src="/assets/a70a9c7f/js/pcnews-infobox.js"></script> </body> </html>