Куда идем?
Joomla 3.9

На днях состоялся релиз Joomla 3.9. В новой версии CMS внесено более 250 исправлений и добавлено несколько новых полезных функций, о которых пойдет речь в данной статье.

Ниже я перечислил новые функции Joomla 3.9, которые показались мне основными и наиболее интересными.

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

1. Набор инструментов политики конфиденциальности

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

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

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

В админке вы можете найти новый плагин Privacy Consent, в настройках которого можно задать текст политики конфиденциальности:

Настройки плагина Privacy Consent

Здесь можно ввести краткий текст, выбрать статью, содержащую полный текст, ввести текст сообщения о необходимости согласия с политикой.

На вкладке Истечение вы можете задать настройки времени действия согласия с политикой, после истечения которого пользователю вновь будет предложено дать согласие:

Настройки времени действия согласия с политикой конфиденциальности

Кроме того, не забудьте опубликовать этот плагин. По умолчанию он выключен.

Если все сделано правильно, то, например, форма регистрации будет выглядеть так:

Форма регистрации с политикой конфиденциальности

Т.е. будет требоваться согласие с политикой конфиденциальности, полный текст которой будет показан во всплывающем окне при клике на ссылку.

Также в админке появился раздел «Конфиденциальность». Он доступен в меню «Пользователи». Здесь можно контролировать всё, что связано с этой новой функцией, а также просматривать пользователей, которые подтвердили свое согласие с политикой.

 раздел Конфиденциальность

Также хочу отметить, что если вы не планируете использовать данный функционал на сайте, не забудьте отключить все плагины, которые с ним связаны, чтобы не создавать лишнюю нагрузку на сервер:

Плагины конфиденциальности

2. Менеджер действий пользователей

Благодаря внедрению функционала политики конфиденциальности, у Joomla 3.9 появилась возможность хранить больше пользовательской информации. Теперь нам доступен такой инструмент, как журнал действий пользователя.

Вы можете найти этот журнал в админке, в разделе меню Пользователи.

Журнал действий пользователя

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

Данный функционал особенно полезен, когда над сайтом работает одновременно несколько человек с разными уровнями доступа. Администратор теперь может все контролировать в удобном виде.

В общих настройках вы можете выбрать список событий, которые будут записываться в журнал, а также включить запись IP-адресов пользователей.

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

3. Добавлены примечания для статей Joomla

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

В материале вы можете заполнить поле примечания:

Поле примечания в материале

А затем вы увидите это примечание в списке материалов (правда пока оформление оставляет желать лучшего):

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

Довольно скучная функция, но кому-то может очень пригодиться.

4. Поиск в админке по содержимому статей

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

Это очень удобно, когда вам нужно быстро внести исправление в какую-то статью. Раньше нужно было сначала найти ее поиском на фронтенде, затем скопировать заголовок, затем найти поиском в админке и только потом исправлять.

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

Важный момент! Поиск по контенту не работает по умолчанию. Чтобы искать в содержимом статьи, вам нужно использовать в поиске конструкцию:

CONTENT: Текст запроса

Аналогично это сделано и для поиска по автору и по ID:

AUTHOR: Текст запроса

ID: Текст запроса

Поиск в админке по содержимому статей

Не бойтесь, что забудете эти ключи, они появляются во всплывающей подсказке при активации поля поиска.

В русской версии пока ключи в подсказке не появляются, но как только обновят локализацию, их будет видно.

5. Загрузка модуля в статью по его ID

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

{loadposition}

Или

{loadmodule}

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

В Joomla 3.9 появилась новая конструкция для вставки модуля в статью. Теперь мы можем вставить строго определенный модуль, указав его ID. Для этого используется конструкция:

{loadmoduleid ID-модуля}

Например:

Если вы используете стандартный редактор Joomla TinyMCE, то всё еще  проще. Вы можете использовать кнопку Модуль:

Кнопка Модуль

и далее выбрать нужный вам модуль во всплывающем окне:

Загрузка модуля в статью по его ID

Это удобно.

6. Новое дополнительное поле Repeatable

Лично для меня, это, наверное, самое полезное нововведение. Думаю, его оценят и многие из вас.

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

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

Проще всего объяснить это на примере. Предположим, вы хотите добавить к статье дополнительные изображения в конце (или слайдер изображений). У разных статей количество дополнительных изображений может отличаться. Другими словами, к одной статье нужно добавить 3 изображения, а к другой 5.

