Новости 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 для атрибута addfieldprefix
namespace 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 #разработка

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

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
В продолжение данной темы.

Просьба помочь интерпретировать логи. По журналу вижу, что сбой при попытке куда-то там подключится, но почему при этом ложится MySQL не пойму. Используется CentOS 7 + LAMP.

Такой статус выдает после сбоя:
Код
[root@rvp74 ~]# systemctl status mysqld.service
● mysqld.service - MySQL database server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Sun 2019-04-21 22:19:03 +05; 2min 36s ago
  Process: 21994 ExecStartPost=/usr/libexec/mysqld-wait-ready $MAINPID (code=exited, status=1/FAILURE)
  Process: 21993 ExecStart=/usr/bin/mysqld_safe --basedir=/usr (code=exited, status=0/SUCCESS)
  Process: 21974 ExecStartPre=/usr/libexec/mysqld-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 Main PID: 21993 (code=exited, status=0/SUCCESS)

Apr 21 22:19:02 rvp74.ru systemd[1]: Starting MySQL database server...
Apr 21 22:19:03 rvp74.ru mysqld_safe[21993]: 190421 22:19:03 mysqld_safe Logging to '/var/log/mysqld.log'.
Apr 21 22:19:03 rvp74.ru mysqld_safe[21993]: 190421 22:19:03 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Apr 21 22:19:03 rvp74.ru systemd[1]: mysqld.service: control process exited, code=exited status=1
Apr 21 22:19:03 rvp74.ru systemd[1]: Failed to start MySQL database server.
Apr 21 22:19:03 rvp74.ru systemd[1]: Unit mysqld.service entered failed state.
Apr 21 22:19:03 rvp74.ru systemd[1]: mysqld.service failed.

Такую картину вижу в логах:
Код
[root@rvp74 ~]# nano /var/log/mysqld.log

2019-03-30 09:54:03 12036 [Note] /usr/libexec/mysqld: Normal shutdown

2019-03-30 09:54:03 12036 [Note] Giving 0 client threads a chance to die gracefully
2019-03-30 09:54:03 12036 [Note] Event Scheduler: Purging the queue. 0 events
2019-03-30 09:54:03 12036 [Note] Shutting down slave threads
2019-03-30 09:54:03 12036 [Note] Forcefully disconnecting 0 remaining clients
2019-03-30 09:54:03 12036 [Note] Binlog end
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'partition'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'BLACKHOLE'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'ARCHIVE'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_SYS_DATAFILES'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_SYS_TABLESPACES'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN_COLS'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_SYS_FIELDS'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_SYS_COLUMNS'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_SYS_INDEXES'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_SYS_TABLESTATS'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_SYS_TABLES'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_FT_INDEX_TABLE'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_FT_INDEX_CACHE'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_FT_CONFIG'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_FT_BEING_DELETED'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_FT_DELETED'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_FT_DEFAULT_STOPWORD'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_METRICS'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_BUFFER_POOL_STATS'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE_LRU'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX_RESET'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_CMPMEM_RESET'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_CMPMEM'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_CMP_RESET'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_CMP'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_LOCK_WAITS'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_LOCKS'
2019-03-30 09:54:03 12036 [Note] Shutting down plugin 'INNODB_TRX'

