Новости Joomla

👩‍💻 Joomla включена в программу Google Summer of Code 2026.

👩‍💻 Joomla включена в программу Google Summer of Code 2026.

Google Summer of Code (GSoC) - программа компании Google, которая позволяет участникам программы под руководством опытных наставников писать код для организаций, занимающейся открытым исходным кодом. Joomla принимает участие в этой программе не в первый раз и в 2026 году снова включена в список GSoC. Для программы утверждается список "идей", воплотить которые должны участники под руководством наставников.

Проекты Joomla в рамках программы GSoC 2026.

Проект I: Ajax-бэкенд.
- Действия в административной панели без необходимости обновлять страницу.
- Автоматическое сохранение содержимого во время редактирования.
- Расширенный фильтр - поиск и фильтрация по пользовательским полям.

Проект II: Автоматизация рабочих процессов (workflow + task scheduler).
Joomla имеет функцию процессов и планировщика задач. Теперь эти две функции следует объединить, чтобы пользователь мог настраивать назначенные рабочие процессы таким образом, чтобы переходы выполнялись автоматически, с возможностью точного определения времени. Должна быть возможность создавать циклы или прямые запланированные рабочие процессы. Предполагается, что интерфейс должен учитывать хороший пользовательский опыт, удобство использования и современные стандарты доступности. Ожидается, что будет добавлен интерфейс для управления процессами и их расписанием на страницах категорий и материалов. Так же ожидается, что сторонние компоненты также смогут воспользоваться этим функционалом.

Проект III: Мультикатегории.
В настоящее время Joomla! не позволяет назначать один элемент нескольким категориям. Хотя система тегов часто используется в качестве замены, существует острая потребность в нативной поддержке нескольких категорий, чтобы привести Joomla! в соответствие с другими современными системами управления контентом.

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

Принять участие GSoC 2026
Подробнее о проектах Joomla GSoC 2026
Чат GSoC в Mattermost (международное сообщество Joomla)

Вышли релизы Joomla 6.0.3 и Joomla 5.4.3

Релиз Joomla 6.0.3 и Joomla 5.4.3

Проект Joomla рад сообщить о выпуске Joomla 6.0.3 и Joomla 5.4.3. Это релиз исправлений ошибок и улучшений для серии Joomla 6.0 и Joomla 5.4.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

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

В этой статье описаны все триггеры, которые вызываются через Event Dispatcher из administrator/components/com_fields/src/Helper/FieldsHelper.php, с привязкой к жизненному циклу (порядку этапов работы запроса), аргументам, изменяемым данным и дальнейшему распространению по Joomla. Это поможет вам работать с Joomla свободнее и не опасаясь при этом потерять изменения при очередном обновлении движка.

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

0 Пользователей и 1 Гость просматривают эту тему.
  • 14 Ответов
  • 6192 Просмотров
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Подскажите, каким образом при помощи open_basedir отделить сайты (директории доменов) друг от друга? Чтобы если один сайт оказался зараженным, вредонос не смог ничего прочитать или записать в директории других сайтов по соседству.

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

Сайты на VPS, т. е. доступ к конфигам у меня полный.
« Последнее редактирование: 22.04.2019, 14:56:58 от dm-krv »
*

sivers

  • Живу я здесь
  • 2606
  • 361 / 0
Если у вас Apache, то необходимо заменить Apache MPM-Prefork на Apache MPM-ITK - это можно сделать в ISP Manager, если используете его (на вкладке "Возможности" в разделе ВЕб-сервера). Либо переустановить его вручную. Лучше потренироваться на отдельном ВПС. Если взять связку нгинкс+пхп-фпм (апач в этом случае можно полностью выпилить), то там по умолчанию так все настроено. Далее надо под каждый сайт создавать своего пользователя и переносить сайты из общего каталога в каталоги этих пользователей. После перехода на apache-itc надо будет подправить имеющиеся конфиги. Если будете делать - вышлю более подробные инструкции (остались со времен апача).
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Не ISP - использую панель BrainyCP, стоить классическая связка LAMP, без nginx. Там и так можно отдельных пользователей делать, да только это убиться можно будет в процессе - слишком муторно и напоминает стрельбу по воробьям из орбитального лазера.

Поэтому и хочу хоть какую-то изоляцию через open_basedir попробовать сделать.
*

sivers

  • Живу я здесь
  • 2606
  • 361 / 0
