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

apikron

  • Захожу иногда
  • 152
  • 2 / 0
Префикс к базе данных
« : 15.03.2018, 15:34:53 »
Народ! Хочу перенести сайт Joomla 3 на новый хостинг. Когда-то давно сайт был взломан, заражен, его лечили. Собственно мой вопрос про Базу Данных. Обнаружил, что помимо основного префикса базы данных, который указан в файле configuration.php /например a7n08_ / есть множество других префиксов, отличающихся от основного. Вопрос! Могут ли модули, плагины, компоненты использовать префиксы не из файла конфигурации? То есть, можно эти таблицы с другими префиксами просто удалить?
*

Apoca1ypto

  • Давно я тут
  • 749
  • 71 / 0
Re: Префикс к базе данных
« Ответ #1 : 15.03.2018, 15:41:42 »
Народ! Хочу перенести сайт Joomla 3 на новый хостинг. Когда-то давно сайт был взломан, заражен, его лечили. Собственно мой вопрос про Базу Данных. Обнаружил, что помимо основного префикса базы данных, который указан в файле configuration.php /например a7n08_ / есть множество других префиксов, отличающихся от основного. Вопрос! Могут ли модули, плагины, компоненты использовать префиксы не из файла конфигурации? То есть, можно эти таблицы с другими префиксами просто удалить?
Да, можно удалить.
Во время спора в Интернете Ваш оппонент приводит неопровержимые доказательства своей точки зрения? Не отчаивайтесь. До...тесь до орфографии.
*

apikron

  • Захожу иногда
  • 152
  • 2 / 0
Re: Префикс к базе данных
« Ответ #2 : 15.03.2018, 16:01:01 »
Да, можно удалить.
Спасибо за помощь!
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Префикс к базе данных
« Ответ #3 : 15.03.2018, 19:07:18 »
Обнаружил, что помимо основного префикса базы данных, который указан в файле configuration.php /например a7n08_ / есть множество других префиксов, отличающихся от основного. Вопрос! Могут ли модули, плагины, компоненты использовать префиксы не из файла конфигурации?
возможно эти таблицы используются другими скриптами (не входящими в Joomla, но работающими на сайте). К примеру мне никто не мешает в корень сайта положить файл, выполняющий нужную мне функцию и работающий с таблицами с другим префиксом. То есть чисто теоретически возможно, что если вы удалите эти таблицы какой-то функционал на сайте отвалится

Но скорей всего установка движка была в существующую уже БД где были таблицы от чего-то старого.

Главное правила разработчика баз данных - перед UPDATE\INSERT\DELETE\DROP\etc делать SELECT (чтобы посмотреть что мы изменяем) и перед каждым действием делать бекап

P.S. а на вопрос вам ответили верно - модули\компоненты\плагины движка, если они написаны в соответствии с API движка не могут использовать другой префикс. Но опять же - часто встречал в коде компонентов прямое обращение к базе данных без апи, то есть обычно мы пишем select * from #__table и #_ меняется на префикс в ядре, а там напрямую select * from jos_table - можно к чему угодно обращаться).
« Последнее редактирование: 15.03.2018, 19:10:32 от beliyadm »
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

apikron

  • Захожу иногда
  • 152
  • 2 / 0
Re: Префикс к базе данных
« Ответ #4 : 15.03.2018, 19:32:05 »
возможно эти таблицы используются другими скриптами (не входящими в Joomla, но работающими на сайте). К примеру мне никто не мешает в корень сайта положить файл, выполняющий нужную мне функцию и работающий с таблицами с другим префиксом. То есть чисто теоретически возможно, что если вы удалите эти таблицы какой-то функционал на сайте отвалится

Но скорей всего установка движка была в существующую уже БД где были таблицы от чего-то старого.

Главное правила разработчика баз данных - перед UPDATE\INSERT\DELETE\DROP\etc делать SELECT (чтобы посмотреть что мы изменяем) и перед каждым действием делать бекап

P.S. а на вопрос вам ответили верно - модули\компоненты\плагины движка, если они написаны в соответствии с API движка не могут использовать другой префикс. Но опять же - часто встречал в коде компонентов прямое обращение к базе данных без апи, то есть обычно мы пишем select * from #__table и #_ меняется на префикс в ядре, а там напрямую select * from jos_table - можно к чему угодно обращаться).
Благодарю! Буду аккуратнее.
*