А вот что в журнале:
Код
[root@rvp74 ~]# journalctl -xe
Apr 21 22:48:26 rvp74.ru sshd[32540]: input_userauth_request: invalid user wen [preauth]
Apr 21 22:48:26 rvp74.ru sshd[32540]: pam_unix(sshd:auth): check pass; user unknown
Apr 21 22:48:26 rvp74.ru sshd[32540]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=104.248.147.248
Apr 21 22:48:29 rvp74.ru sshd[32540]: Failed password for invalid user wen from 104.248.147.248 port 59464 ssh2
Apr 21 22:48:35 rvp74.ru kernel: Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=52:54:00:bc:35:43:00:15:2c:98:46:c0:08:00 SRC=81.22.45.249 DST=188.127.249.225 LEN=40 TOS=0
Apr 21 22:48:35 rvp74.ru kernel: Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=52:54:00:bc:35:43:00:15:2c:98:46:c0:08:00 SRC=81.22.45.249 DST=188.127.249.225 LEN=40 TOS=0
Apr 21 22:48:36 rvp74.ru sshd[32220]: pam_unix(sshd:session): session closed for user root
Apr 21 22:48:36 rvp74.ru systemd-logind[2393]: Removed session 691.
-- Subject: Session 691 has been terminated
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat
--
-- A session with the ID 691 has been terminated.
Apr 21 22:48:39 rvp74.ru dovecot[3007]: auth-worker(32260): Error: mysql(127.0.0.1): Connect failed to database (smtp): Can't connect to MySQL server on '127.0.0.1' (11
Apr 21 22:48:49 rvp74.ru sshd[32566]: Address 185.232.67.53 maps to sofanatours.com, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
Apr 21 22:48:49 rvp74.ru sshd[32566]: Invalid user admin from 185.232.67.53 port 59512
Apr 21 22:48:49 rvp74.ru sshd[32566]: input_userauth_request: invalid user admin [preauth]
Apr 21 22:48:49 rvp74.ru sshd[32566]: pam_unix(sshd:auth): check pass; user unknown
Apr 21 22:48:49 rvp74.ru sshd[32566]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=185.232.67.53
Apr 21 22:48:51 rvp74.ru dovecot[3007]: auth-worker(32260): Error: mysql(127.0.0.1): Connect failed to database (smtp): Can't connect to MySQL server on '127.0.0.1' (11
Apr 21 22:48:51 rvp74.ru sshd[32573]: Accepted password for root from 217.118.83.192 port 21052 ssh2
Apr 21 22:48:51 rvp74.ru systemd-logind[2393]: New session 693 of user root.
-- Subject: A new session 693 has been created for user root
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat
--
-- A new session with the ID 693 has been created for the user root.
--
-- The leading process of the session is 32573.
Apr 21 22:48:51 rvp74.ru systemd[1]: Started Session 693 of user root.
-- Subject: Unit session-693.scope has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit session-693.scope has finished starting up.
--
-- The start-up result is done.
Apr 21 22:48:51 rvp74.ru sshd[32573]: pam_unix(sshd:session): session opened for user root by (uid=0)
Apr 21 22:48:52 rvp74.ru sshd[32566]: Failed password for invalid user admin from 185.232.67.53 port 59512 ssh2
Apr 21 22:48:52 rvp74.ru kernel: Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=52:54:00:bc:35:43:00:15:2c:98:46:c0:08:00 SRC=185.176.27.166 DST=188.127.249.225 LEN=40 TOS
Apr 21 22:48:55 rvp74.ru sshd[32566]: Disconnecting: Change of username or service not allowed: (admin,ssh-connection) -> (user,ssh-connection) [preauth]
lines 1490-1532/1532 (END)
« Последнее редактирование: 21.04.2019, 20:59:14 от dm-krv »
*

ProtectYourSite

  • Живу я здесь
  • 2364
  • 137 / 4
  • Безопасность вебсайтов
Логи смешанные и скорее всего не те, что нужно.
По ssh2 вам ломятся, перебирают пароли.
Советую закрыть ssh2, поменять порты и закрыть вообще лишние порты.
Как по мне видится, серверу не хватает оперативки, бд падает и перезагружается. Возможно при этом ещё идёт мелкий ddos
Для начала посмотрите потребление ресурсов и процессы помониторьте.
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Логи смешанные и скорее всего не те, что нужно.
По ssh2 вам ломятся, перебирают пароли.
Советую закрыть ssh2, поменять порты и закрыть вообще лишние порты.
Как по мне видится, серверу не хватает оперативки, бд падает и перезагружается. Возможно при этом ещё идёт мелкий ddos
Для начала посмотрите потребление ресурсов и процессы помониторьте.

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

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
А лог медленных запросов включить ?

