Новости Joomla

Свои типы полей в Joomla.Это большая тема, о которой можно говорить очень много

Свои типы полей в Joomla.Это большая тема, о которой можно говорить очень много

👩‍💻 Свои типы полей в Joomla.Это большая тема, о которой можно говорить очень много. Самое главное, что возможности применения ограничиваются только вашей больной фантазией. Вы строите интерфейс своего модуля или плагина и вам нужно подтянуть данные из сторонней системы (список чего-нибудь по какому-нибудь API), чтобы сохранить выбранный id в Joomla. Или сделать какую-то проверку и в зависимости от неё показать то или иное сообщение пользователю. Для этого подойдут свои пользовательские типы полей. Интерфейс Joomla по большей части описан в XML-файлах. У каждого из них свои параметры. Некоторые не описаны в документации (manual.joomla.org), поэтому самым любопытным будет полезно заглянуть в собственно файлы фреймворка по пути

libraries/src/Form/FormField.php, а так же в
libraries/src/Form/Fields. У каждого класса поля перечислены его специфические свойства, которые можно описывать в XML. А в своём типе поля вы можете устанавливать эти значения программно. В моём модуле WT Quick links под капотом происходят изменения. Теперь для работы (в админке) ему нужен вспомогательный плагин. А в самом модуле нам бы проверить, а не выключен ли он? В Joomla есть тип поля Note - заметка. Его можно использовать для вывода примечаний.

<field type="note"     name="your_note_for_user"     label="Заголовок примечания"     title="Альтернативный способ для заголовка"     description="Текст примечания"     class="col-12 alert alert-info"     heading="h1"     close="true"/>
heading - указывать уровень заголовка.
close - позволяет закрыть это примечание. В классе поля
libraries/src/Form/Field/NoteField.php описана логика вывода. И в принципе оно нам подходит для нашей задачи. Но оно будет выводить сообщение всегда, а нам нужно только тогда, когда плагин отключён.Поэтому берём и создаём свой класс поля, который мы унаследуем от
NoteField. Это значит, что у нас в руках будет весь инструментарий стандартного поля
Note + то, что мы сами добавим. В XML-манифест добавляем наше поле
<field type="systempluginstatus"      name="systempluginstatus"     addfieldprefix="Joomla\Module\Wtquicklinks\Site\Fields"/>
-
type - имя файла и класса,-
addfieldprefix - указываем namespace к нашему классу, может быть любой нам нужный-
name - нельзя полю без имени...Это означает, что Joomla будет использовать класс поля из файла
modules/mod_wt_quick_links/src/Fields/SystempluginstatusField.php.А в классе поля будет написано следующее:
<?php// namespace для атрибута addfieldprefixnamespace Joomla\Module\Wtquicklinks\Site\Fields;// нельзя напрямую обращаться к этому файлуdefined('_JEXEC') or die;// подключаем родительский класс для переопределенияuse Joomla\CMS\Form\Field\NoteField;use Joomla\CMS\Language\Text;use Joomla\CMS\Plugin\PluginHelper;// имя класса и имя файла точь-в-точьclass SystempluginstatusField extends NoteField{     protected $type = 'Systempluginstatus';     protected function getLabel()          {               // если плагин не включён               if(PluginHelper::isEnabled('system','wtquicklinks')) {                    // меняем свойства родительского класса                    $this->class = 'alert alert-danger w-100';                    $this->element['label'] = '⚠️ А-а-а-а!';                    $this->element['description'] = 'Плагин не включён!!';                    // и просто рендерим его с нашими свойствами                    return parent::getLabel();               }          // А иначе всё хорошо, скрываем поле из виду.          $this->parentclass = 'd-none';          return '';     }}
Просто и удобно. И людям приятно, что о них позаботились и рассказали почему что-то не работает.@webtolkru#joomla #php #webdev #разработка

Обновлена информация в Плане развития Joomla