Первое, что приходит в голову для решения этой задачи – использовать дополнительные поля. Но хорошенько всё обдумав, понимаешь – нет. Да, можно создать 10 дополнительных полей с типом Медиа, но это костыль. И к тому же, что делать, если нужно выводить не только изображение, но и подпись к нему? Или, например, требуется возможность задавать атрибут ALT для каждого изображения отдельно. Создавать еще 10 текстовых полей? Это не дело.

Новое поле Repeatable, появившееся в Joomla 3.9, как раз призвано решить эту проблему.

Давайте посмотрим, как решается с его помощью описанная выше задача создания блока дополнительных изображений.

Сначала создаем новое поле и задаем у него в настройках другие поля для изображения и текста:

Создание поля Repeatable

Теперь, очень удобным способом мы можем добавить всю необходимую информацию к статье:

Заполнение поля Repeatable в статье

И на сайте, в статье, видим введенные данные:

Отображение поля Repeatable

Вы скажете, что изображение не вывелось, как предполагалось. Всё правильно. Вывелся путь к изображению. Всё остальное – это уже просто вопрос оформления. Используя полученные данные, вы можете оформить дополнительные изображения так, как только пожелаете. А используя еще и следующую новую функцию, вы получите в Joomla непревзойденную гибкость в работе с дополнительными полями.

7. Возможность создания альтернативных макетов для дополнительных полей

В пункте выше мы познакомились с новым дополнительным полем  Repeatable. В нем прекрасно всё, кроме одного – результат вывода значений представлен в виде текста.

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

В Joomla 3.9 появилась возможность создания альтернативных макетов для настраиваемых полей.

Удобство этого нововведения сложно переоценить. Для нашего примера с галереей теперь вы можете один раз создать альтернативный макет для поля Repeatable, задать его именно для поля галереи, и после этого у вас на сайте будет показываться уже не сухой текст с путями к картинкам, а полноценные изображения, которые формирует альтернативный макет.

Давайте посмотрим, как это работает в действии.

1) Копируем файл:

/components/com_fields/layouts/field/render.php

В используемый шаблон Joomla:

/templates/ВАШ_ШАБЛОН/html/layouts/com_fields/field

Или:

/templates/ ВАШ_ШАБЛОН /html/layouts/com_content/field

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

Мы используем первый вариант.

2) Переименовываем скопированный файл render.php так, чтобы было понятно, для чего нужен новый макет (имя файла не должно содержать нижнего подчеркивания!).

Я переименую файл в gallery.php.

Таким образом, имеем новый файл:

/templates/ВАШ_ШАБЛОН/html/layouts/com_fields/field/gallery.php

3) Вносим в новый файл изменения так, как это нужно для оформления галереи.

4) В настройках дополнительного поля Repeatable выбираем альтернативный макет gallery

Альтернативный макет gallery

И вуаля! Смотрим, как теперь выглядит галерея на сайте:

Галерея на сайте

8. Возможность показать уменьшенное или полное изображение в модуле новостей

Кто-то из вас может быть помнит статью про добавление изображений в стандартный модуль новостей Joomla. Тогда в ней я описывал прием, позволяющий добавить изображения в модуль материалов Joomla.

В Joomla 3.9 разработчики добавили в модуль новостей кнопку, позволяющую выводить уменьшенное или полное изображение для материалов:

Кнопка, позволяющая выводить уменьшенное или полное изображение для материалов

Так что теперь использовать прием из статьи необязательно.

9. Возможность показывать статьи только определенного автора в модуле последних новостей

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

Выбор автора

Мелочь, а приятно.

10. Создание контента с фильтрами в меню панели управления

Достаточно сложно описать эту функцию. Она даже для меня закопана очень и очень глубоко. Лучше покажу на картинке:

Создание контента с фильтрами в меню панели управления

Заметили, что в меню Материалы  появился новый пункт Статьи блога? Этот пункт создал я. Нет никаких хаков. Только манипуляции с настройками Joomla.

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

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

11. Убраны параметры &limitstart=0 и &start=0 в пагинации

Есть в Joomla 3.9 и щепотка SEO-оптимизации. Хотя это, скорее, исправление прошлых недочетов.

Если у вас на сайте есть разбиение на страницы (или, как это еще называется, пагинация), то теперь при возвращении на первую страницу к URL в пагинации не добавляются параметры &limitstart=0 и &start=0. Тем самым не создаются дубли первых страниц.

