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

VIK4

  • Захожу иногда
  • 91
  • 5 / 0
Скажите, как поставить запрет на запись в определённой таблице БД, в phpMyAdmin?
Или ограничить запись, определённым количеством строк, например?
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: Запрет на запись в таблице БД
« Ответ #1 : 20.11.2021, 20:43:33 »
Если просто запретить или ограничить, и не  создать обработчик ошибки на стороне сайта, сайт может  лечь .
*

VIK4

  • Захожу иногда
  • 91
  • 5 / 0
Re: Запрет на запись в таблице БД
« Ответ #2 : 20.11.2021, 20:47:50 »
Если просто запретить или ограничить, и не  создать обработчик ошибки на стороне сайта, сайт может  лечь .
Пускай ляжет, есть копия. Скажите как?
« Последнее редактирование: 20.11.2021, 21:08:08 от VIK4 »
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: Запрет на запись в таблице БД
« Ответ #3 : 21.11.2021, 15:35:25 »
Пускай ляжет, есть копия. Скажите как?
Переименуйте таблицу .
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
Re: Запрет на запись в таблице БД
« Ответ #4 : 21.11.2021, 18:18:23 »
Переименуйте таблицу .
Если надо закрыть только на запись, но оставить на чтение, то можно ограничить права пользователя БД на эту таблицу.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

VIK4

  • Захожу иногда
  • 91
  • 5 / 0
Re: Запрет на запись в таблице БД
« Ответ #5 : 22.11.2021, 11:12:49 »
Переименуйте таблицу .
при удалении или переименовании таблици происходит сбой, в разделе сайта.
нужно чтобы была таблица, но пустая.
при очистке, появляются новые записи.
*

VIK4

  • Захожу иногда
  • 91
  • 5 / 0
Re: Запрет на запись в таблице БД
« Ответ #6 : 22.11.2021, 11:13:53 »
Если надо закрыть только на запись, но оставить на чтение, то можно ограничить права пользователя БД на эту таблицу.
можно поподробнее? )
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
Re: Запрет на запись в таблице БД
« Ответ #7 : 22.11.2021, 11:43:17 »
можно поподробнее? )
В сети полно описаний как это делать, например тут:
Спойлер
[свернуть]
Можете отредактировать права имеющегося пользователя или добавить нового и настроить права ему, переключив потом Joomla на него.

Команды должны получиться примерно такие:
Код
;; Забираем все права на 1 таблицу (table_name)
REVOKE ALL PRIVILEGES ON db_name.table_name FROM 'user_name'@'localhost';
;; Даем право на чтение из той таблицы (table_name)
GRANT SELECT ON db_name.table_name TO 'user_name'@'localhost';
;; Применяем изменения
FLUSH PRIVILEGES;

И еще, наверное, лучше делать это от другого пользователя, имеющего полные права на БД (root).
Команды эти можно отдавать в консоли MySQL или в запросах phpMyAdmin.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

VIK4

  • Захожу иногда
  • 91
  • 5 / 0
Re: Запрет на запись в таблице БД
« Ответ #8 : 22.11.2021, 14:21:06 »
В сети полно описаний как это делать, например тут:
Спойлер
[свернуть]
Можете отредактировать права имеющегося пользователя или добавить нового и настроить права ему, переключив потом Joomla на него.

Команды должны получиться примерно такие:
Код
;; Забираем все права на 1 таблицу (table_name)
REVOKE ALL PRIVILEGES ON db_name.table_name FROM 'user_name'@'localhost';
;; Даем право на чтение из той таблицы (table_name)
GRANT SELECT ON db_name.table_name TO 'user_name'@'localhost';
;; Применяем изменения
FLUSH PRIVILEGES;

И еще, наверное, лучше делать это от другого пользователя, имеющего полные права на БД (root).
Команды эти можно отдавать в консоли MySQL или в запросах phpMyAdmin.
Спасибо!
Попробую на досуге )
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: Запрет на запись в таблице БД
« Ответ #9 : 22.11.2021, 16:32:57 »
при удалении или переименовании таблици происходит сбой, в разделе сайта.
А что за таблица ? Найдите скрипт, который пишет в эту таблицу, и вырежьте код .
*

VIK4

  • Захожу иногда
  • 91
  • 5 / 0