👩‍💻 Обновлена информация в Плане развития Joomla.Здесь собрана информация о датах релизов, описаны принципы версионирования, указаны ответственные за релизы, а так же даты окончания поддержки релизов. Опираясь на эту информацию вы можете планировать развитие ваших интернет-проектов.👩‍💻 Что нового?⛔️ Joomla 4.Дата окончания исправления ошибок безопасности в версии 4.x - 14 октября 2025г. ⚠️ После этой даты Joomla 4 прекратит получать какие-либо обновления, в том числе безопасности - вообще. Рекомендуем обновить ваши сайты до актуальной Joomla 5.✅ Joomla 5.- Дата окончания исправления ошибок в версии 5.x - 13 октября 2026г.- Дата окончания исправления ошибок безопасности в версии 5.x - 12 октября 2027 года.- Текущая актуальная (на момент написания заметки) версия - 5.3.1.- Опубликовано расписание выхода релизов Joomla 5.4. Стабильный релиз ожидается 14 октября 2025 года.✅ Joomla 6.- Дата окончания исправления ошибок в версии 6.x - 17 октября 2028г.- Дата окончания исправления ошибок безопасности в версии 6.x - 16 октября 2029г.- Опубликовано расписание выхода релизов Joomla 6.0. Стабильный релиз ожидается 14 октября 2025 года.- Для разработчиков уже доступна Joomla 6.0.0-alpha1.✅ Joomla! Framework.Обновлена информация о Joomla! Framework - полноценном PHP-фреймворке для разработки. Он в версиях 1.х и 2.х был самостоятельным параллельным проектом, однако начиная с версии Joomla 4.0 стал её основой. Добавлена информация о Joomla! Framework 3.x, который вышел 6 октября 2023 года. Его можно использовать в тех случаях, когда вам в проекте не нужна CMS Joomla целиком.Подробнее на сайте Joomla-сообщества Joomlaportal.ru#joomla #community

Компания JetBrains рассказала о своей поддержке Joomla

Компания JetBrains рассказала о своей поддержке Joomla

JetBrains - один из мировых лидеров в разработке программного обеспечения для разработчиков. Её программные продукты - это IDE - профессиональные среды разработки, которые отличаются от простого блокнота/редактора с плагинами набором всевозможных инструментов для разработчиков, глубоким анализом кодовой базы, подсказками по ней и по языку программирования, отладкой ошибок и многим-многим другим. Одним из самых известных продуктов компании является IDE PHP Storm, который можно назвать отраслевым стандартом PHP-разработчика.

В статье How PhpStorm Helps Maintain PHP Open-Source Projects: Interviews and Real-World Examples в блоге компании описываются Open Source проекты, которым JetBrains оказывает поддержку (это могут быть бесплатные лицензии для разработчиков для некоммерческих проектов).

В список попали:

  • PHPUnit - фреймворк для unit-тестирования в PHP
  • Doctrine DBAL - библиотека для PHP, которая предоставляет лёгкий и гибкий слой для коммуникации с базой данных. Она поддерживает различные базы данных через единый и согласованный API.
  • CodeIgniter — популярный MVC-фреймворк для разработки на PHP
  • Joomla! - наша любимая CMS.

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

🙏 За ссылку спасибо участнику нашего сообщества Ринату Кажетову (@rkazhet).

Подпишитесь на @joomlafeed

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

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Здравствуйте!

На админской части сайта после запуска в ней по всей видимости тяжелой задачи по подхватыванию и распознаванию 180 подгруженных через ftp картинок, теперь отображается 504 Gateway Time-out с подписью nginx. В логе ошибок примерно такое
2016/01/11 13:28:14 [error] 7678#0: *1227364 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 62.76.80.15, server: mysite.ru, request: "GET /administrator HTTP/1.1", upstream: "http://mysite.ru:81/administrator", host: "www.mysite.ru"
Пытался увеличить лимиты в nginx.conf и делал service nginx restart после этого, но то ли слабо повысил, то ли ещё что, админка пока не открывается

Как можно разобраться в причине ошибки и её устранить? Может надо весь VPS перезагрузить и все заработает?
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Ничего не надо делать.
ну ошибка, дальше работаем.
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Ничего не надо делать.
ну ошибка, дальше работаем.
так мне надо в админку, а она открывается этой ошибкой :)
*

wishlight

  • Гуру
  • 5051
  • 314 / 1
  • От 300 руб быстрый хостинг. Сервера.
Логи nginx посмотрите. И нагрузку на VPS в это время.
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Логи nginx посмотрите. И нагрузку на VPS в это время.
в логах указано то, что я привел в первом посте. А как узнать нагрузку на VPS на какой-то конкретный момент в прошлом?
Вот вывод текущего top:
*

dmitry_stas

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

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
в другом браузере пускает в админку?
похоже я словил кэш :) сбросил кэш хрома и заработало, полдня ушло... :) все, зарубил себе на носу