Хотя, как по мне, этот фикс не слишком уж и полезен. Правильное оформление пагинации, с использованием next и prev, в Joomla по-прежнему отсутствует.

12. Добавлена поддержка Invisible ReCaptcha

Да, теперь Joomla поддерживает Invisible ReCaptcha. Для тех, кто не в курсе, это новый способ борьбы со спамом от Google.

Вы можете установить Invisible ReCaptcha на форму регистрации или форму обратной связи. Пользователю не придется вводить код с картинки или ставить галочку «Я не робот». Скрипт автоматически проанализирует поведение пользователя и, если поверит, что это человек, то пропустит отправку формы. Ну а если не поверит, то снова придется искать, где на картинке дорожные знаки.

Активировать Invisible ReCaptcha можно в настройках  соответствующего плагина:

Настройки плагина Invisible ReCaptcha

Вам, как обычно, понадобятся ключи, получить которые можно после регистрации на сайте ReCaptcha.

Заключение

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

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

Об авторе
Wedal
(Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.
Основной профиль – создание сайтов и расширений на CMS Joomla.
Добавить комментарий

Комментарии  
1
Спасибо за перевод, про допполя есть обширная статья?
3
Alex, вообще-то это не перевод.

Статья про настраиваемые поля здесь: https://wedal.ru/uroki-joomla/joomla-custom-fields-nastraivaemye-polya-v-joomla.html
1
Спасибо за статью!
Как всегда, понятно и полезно: и мне, разработчику, и начинающим.
Так держать!
1
Виталий, большое Вам спасибо!!!
Меня заинтересовала возможность создания мини-галереи с помощью полей. По моему бесплатных аналогов этому не существовало до сих пор. Может быть, я ошибаюсь.
Подскажите, пожалуйста, по этому абзацу:
"Таким образом, имеем новый файл:
/templates/ВАШ_ШАБЛОН/html/layouts/com_fields/field/gallery.php
3) Вносим в новый файл изменения так, как это нужно для оформления галереи."

Как Вы так быстро преобразовали список файлов (картинок) в галерею??? Где про это почитать можно (преобразование с помощью php)?
Конечно, хочется сделать на вроде как на сайте адм. Липецкой области - http://admlip.ru/news/masshtabnyy_festival_gto_sredi_trudovykh_kollektivov_zavershitsya_bitvoy_v_atlante/
Ну хотя бы просто для пользователей облегчить работу по подгрузке фоток в галерею материала...

И, если можно, еще 2 вопроса: можно ли с помощью полей добавлять файлы к материалу (делать вложения)? Просто хочется по минимуму использовать сторонние расширения, от которых часто проблемы ловятся.
И можно ли на Joomla в свете последних событий (санкции, контрсанкции, зарубежное ПО и т.п.) создать сайт для администрации района (ОМСУ)?
2
Роман, преобразовать список картинок в галерею довольно просто. На входе вы имеете список путей к изображениям. В макете (в коде PHP), вам нужно подставить эти пути в html-верстку картинок (тегов IMG). Если нужна галерея с динамикой, вроде той, что вы привели в примере, потребуется также JavaScript. Либо можно найти готовый jQuery-плагин галереи и внедрить его в макет. Либо, если у вас используется шаблон с Bootstrap, внедрить в макет Bootstrap Carusel.
Всё, что я описал выше, требует некоторых навыков программирования, но совсем небольших.

Насчет аналогичной загрузки не изображений, а файлов, пока, увы, это не работает. Хотя это было бы очень полезно. В поле Repeatable вы можете добавить поле типа Media, но, как я понял, оно работает только с изображениями, но не файлами.
Если вам нужен этот функционал, то лучше обратиться к SEBLOD. Это будет бесплатно и из коробки. И хотя разобраться с SEBLOD гораздо труднее, чем с Joomla, возможности там несравнимо шире.

Насчет использования Joomla для сайта администрации - да. Я видел много сайтов гос. учреждений, использующих Joomla. Joomla - CMS с открытым кодом, распространяющаяся по лицензии GPL. Запретить ее использовать, это как запретить использовать Linux. Другой вопрос - что часто начальники, отвечающие в таких учреждениях за IT, выбирают Bitrix. Почему? Потому что за него нужно платить. Раз нужно платить, значит, в случае чего, будет на кого показать пальцем. Да и зачем брать бесплатное - не свои же деньги тратят... Примерно в таком ключе принимаются решения в бюджетных организациях. К сожалению, сталкивался с этим на практике.
1

