Новости 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 Гость просматривают эту тему.
  • 4 Ответов
  • 1512 Просмотров
*

apatiger

  • Осваиваюсь на форуме
  • 42
  • 1 / 0
Здравствуйте! Прошу у сообщества помощи, уже мозг вывихнул, дней десять не могу найти решение проблемы. Такое впечатление, что дыра в безопасности моего сервера такая, что туда бронепоезд пролетает без остановки на досмотр и я ничего не могу сделать.
Суть проблемы с предисторией.
Прежде всегосразу скажу, что я по жизни даже и близко не компьютерщик, не программист, не сисадмин, мои познания больше в механико-технической области, тему виртуальных машин и серверов на них изучаю всего месяц, но Джумловод-любитель со стажем лет в семь, ну и с другими ЦМСками могу разобраться быстро на уровне продвинутого пользователя. Это я как бы с обращением к понятному языку общения! Значит лет семь занимаюсь разработкой и ведением своего сайта на Joomla, РНРВВ форума, Опен Карт магазина и по мелочи. Все это время хостил сайт то там, то здесь, но вот недавно пришла в голову шальная мысль отказаться от этого и перейти на виртуальную машину в облаке Амазона и поднять на ней сервер, где и разместить весь свой фарш, это AWS EC2. Поднял на Ubuntu LAMP обычно принятым способом, там развернул все свое хозяйство. На сервере по сути сделал настройки следующие настройки:
1.   Отладил работу mod_rewrite с Joomla
2.   Создал виртуальный сервер для Joomla и сайтов под ней (форум, опен карт стоят субдоменами в корне, в директориях Joomla).
3.   В phpMyAdmin изменил адрес страницы входа, создал новых пользователей, один из которых наделен правами суперамина на все и поставил его в резерв. Другие для работы сайтов с базой данных, руты (их создается при установкой системой четыре под разные хосты баз и юниксовский были лишены административных прав в настройках пользователей.
У Амазона свой фаервол и потому серверный не устанавливал. Все работы делал только при открытых портах исключительно на свой IP. По сути после установки и настройки ЦМСок все заработало шикарно как никогда - залетало, без глюков заработало все, в отличае от того, когда на том или ином хостинге приходилось мириться с тем или другим. Сделал снимок системы и опубликовал сайт открыв общий доступ только по порту 80 для НТТР. Счастье было не долгим, через несколько часов слетели таблицы MySQL, ошибка доступа. Пытаюсь зайти через  phpMyAdmin, но пароли на доступ сломаны. Известными командами строки Убунту восстанавливаю пароли доступа, в процессе система ругается что-то типа на сервере MySQL командной строкой параметры были изменены пользователем MySQL, а не рут. Но пароли входа командной строкой восстанавливаются и можно зайти в phpMyAdmin, но пользователи оказываются уже лишенными прав администрировать, то есть менять пароли, администрировать других пользователей. После восстановления пароля пользователю, работающему с базами сайта работа сайтов восстанавливается, все работают без проблем кроме самой Joomla. Логи Joomla пишут, что Ошибка, таблицы испорчены, хотя у меня база одна на все ЦМСки и для других ЦМСок базы данных как бы и в порядке. Дедуктивный метод Шерлока Холмса из всего выше изложенного мне подсказывает, что дыра в Joomla аж в сам сервер видимо, ведь только когда я делаю общий доступ происходит это судя по всему через нее и она валится по сути заваливая все остальное. Да, вопросы к ней, но система хостилась уже много лет и там базы данных не валились, то есть все было нормально, а здесь беда. Поэтому я прежде всего сосредоточился на сервере, найти дыру в нем – понаставил всякой хрени и настроек безопасности в нем, но воз и ныне там, уже четыре раза все поднимал так или иначе, а доступ к базам данных рушится за несколько часов. Полазал по логам и ничего явно понятного в них для себя не нахожу. Помогите разобраться, куда лезть, чего копать?
*

apatiger

  • Осваиваюсь на форуме
  • 42
  • 1 / 0
Вот, через некоторое время в догонку. С помощью резервного пользователя баз данных, которому был восстановлен пароль и права (таки!) (не совсем правильно ранее понимал суть алгоритма и содержания команд при восстановлении пароля, сейчас таки дошло, разобрался, к тому же на счастье этот созданный резервный пользователь со всем набором прав, а не от кастрированного эксидентом рута, теперь могу восстанавливать и пороли и права и в аккаунты пользователей теперь можно входить вроде как первозданно) со всеми привилегиями сейчас мне таки удалось полностью восстановить пароли и права всех пользователей. Сразу же сайты заработали, даже Joomla, вроде ничего не обвалено. Правда сразу же почистил кэши в Joomla и напросились обновления, я им поозволил нас обновить. Вроде все обновилось, но выскочило предупреждение красным о паре таблиц, к которым доступ закрыт.
Тем не менее проблема почему валятся пользователи баз данных остается открытой! Сейчас все работает, жду обвала...
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
Да уж, загадочная история. Но хоть убей, не представляю - как через Joomla можно портить права пользователей?
*

apatiger

  • Осваиваюсь на форуме
  • 42
  • 1 / 0
Потихоньку разбираюсь сам. Поставил РСФаервол! и он мне довольно много чего показал. Закрыл бреши. После сервер через какое-то время стал входить в ступор из-за переполнения памяти. Изучил тему, оптимизировал Апач с фаршем, все стало работать более менее стабильно. Но вот было покалечились таблицы переполнением столбца лога как раз этой самой РСФаервол! Немного подкрутил параметры работы мускула. Сутки держимся пока, да и нагрузка упала. Вообще не могу обьяснить для себя огромное количество гостей на сайте - до 2,5 тыс. одновременно, хотя реальных больше сотни в день не бывает. Я думаю и ботов столько не бывает. Хостеры говорили, что это Ддос атака, но это состояние перманентное, годы, обычно более полутысячи и, к стати, при разрешении заходить на сайт только у наших Мэйл, Яндекс, Рамблер и их Гцгл, Бинг. Сейчас выставил еще геоблокировки, больше 780 не поднимается. Но у меня уже когда около 500 своп файл начинает задействоваться и сервер тормозит, а до использование свопа все просто летает. По логам вроде ничего для меня обьясняющего, но я и не спец чтобы понять тонкости например понимания причины в какой-то момент замены алгоритмов записи таблиц MyIsam на Inno и потом крэша последнего. Где-то здесь по сути зарыта причина точнее смены паролей пользователей и как выяснилось пользователем MySQL. Тоже не могу до конца понять ведь такой пользователь у MySQL сервера есть, а зайдя в phpMyAdmin он там не находится. Вообще от неспециализированных знаний в голове каша и только по прошествии месяца целостность картины и что примерно к чему и зачем только начинает вырисовываться
*

apatiger

  • Осваиваюсь на форуме
  • 42
  • 1 / 0
Вообще, по сути вопрос только от части по Joomla. Тут больше вопросов о работе единой связки Joomla с виртуальным сервером со слабыми параметрами и определенной, изначально заложенной, спецификой работы этого сервера и отладки его работы. 
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Нужна проф помощь в обновлении Joomla на лок.сервере osp. Можно платно

Автор Fati

Ответов: 0
Просмотров: 55
Последний ответ 16.06.2025, 16:40:04
от Fati
Помогите с БАГом в панели администратора Joomla 3

Автор akteon25

Ответов: 2
Просмотров: 1105
Последний ответ 26.02.2025, 16:41:56
от akteon25
Версии РНР и Joomla 3

Автор Ebelous

Ответов: 8
Просмотров: 2876
Последний ответ 27.01.2025, 20:38:45
от pavelrer
Trouble Upgrading from Joomla 3.8 to 3.9

Автор melissa00

Ответов: 0
Просмотров: 1708
Последний ответ 26.07.2024, 10:03:51
от melissa00
Сервер выдает 301, вместо 404

Автор astinasty

Ответов: 29
Просмотров: 4174
Последний ответ 01.03.2024, 21:01:48
от ProtectYourSite