P.S.вопрос про нагрузку в любой момент прошлого остается актуальным
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
скорее не кеш, а в сессии сохранилось (и не удалилось, потому что 504) что-то, из-за чего каждый раз заново был запуск
по всей видимости тяжелой задачи по подхватыванию и распознаванию 180 подгруженных через ftp картинок
и так по кругу.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Yura Vakulenko

  • Захожу иногда
  • 238
  • 6 / 1
504 Gateway Time-out с

возможно, поможет предотвратить появление этой ошибки увеличение  max_execution_time (_http://php.net/manual/ru/info.configuration.php#ini.max-execution-time) для твоего PHP.
для конкретного скрипта можно используй set_time_limit() (_http://php.net/manual/ru/function.set-time-limit.php)
К примеру, в той функции, что загружает твои картинки - укажи set_time_limit(150) и обработай снова запрос. Посмотри на результат.

для всего сайта - напиши в httaccess
php_value max_execution_time 60
Глобально - измени max_execution_time в php.ini

Так же попробуй изменить max_input_time (_http://php.net/manual/ru/info.configuration.php#ini.max-input-time)

в логах указано то, что я привел в первом посте. А как узнать нагрузку на VPS на какой-то конкретный момент в прошлом?
Вот вывод текущего top:


Устанави на ВПС отличную утилиту мониторинга производительности системы с веб-интерфейсом. Советую Munin (munin-monitoring.org). У нее простые настройки.. ест мало памяти, дает обширную информацию, как по производительности самой системы (память, процессор, кэш, процессы в памяти, аптайм, запросы, хосты.. и прочее.. так же достаточно просто расширить функционал - установив дополнительные счетчики. Счетчики доступны на оф. сайте или в сети в виде текстовых файлов с алгоритмами.. ) Статистику смотришь через веб-интерфейс с любого браузера и с любой точки мира. (для этого просто установи веб-сервер, если не установлен..  и помести все файлы Munin в файловую систему веб-сервера, настрой .httaccess для доступа к статистике по учетным данным.)
« Последнее редактирование: 12.01.2016, 00:31:45 от Yura Vakulenko »
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
скорее не кеш, а в сессии сохранилось (и не удалилось, потому что 504) что-то, из-за чего каждый раз заново был запуски так по кругу.
Доброго утра! Спасибо. И как в этом случае надо выходить из ситуации?
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
для всего сайта - напиши в httaccess
php_value max_execution_time 60
Глобально - измени max_execution_time в php.ini
Спасибо за дельный совет, попробую воспользоваться как зависнет снова. Хотя вопрос, как я запущу задачу сновыми настройками php, если у меня снова будет 504 ошибка на весь экран?..
То, что вы в цитате посоветовали относится к Апачи. Для этого мне надо разобраться сначала, Апачи или Nginx у меня висит на админке. Прошу в этом помочь разобраться. Вот кусок настроек nginx.conf:
Спойлер
[свернуть]
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
PHP обрабатывается апачем, потом через нгинкс
Когда нгинкс не дожидается ответа (по дефолту 30 сек) он сам отдает 504
При это апач может дальше обрабатывать скрипт и может даже успешно его завершить если он успеет во временные рамки апача, по совету выше это 60 секунд.

Как вариант для выполнения долгих задач - временно (лучше временно) выставить секунд 600 (или сколько там точно хватит) и обращаться на сайт напрямую в апач по адресу site.ru:81/administrator
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
спасибо
Когда нгинкс не дожидается ответа (по дефолту 30 сек) он сам отдает 504
за это отвечает параметр proxy_read_timeout в настройках nginx?
Как вариант для выполнения долгих задач - временно (лучше временно) выставить секунд 600 (или сколько там точно хватит) и обращаться на сайт напрямую в апач по адресу site.ru:81/administrator
выставить для чего, где вы имели в виду?
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
спасибоза это отвечает параметр proxy_read_timeout в настройках nginx?
Не помню, почитайте доки

выставить для чего, где вы имели в виду?
php_value max_execution_time - вот этот параметр, чтоб скрипт отработал
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
server {
...
    proxy_connect_timeout       600;
    proxy_send_timeout          600;
    proxy_read_timeout          600;
    send_timeout                600;
...
}
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Yura Vakulenko

  • Захожу иногда
  • 238
  • 6 / 1
server {
...
    proxy_connect_timeout       600;
    proxy_send_timeout          600;
    proxy_read_timeout          600;
    send_timeout                600;
...
}

так как у вас работают одновременно 2 вебсервера - вам нужно одновременно производить настройки времени выполнения скриптов на 2-х серверах... и таким образом, чтобы они были одинаковыми.. чтобы и в апатч было, к примеру 600 сек. и в нджинкс - 600 сек..  а то выйдет именно таким образом, как написал ниже темны лорд Воланд )
---------------
PHP обрабатывается апачем, потом через нгинкс
Когда нгинкс не дожидается ответа (по дефолту 30 сек) он сам отдает 504
При это апач может дальше обрабатывать скрипт и может даже успешно его завершить если он успеет во временные рамки апача, по совету выше это 60 секунд.
-------------
а для того, можно  воспользоваться функц. ini-set() _http://php.net/manual/ru/function.ini-set.php что во время выполнения скрипта (функции.. ) изменяет глобальные значения конфиг. PHP. т.е. они будут одинаковыми для обоих серверов сразу..

вот, к примеру.. загружаете вы 2000 картинок на сервер в 1 раз..  это у вас выполняет функция upload_images()
откройте код этой функции и укажите в самом начале..
Код
ini_set('max_execution_time', '600');
ini_set('max_execution_time', '600');
ini_set('memory_limit', '256M');
ini_set('mysql.connect_timeout', '600');
ini_set('default_socket_timeout', '600');


больше опций и о опциях можно почитать тут.. _http://php.net/manual/en/ini.list.php
Узнать о текущих настройках поможет функция ini_get_all()
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
---------------
PHP обрабатывается апачем, потом через нгинкс
Когда нгинкс не дожидается ответа (по дефолту 30 сек) он сам отдает 504
При это апач может дальше обрабатывать скрипт и может даже успешно его завершить если он успеет во временные рамки апача, по совету выше это 60 секунд.
-------------
а для того, можно  воспользоваться функц. ini-set() _http://php.net/manual/ru/function.ini-set.php что во время выполнения скрипта (функции.. ) изменяет глобальные значения конфиг. PHP. т.е. они будут одинаковыми для обоих серверов сразу..
Судя по сообщению Воланда php отрабатывается только апачем, я nginx ждет готовый ответ. Поэтому я как-то не понимаю как функция ini-set повлияет на таймауты nginx
Люди добрые, просветите, зачем в файле настроек nginx введены две секции настроек с разным location? location / - это фронтенд, а location ~*(administrator|comprofiler)* - админка? смысл в более грамотном перераспределении ресурсов сервера?
Второй вопрос - правильно я понимаю, что и во фронте, и в админке у меня работает всегда связка apache+nginx?
« Последнее редактирование: 12.01.2016, 16:58:45 от borro »
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Есть отдача странички пользователю - нгинкс
А есть собственно выполнение скрипта - если это масштабирование картинок, оно может завершиться, а может и нет - за это апач отвечает.
Но если апач (+пхп) будет думать больше чем ждет нгинкс, то пользователь не узнает успех выполнения, а увидит 504.

Разжевано вроде уже больше некуда!
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Есть отдача странички пользователю - нгинкс
А есть собственно выполнение скрипта - если это масштабирование картинок, оно может завершиться, а может и нет - за это апач отвечает.
Но если апач (+пхп) будет думать больше чем ждет нгинкс, то пользователь не узнает успех выполнения, а увидит 504.

Разжевано вроде уже больше некуда!
Спасибо, это я уже понял. У меня немного другие вопросы были :)
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
зачем в файле настроек nginx введены две секции настроек с разным location? location / - это фронтенд, а location ~*(administrator|comprofiler)* - админка? смысл в более грамотном перераспределении ресурсов сервера?
Второй вопрос - правильно я понимаю, что и во фронте, и в админке у меня работает всегда связка apache+nginx?
можно и так сказать. я например по /administrator/ защиту от ботов настроил, отдаю им 404. у кого как. зачем конкретно у вас - без содержимого location не скажешь

Второй вопрос - правильно я понимаю, что и во фронте, и в админке у меня работает всегда связка apache+nginx?
99% что да
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ошибка 502 Bed Gateway

Автор lohudra

Ответов: 0
Просмотров: 2386
Последний ответ 10.06.2022, 11:49:22
от lohudra
Open Server ошибка 504 Gateway Time-out

Автор Ferum1

Ответов: 4
Просмотров: 2249
Последний ответ 31.08.2016, 15:36:24
от Ferum1
Open server 504 Gateway Time-out на php 7

Автор Taatshi

Ответов: 5
Просмотров: 7130
Последний ответ 05.04.2016, 18:19:19
от AlekVolsk