Re: Запрет на запись в таблице БД
« Ответ #10 : 22.11.2021, 18:17:52 »
А что за таблица ? Найдите скрипт, который пишет в эту таблицу, и вырежьте код .
Таблица называется: _k2_comments.
Скрипт вычислить не знаю как (
« Последнее редактирование: 22.11.2021, 19:08:25 от VIK4 »
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: Запрет на запись в таблице БД
« Ответ #11 : 22.11.2021, 19:12:56 »
Судя по говорящему названию таблицы _k2_comments, запись должна производится модели К-2, в папке /components/com_k2/models/item.php
Просто нет К2 у меня, так бы точнее написал.
Есть редактор или терминал в Линукс, и поиск текста  __k2_comments по файлам .
п.с.
Допишите выход из функции
Код
    public function comment()
    {
return;
« Последнее редактирование: 22.11.2021, 19:45:25 от draff »
*

VIK4

  • Захожу иногда
  • 91
  • 5 / 0
Re: Запрет на запись в таблице БД
« Ответ #12 : 22.11.2021, 19:39:44 »
Судя по говорящему названию таблицы _k2_comments, запись должна производится модели К-2, в папке /components/com_k2/models
Просто нет К2 у меня, так бы точнее написал.
Есть редактор или терминал в Линукс, и поиск текста  __k2_comments по файлам .
Попробую посмотреть. Правда уже всё что мог вычистил. Хост предоставил список подозрительных PHP.
Спасибо, что помогаете )
*

draff

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

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: Запрет на запись в таблице БД
« Ответ #14 : 22.11.2021, 19:52:58 »
Правда уже всё что мог вычистил.
Так на сайте спам в комментарии К2 ?
Удалите, закоментируйте токен из формы, и комментарии не должны проходить проверку
Код
        <?php //echo JHTML::_('form.token'); ?>
    </form>
*

VIK4

  • Захожу иногда
  • 91
  • 5 / 0
Re: Запрет на запись в таблице БД
« Ответ #15 : 22.11.2021, 19:54:19 »
Так на сайте спам в комментарии К2 ?
Удалите, закоментируйте токен из формы, и комментарии не должны проходить проверку
Код
        <?php //echo JHTML::_('form.token'); ?>
    </form>
Попробую разобраться )
Там не спам, комменты выключены, но в таблицу постоянно идёт запись.
« Последнее редактирование: 22.11.2021, 20:02:06 от VIK4 »
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: Запрет на запись в таблице БД
« Ответ #16 : 22.11.2021, 20:34:51 »
Попробую разобраться )
Там не спам, комментарии выключены, но в таблицу постоянно идёт запись.
Ну для начала достаточно. Кстати вьюшка К2 с формой может быть переопределена в шаблоне
*

VIK4

  • Захожу иногда
  • 91
  • 5 / 0
Re: Запрет на запись в таблице БД
« Ответ #17 : 24.11.2021, 13:13:51 »
Ну для начала достаточно. Кстати вьюшка К2 с формой может быть переопределена в шаблоне
что обнаружил, если удалить файл \components\com_k2\models\item.php запись в таблицу прекращается, раздел сайта частично падает.
Если заменить на item.php из архива с дистрибутивом модуля K-2, сайт работает, запись в таблицу продолжается.
*

VIK4

  • Захожу иногда
  • 91
  • 5 / 0
Re: Запрет на запись в таблице БД
« Ответ #18 : 24.11.2021, 13:16:52 »
записи по слову k2_comments в файлах встречаются встречается в папках:
components,
language,
modules.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: Запрет на запись в таблице БД
« Ответ #19 : 24.11.2021, 13:34:57 »
Что снова записи ?
Нужно найти метод, через который пишут коменты в этом же файле .
\components\com_k2\models\item.php
*

VIK4

  • Захожу иногда
  • 91
  • 5 / 0
Re: Запрет на запись в таблице БД
« Ответ #20 : 24.11.2021, 14:14:00 »
Что снова записи ?
Нужно найти метод, через который пишут коменты в этом же файле .
потихоньку изучаю, если удаляю item.php то сайт пишет ошибку:
Fatal error: Call to a member function getCategoryFirstChildren() on a non-object in /components/com_k2/views/itemlist/view.html.php on line 217
217 строка:
                    $children = $itemlistModel->getCategoryFirstChildren($id, $ordering);
*

VIK4

  • Захожу иногда
  • 91
  • 5 / 0
Re: Запрет на запись в таблице БД
« Ответ #22 : 24.11.2021, 18:57:48 »
а это решение пробовали ?
Запрет на запись в таблице БД
Не совсем понял, в какой строчке прописать этот код.
Завтра попробую заняться.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: Запрет на запись в таблице БД
« Ответ #23 : 24.11.2021, 19:09:10 »
Не совсем понял, в какой строчке прописать этот код.
Ну найти в файле метод вы можете ?
Код
public function comment()
*

VIK4

  • Захожу иногда
  • 91
  • 5 / 0
Re: Запрет на запись в таблице БД
« Ответ #24 : 24.11.2021, 21:33:43 »
Ну найти в файле метод вы можете ?
Код
public function comment()
Офигеть! Сработало! yes!
Вы Мастер!
Спасибо!
« Последнее редактирование: 24.11.2021, 21:42:59 от VIK4 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Запрет изменения email после регистрации

Автор Mick_20

Ответов: 2
Просмотров: 710
Последний ответ 14.01.2021, 14:16:36
от Mick_20
В базе данных слетел auto_increment в таблице

Автор sewerneik

Ответов: 1
Просмотров: 1317
Последний ответ 26.12.2019, 15:18:28
от beliyadm
Валидация com_content, запрет пустого материала

Автор stepan39

Ответов: 12
Просмотров: 993
Последний ответ 25.09.2019, 15:16:20
от stepan39
Запрет доступа к определенным страницам

Автор astinasty

Ответов: 0
Просмотров: 805
Последний ответ 18.08.2018, 20:54:24
от astinasty
Появилась запись в логах ошибок после обновления

Автор tati-2000

Ответов: 4
Просмотров: 1066
Последний ответ 08.10.2017, 22:14:30
от tati-2000