apikron

  • Захожу иногда
  • 152
  • 2 / 0
Re: Префикс к базе данных
« Ответ #5 : 15.03.2018, 19:38:51 »
возможно эти таблицы используются другими скриптами (не входящими в Joomla, но работающими на сайте). К примеру мне никто не мешает в корень сайта положить файл, выполняющий нужную мне функцию и работающий с таблицами с другим префиксом. То есть чисто теоретически возможно, что если вы удалите эти таблицы какой-то функционал на сайте отвалится

Но скорей всего установка движка была в существующую уже БД где были таблицы от чего-то старого.

Главное правила разработчика баз данных - перед UPDATE\INSERT\DELETE\DROP\etc делать SELECT (чтобы посмотреть что мы изменяем) и перед каждым действием делать бекап

P.S. а на вопрос вам ответили верно - модули\компоненты\плагины движка, если они написаны в соответствии с API движка не могут использовать другой префикс. Но опять же - часто встречал в коде компонентов прямое обращение к базе данных без апи, то есть обычно мы пишем select * from #__table и #_ меняется на префикс в ядре, а там напрямую select * from jos_table - можно к чему угодно обращаться).
Тогда еще вопрос. А как Akeeba Backup делает архив для переезда на другой сервер? Резервная копия будет со всеми префиксами таблицы или только теми префиксами, которые использует Joomla и все сторонние расширения?!
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Префикс к базе данных
« Ответ #6 : 15.03.2018, 19:47:20 »
Тогда еще вопрос. А как Akeeba Backup делает архив для переезда на другой сервер? Резервная копия будет со всеми префиксами таблицы или только теми префиксами, которые использует Joomla и все сторонние расширения?!
Вот этого не скажу точно, не вижу смысла использовать какой то компонент, когда можно руками за 5 сек сделать бекап, не использую и не знаю как оно работает.

Но уверен, что копируется вся база данных без учета префикса таблиц по причинам, которые я указал выше - вдруг скрипт сайта использует таблицу с другим префиксом.
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

apikron

  • Захожу иногда
  • 152
  • 2 / 0
Re: Префикс к базе данных
« Ответ #7 : 15.03.2018, 20:07:50 »
Вот этого не скажу точно, не вижу смысла использовать какой то компонент, когда можно руками за 5 сек сделать бекап, не использую и не знаю как оно работает.

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

ProtectYourSite

  • Живу я здесь
  • 2364
  • 137 / 4
  • Безопасность вебсайтов
Re: Префикс к базе данных
« Ответ #8 : 15.03.2018, 23:43:48 »
Скорее всего акебы эти префиксы и расплодила, когда разворачивается бекап, то бд импортируется с другими префиксами. И не думаю, что  посторонние  префиксы будут экспортироваться, однако никто не запрещает проверить.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Префикс к базе данных
« Ответ #9 : 15.03.2018, 23:47:58 »
Резервная копия будет со всеми префиксами таблицы или только теми префиксами, которые использует Joomla и все сторонние расширения?!
при бекапе сворачивается вся база. при разворачивании бекапа основной префикс (тот который указан в configuration.php) можно поменять, остальные будут без изменений.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Все изменения появляются в старой базе данных и ftp после смены хостинга

Автор makena0606

Ответов: 2
Просмотров: 2107
Последний ответ 09.02.2024, 10:21:47
от Vastriet
Пропала база данных в phpMyAdmin

Автор kazbec

Ответов: 3
Просмотров: 1413
Последний ответ 16.11.2023, 22:59:54
от Vastriet
Удалять префикс языка по умолчанию в модулей переключения языков

Автор SHURIK

Ответов: 7
Просмотров: 1424
Последний ответ 27.03.2022, 11:36:20
от polezniy
Перенос отдельных таблиц из одной базы данных в другую для обновления Joomla

Автор alex-nosov1980

Ответов: 3
Просмотров: 1301
Последний ответ 13.09.2021, 08:58:55
от alex-nosov1980
Подключение Joomla к API базе дынных

Автор dk0929

Ответов: 2
Просмотров: 1163
Последний ответ 29.06.2021, 17:42:12
от dk0929