Цитирую Wedal:

Роман, преобразовать список картинок в галерею довольно просто. На входе вы имеете список путей к изображениям. В макете (в коде PHP), вам нужно подставить эти пути в html-верстку картинок (тегов IMG). Если нужна галерея с динамикой, вроде той, что вы привели в примере, потребуется также JavaScript. Либо можно найти готовый jQuery-плагин галереи и внедрить его в макет. Либо, если у вас используется шаблон с Bootstrap, внедрить в макет Bootstrap Carusel.
Всё, что я описал выше, требует некоторых навыков программирования, но совсем небольших.


Большое спасибо!
Сейчас как раз читаю Ваши статьи по работе с шаблоном Bootstrap. Может быть, соединю знания по полям и шаблону)). Что-то сколько ни искал шаблон для ОМСУ - по душе ничего нет (из бесплатного)). Попробую по Вашим статьям на Bootstrap что-нибудь замутить.
Извиняюсь за, возможно, не очень умный вопрос: а код Bootstrap карусели



.......

просто вставить в полученный файл gallery.php??

И по поводу вложений в материалы. В настоящее время на нашем сайте на Joomla 1.5 (я делал в 2009 г. - с тех пор многое изменилось, трудно мне сейчас "въехать" в Joomla 3.9, Bootstrap)) мы используем компонент Attachments (ссылка - https://extensions.joomla.org/extensions/extension/directory-a-documentation/downloads/attachments/). Хочется сделать новый сайт на Joomla 3.9 с шаблоном Bootstrap. Не посоветуете ли Вы замену компоненту Attachments для вложений в материалы?
1
Роман,
Если вы просто вставите код карусели в макет, то она будет всегда показывать одинаковые изображения. Вам нужно подставить в изображения пути src из переменных PHP. Вы можете посмотреть как это сделано в моем модуле карусели:
https://wedal.ru/rasshireniya-joomla/wedal-joomla-slider-v1-1-besplatnyj-modul-slajdshou-dlya-joomla-ot-wedal-ru-obnovlenie.html

Вложения вы можете делать с помощью редактора JCE. В нем очень удобно загружать файлы и делать на них ссылки. Т.е. просто в конце статьи добавляете ссылку и загружаете на сервер файл прямо через редактор.
2
Добрый вечер!
Вы меня уж извините. Я спустя огромное количество времени вернулся к вопросу преобразования списка файлов (картинок) в галерею.
Никак не пойму какой все-таки код в переименованный файл render.php (теперь gallery.php) вставить...
1
Про Bitrix - это в яблочко.
1
Благодарю за ценную информацию, благодаря вам смог сделать сайт с использованием кастомных полей. Поскольку раньше не было поля repeatable пришлось вставлять костыли. Однако сейчас обновил систему и пытаюсь переделать те костальные поля на новый лад. Как обычно инфы на эту тему почти 0. Только у вас что-то дельное нахожу.
Как я делаю на этот раз:
1) в шаблоне материала в нужном месте пишу
2) появляется список images/1.imgimages/2.imgimages/3.img
3) делаю переопределение лайаута, копирую папку com_field в свой шаблон. В настройках указываю новый шаблон
4) на этом затык. Можете поделиться вашим файлом? не пойму как с ним работать что в нем править чтобы хотяб добавить те самые простые теги

Буду огромно благодарен
2
В своем шаблоне вставляем этот код и радуемся

Код:


<?php // $this->item->jcfields[42] это нужное поле, вставляем его по ID, в данном
// случае это repeatable field $fieldValue = $this->item->jcfields[42]->rawvalue;
if ($fieldValue !== '') { // Далее берем код из плагины/поля/repeatable/html и переделываем как надо
$fieldValues = json_decode($fieldValue, true);
echo '<div class="">';
foreach ($fieldValues as $value) {
echo '<img src="' . implode(', ', $value) . '" alt />';
}
echo '</div>';
} ?>

1
koshsh, у меня так:

Код:


<div class="field-value">
<?php
foreach (json_decode($field->rawvalue) as $key => $fvalue) {
$i = 0;
foreach ($fvalue as $f) {
$gallery[$key][$i]=$f;
$i++;
}
}