Поэтому и хочу хоть какую-то изоляцию через open_basedir попробовать сделать.
Понятно. Отпишитесь, если найдете решение.
Может разные юзеры на каждый сайт и выглядит как перебор... Но это тоже подстраховка. У нас когда-то все сайты лежали у одного юзера. А потом вирус на локальной машине одного из разработчиков слил фтп-пароль и получил доступ сразу ко всем сайтам. Но и описанный вами способ заражения имел место )
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Нашел инструкция на зарубежных сайтах о том, как правильно применять open_basedir к настройкам хост.
Дописал директиву в настройки сайта:

<VirtualHost 188.127.249.225:80 >
ServerName rvp74.ru
ServerAlias http://www.rvp74.ru 
DocumentRoot /home/optima/sites/rvp74.ru

php_admin_value open_basedir "/home/optima/sites/rvp74.ru:."

<IFModule proxy_fcgi_module>
ProxyFCGISetEnvIf "true" SCRIPT_FILENAME "/sites/rvp74.ru%{reqenv:SCRIPT_NAME}"
<FilesMatch \.php$>
#SetHandler "proxy:unix:/var/run/php-fpm/php56w-optima.sock|fcgi://rvp74.ru/sites/rvp74.ru"
SetHandler "proxy:unix:/var/run/php-fpm/php56w-optima.sock|fcgi://localhost/"
</FilesMatch>
</IFModule>

<Directory "/home/optima/sites/rvp74.ru">

AllowOverride All
Require all granted

</Directory>
           
           
CustomLog /etc/httpd/vhost_logs/rvp74.ru_access combined
ErrorLog /etc/httpd/vhost_logs/rvp74.ru_error
DirectoryIndex index.php index.html index.htm

</VirtualHost>


Однако у меня после этого упал apache ругаясь на вписанную строку:

● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Mon 2019-04-22 13:19:37 +05; 24ms ago
Docs: man:httpd.service(8)
Process: 8538 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
Main PID: 8538 (code=exited, status=1/FAILURE)
Status: "Reading configuration..."

Apr 22 13:19:36 rvp74.ru systemd[1]: Starting The Apache HTTP Server...
Apr 22 13:19:37 rvp74.ru httpd[8538]: AH00526: Syntax error on line 6 of /etc/httpd/vhost.d/rvp74.ru.conf:
Apr 22 13:19:37 rvp74.ru httpd[8538]: Invalid command 'php_admin_value', perhaps misspelled or defined by a module not included in the server configuration

Apr 22 13:19:37 rvp74.ru systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Apr 22 13:19:37 rvp74.ru systemd[1]: Failed to start The Apache HTTP Server.
Apr 22 13:19:37 rvp74.ru systemd[1]: Unit httpd.service entered failed state.
Apr 22 13:19:37 rvp74.ru systemd[1]: httpd.service failed.


Подскажите, куда копать. Почему php_admin_value не сработала?
« Последнее редактирование: 22.04.2019, 11:44:04 от dm-krv »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
потому что у вас php не как модуль апача, а как php-fpm. добавляйте это в конфигах php-fmp, а не апача.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
потому что у вас php не как модуль апача, а как php-fpm. добавляйте это в конфигах php-fmp, а не апача.

Нашел ровно один конфиг внутри каталога:
Код
/etc/php56w/php-fpm.d
Но ведь он применяется ко всем сайтам использующим эту версию php, а мне надо конфиги к каждого отдельному хосту. Нельзя ли здесь ничего сделать? Предопределить конфиг к конкретному виртуальному хосту?
« Последнее редактирование: 22.04.2019, 12:43:49 от dm-krv »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
вы не поняли. или я неправильно выразился :) у вас есть блок
Код
<IFModule proxy_fcgi_module>
...
вот в нем и добавляйте
Код
ProxyFCGISetEnvIf "true" PHP_ADMIN_VALUE "open_basedir=/home/optima/sites/rvp74.ru:."
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
вы не поняли. или я неправильно выразился :) у вас есть блок
Код
<IFModule proxy_fcgi_module>
...
вот в нем и добавляйте
Код
ProxyFCGISetEnvIf "true" PHP_ADMIN_VALUE "open_basedir=/home/optima/sites/rvp74.ru:."

Работет  :D

Для проверки использовал небольшой скрипт, который показывает содержимое каталога на уровень и выше и там же создает тестовый файл:
Код
<?php

$files = scandir('../');

foreach ($files as $file) {
    echo $file . "<br>";
}

$test = "Проверка 7";

file_put_contents('../test.txt', $test);

?>

И если до установки директивы он все показывал и тестовый файл успешно создавал, то после установки директивы, как отрезало - ничего не показывает и запись на уровень выше тоже не идет.