Включил, надеюсь это поможет понять почему MySQL дохнет. Перебор пароля не должен ничего такого делать, там через 5 ошибок бан по IP адресу, соответственно сложно там память забить этим делом.
*

web3.0

  • Захожу иногда
  • 349
  • 6 / 6
Какая версия MySQL сервера?
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Какая версия MySQL сервера?

Код
[root@rvp74 ~]# MySQL --version
mysql  Ver 14.14 Distrib 5.6.39, for Linux (x86_64) using  EditLine wrapper
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
А что в простых логах сайта, обращения куда идут?

А сайты тут причем, если не они причина падения? Сайты очевидно стучатся в localhost и из-за не работающего MySQL выдают нечто такое:
Код
Error: Failed to start application: Could not connect to MySQL server.
Но это и понятно, после сбоя, MySQL отрубается и не стартует даже вручную, пока не перезагрузишь сервер.

А вот почему именно происходит сбой работы MySQL я понять не могу, навыков и знаний не хватает.
*

web3.0

  • Захожу иногда
  • 349
  • 6 / 6
Обновите MySQL до 5.7, а лучше установите MariaDB 10.3
База с таблицами InnoDB не будет нормально работать на том хламе, который установлен у вас. У меня работает без сбоев MariaDB 10.3 + php 7.3.4
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Обновите MySQL до 5.7, а лучше установите MariaDB 10.3
База с таблицами InnoDB не будет нормально работать на том хламе, который установлен у вас. У меня работает без сбоев MariaDB 10.3 + php 7.3.4

Поставил MariaDB 10.3.7, пока что все работает, но мне нужно время, чтобы понаблюдать результаты. Остается надеется, что это решит проблему. За совет спасибо.
*

ProtectYourSite

  • Живу я здесь
  • 2364
  • 137 / 4
  • Безопасность вебсайтов
Логи сайтов надо смотреть, потому что от сайта идут запросы в бд. Если тяжёлые запросы и много одновременных коннектов - есть вероятность выйти за пределы ресурсов.
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Логи сайтов надо смотреть, потому что от сайта идут запросы в бд. Если тяжёлые запросы и много одновременных коннектов - есть вероятность выйти за пределы ресурсов.

А какие именно логи? Их то много разных. К слову, пока что падений нет, очень похоже на то, что обновление помогло. Тьфу-тьфу, главное не сглазить.
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
А сайты тут причем, если не они причина падения? Сайты очевидно стучатся в localhost и из-за не работающего MySQL выдают нечто такое:
Код
Error: Failed to start application: Could not connect to MySQL server.
Но это и понятно, после сбоя, MySQL отрубается и не стартует даже вручную, пока не перезагрузишь сервер.

А вот почему именно происходит сбой работы MySQL я понять не могу, навыков и знаний не хватает.
как уже сказали запросы идут от сайтов, надо смотреть на момент падения какие обращения, и потом уже анализировать все логи и ошибка или пик нагрузки найдется, это делается если в логах мускула ни чего не видно
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Сервер выдает 301, вместо 404

Автор astinasty

Ответов: 29
Просмотров: 4167
Последний ответ 01.03.2024, 21:01:48
от ProtectYourSite
Ошибка установки на сервер сайта (не удалось найти Z:\home\localhost\www\joomla\

Автор Katy_motya

Ответов: 7
Просмотров: 1164
Последний ответ 23.04.2021, 21:17:16
от Katy_motya
Обновление MySQL

Автор Akki

Ответов: 3
Просмотров: 791
Последний ответ 09.03.2021, 23:14:51
от wishlight
Ошибка названия при открытии Joomla через локальный сервер

Автор Treant

Ответов: 7
Просмотров: 1170
Последний ответ 27.04.2020, 15:00:27
от SeBun
Joomla! 4 - Joomla! 3.9 - Joomla! 3.9.12 и MySQL 8 почему не работает?

Автор Igor5

Ответов: 1
Просмотров: 1810
Последний ответ 21.10.2019, 13:29:37
от zikkuratvk