foreach ($gallery as $image) { ?>

<div>
<img src="<?php echo $image[0] ?>" alt="<?php echo $image[1] ?>">
<div>
<?php echo $image[1] ?>
</div>
</div>

<?php } ?>
</div>

0
Добрый день
Только обновился до 3ю9
Пока сам честно говоря не копал
перестали сохраняться материалы
в строке навигации видно что урл без имени домена
то есть вообще выбрасывает по нажатию "сохранить" в белый лист
Что это?
Спасибо
0
Дмитрий, посмотрите эту тему. Не факт, что то, но очень похоже:
https://wedal.ru/forum/oshibki-i-reshenie-problem/6041-oshibka-pri-obnovdenii-joomla-do-3-9-0.html
Попробуйте вариант, описанный в теме, в качестве решения.
1
Отличный обзор, благодарю! Как раз требовалось вывести модуль в материале, думал как это сделать.
0
Спасибо за отличное описание! Понравилось. Жаль что нет медио поля в котором можно было бы указывать каталог и он сам выводил список файлов. Ну как с картинками. А так же возможность выбирать формат выводимых файлов из каталога. Возможно это как то можно организовать стандартными средствами joomla ?
0
Привет! В поле Repeatable можно ли добавить дополнительные типы полей, например SQL?
0
Dima, нет, только те, которые доступны там. Ну и вообще - добавлять SQL в Repeatable (т.к. в цикл) - плохая идея.
0
Виталий, у меня после установки 3.9 (3.6.2 --> 3.9.14) в google chrome перестал нормально работать редактор - основное поле для редактирования недоступно вне зависимости от того, каким редактором пользуешься. Причем в других браузерах (Firefox, Yandex, Vivaldi) все работает нормально. Не встречались с такой проблемой случайно?
0
Сергей, попробуйте отчистить кэш в браузере. Всё должно работать нормально. Если не поможет, попробуйте посмотреть на другом устройстве. Первым делом нужно исключить проблему браузера, и только потом думать, что может быть на сайте.
0
Скажите пожалуйста как настроить плагин Политики Конфиденциальности System - Privacy Consent, как показано в первом пункте. У меня при его активации никаких изменений во вкладке "регистрация" не происходит. Только после подтверждения регистрации через почту при переходе по ссылке высвечивается в ужасном виде этот плагин. Скачал чистую джумла 3.9.x - аналогичная проблема. Так же нашел плагин "Материалы - Подтверждение согласия" по идее он должен предоставлять желаемый чек бокс в любом модуле.. Однако как этот материал добавить на страницу регистрации понять не могу
0
Денис, возможно вы используете шаблон Joomla, в котором этот функционал не оформлен. Т.е. шаблон вышел раньше, чем обновление Joomla с функционалом политики конфиденциальности. Проверить очень просто - временно замените ваш шаблон на стандартный шаблон Joomla и посмотрите страницу регистрации. Если всё будет как на картинке в этой статье, значит дело именно в шаблоне. Исправить это можно только ручной доработкой оформления и макета в вашем шаблоне.
1
Я скачал чистую джумлу использовал стандартные шаблоны биз3 и протестар. эффект аналогичный...
сначала регистрация, после подтверждение по почте и далее при первом входе в учетную запись выводится окно которое по факту говорит о регистрации заново но уже с пунктом согласия с персональными данными. возможно виноват модуль Виртуемарт.
0
Я разобрался.. всему виной авторизация Виртуемат... что бы "Политика персональных данных" отображалась корректно необходимо этот модуль интегрировать в регистрацию виртуемарт. подскажите пожалуйста, где находится шаблон этого модуля?
0
Денис, лучше сделайте немного иначе. Есть плагин VM, уже установленный у вас, который перенаправляет авторизацию с Joomla на VM. Вам нужно у него в настройках изменить опцию, чтобы перенаправление не происходило.
VM Framework Loader during Plugin Updates
В нем есть опция Redirect Joomla to VirtueMart registration. Ее нужно отключить.
0
Спасибо за инфу!
Подскажите пожалуйста как добавить тип поля JCE File Browser (media) в повторяемую форму repeatable
0
Руслана, repeatable не всегда работает с полями, которые требуют JS. Вы можете проверить работоспособность так:
1) Добавить материал с повторяемым полем
2) Добавить нужное количество повторений и сохранить, не заполняя поля
3) После сохранения, возможно, заработают скрипты и файловый браузер будет подгружаться.