Dmitry_stas, огромное спасибо, от души) Прям реально помог и сильно.
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Для тех, кто зашел сюда полюбопытствовать, информирую, что для нормальной работы Joomla кроме open_basedir нужно еще две директивы рядом вписать, а именно (ниже примеры):
Код
ProxyFCGISetEnvIf "true" PHP_ADMIN_VALUE "open_basedir=/home/optima/sites/rvp74.rf"
ProxyFCGISetEnvIf "true" PHP_ADMIN_VALUE "upload_tmp_dir=/home/optima/sites/rvp74.rf/tmp"
ProxyFCGISetEnvIf "true" PHP_ADMIN_VALUE "session.save_path=/home/optima/sites/rvp74.rf/tmp"

Выяснилось все экспериментально, методом тыка и гугления.

upload_tmp_dir - определяет каталог для временного хранения загруженного файла. Если указан параметр open_basedir, то php будет пытаться открыть стандартную папку /tmp, то есть попытается выйти за пределы разрешённой директории и в результате будет выдавать ошибку, если захотите обновить Joomla.

session.save_path - все аналогично, только это папка для хранения сессий php.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
или можно в Информации о PHP посмотреть куда upload_tmp_dir и session.save_path ссылаются, и добавить этот каталог в open_basedir
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
или можно в Информации о PHP посмотреть куда upload_tmp_dir и session.save_path ссылаются, и добавить этот каталог в open_basedir

Тоже вариант, только смысл сайтам давать доступ к временный файлам и сессиям друг-друга?

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

Код
ProxyFCGISetEnvIf "true" PHP_ADMIN_VALUE "disable_functions=dl,shell_exec,exec,system,passthru,proc_open,proc_nice,socket_create,socket_open,proc_get_status,proc_close,proc_terminate,posix_mkfifo,popen"

Попробовал, вроде бы все основное в Joomle работает нормально, ничего не отвалилось. Хотя допускаю, что некоторые вещи могут перестать работать после включения этой директивы.

Собственно считаю на этом тему закрытой. Все работает и теперь могу вздохнуть чуть более спокойно)
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
смысл сайтам давать доступ к временный файлам и сессиям друг-друга?
а они не будут (по крайней мере не должны, если php-fpm настроен верно) его иметь в любом случае. но можно конечно и так, как сделали вы, указать разные.

В интернетах также пишут, что для обеспечения большей безопасности можно запретить некоторые потенциально опасные функции
имхо точно также не имеет смысла. всего "потенциально опасного" вы не запретите, иначе не будет работать многое, поэтому имхо это просто запрет ради запрета. имхо достаточно того, что вы ограничили выполнение open_basedir
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Блин, опять проблемы. Почему то использование директивы:
Код
ProxyFCGISetEnvIf "true" PHP_ADMIN_VALUE "upload_tmp_dir=/home/optima/sites/rvp74.rf/tmp"

Полностью отменяет open_basedir - он банально прекращает работу, что я наблюдаю через тестовый скрипт. Не знает никто, в чем может быть проблема? Может запись неправильная?
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Все, нашел корень проблемы. Правильная запись выглядит так:

ProxyFCGISetEnvIf "true" PHP_ADMIN_VALUE "open_basedir=/home/optima/sites/rvp74.rf:. \n upload_tmp_dir=/home/optima/sites/rvp74.rf/tmp \n session.save_path=/home/optima/sites/rvp74.rf/tmp"

Директивы все пишутся внутри кавычек и разделяются символьным переносом строк \n
Только в таком виде все работает.
« Последнее редактирование: 22.04.2019, 17:50:05 от dm-krv »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[РЕШЕНО] Добавить класс при условии JS?

Автор warlocksp

Ответов: 21
Просмотров: 3077
Последний ответ 26.02.2020, 11:07:53
от robert
Программное создание материалов в Joomla 3.8+ [ РЕШЕНО ]

Автор dm-krv

Ответов: 36
Просмотров: 4015
Последний ответ 12.12.2019, 21:06:08
от MDenis
Бесплатный звонок с сайта, через интернет [РЕШЕНО]

Автор dm-krv

Ответов: 8
Просмотров: 1045
Последний ответ 03.04.2019, 09:43:32
от dm-krv
JQuery: как проигнорировать cors при парсинге? [РЕШЕНО]

Автор dm-krv

Ответов: 20
Просмотров: 3928
Последний ответ 17.01.2019, 20:11:58
от fsv
Скроллинг к элементу с определенным классом [РЕШЕНО]

Автор dm-krv

Ответов: 1
Просмотров: 2217
Последний ответ 05.11.2018, 08:51:39
от dm-krv