Новости 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 Ответов
  • 1698 Просмотров
*

SirOhlamon

  • Осваиваюсь на форуме
  • 12
  • 1 / 0
Использую Joomla 2.5.4
Компонент k2 2.5.7

После добавления 3 000 материалов (чистый текст от 500 до 10 000 символов) БД раздулась до 4ГБ. Имеются таблицы по 500.000 - 6.500.000 записей. Эта махина начинает жутко тормозить и довольно часто ложит сервер, при обращении к БД.

Как это исправить? Что с этим делать? Такие таблицы просто невозможно содержать, любой сервер загнется. Это баг Joomla или k2?

И вообще, способна ли Joomla тянуть множество материалов? Если да, то как?

Если это придел Joomla, то посоветуйте другую CMS, нормально работающую при больших объемах контента.
« Последнее редактирование: 02.11.2012, 13:44:29 от ELLE »
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
Re: Огромные таблицы в БД
« Ответ #1 : 29.08.2012, 17:37:31 »
Видимо это таблицы компонента finder
Отключите плагин finder для К2
*

SirOhlamon

  • Осваиваюсь на форуме
  • 12
  • 1 / 0
Re: Огромные таблицы в БД
« Ответ #2 : 29.08.2012, 18:09:56 »
Отключил.
Таблицы действительно от компонента Finder.

Эти таблицы, как я полагаю, можно удалить?
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
Re: Огромные таблицы в БД
« Ответ #3 : 29.08.2012, 18:12:05 »
Удалять сами таблицы не надо, можете очистить

*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Огромные таблицы в БД
« Ответ #4 : 29.08.2012, 19:48:51 »
http://biwork.ru/novosti/14162-vozvrashchayas-k-teme-dnya.html. Не реклама. Сегодня была выставлена 14162-я статья. Работает как часы.
*

wishlight

  • Гуру
  • 5051
  • 314 / 1
  • От 300 руб быстрый хостинг. Сервера.
Re: Огромные таблицы в БД
« Ответ #5 : 29.08.2012, 20:00:16 »
А что ей будет?.. Конечно будет работать
*

SirOhlamon

  • Осваиваюсь на форуме
  • 12
  • 1 / 0
Re: Огромные таблицы в БД
« Ответ #6 : 29.08.2012, 20:57:23 »
Проблема решена.

Отключение компонента finder помогает.
*

Azizkz

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
RE: Огромные таблицы в БД
« Ответ #7 : 31.10.2013, 11:07:39 »
Здравствуйте! Можете помочь пожалуйста... у меня такая же проблема сайт на Joomla 2.5 + компонент к2 там более 4000 тыс материалов сайт жутко тормозит сами материалы так вродиб норм открывают, а вот при переходе к категория начинает по 20-30 сек загружать ... можете помочь где найти этот компонент или плагин finder? зашел в плагины там нашел 5-6 плагинов типа finder отключил их всех (это кажется поиски к2) теперь захожу на базу и очищаю все таблицы финдер? их у меня несколько?
вот изображение базы ... <a href='http://download.files.namba.net/files/53906442'>Снимок.PNG</a>

Снимок.PNG

http://download.files.namba.net/files/53906442
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
RE: Огромные таблицы в БД
« Ответ #8 : 31.10.2013, 12:50:24 »
http://biwork.ru/novosti/14162-vozvrashchayas-k-teme-dnya.html. Не реклама. Сегодня была выставлена 14162-я статья. Работает как часы.
у меня тут на сайте тоже 26460 статей, тоже работает как часы ) правда там ни k2 ни com_content не пахнет )))
*

wishlight

  • Гуру
  • 5051
  • 314 / 1
  • От 300 руб быстрый хостинг. Сервера.
RE: Огромные таблицы в БД
« Ответ #9 : 31.10.2013, 17:17:25 »
у меня тут на сайте тоже 26460 статей, тоже работает как часы ) правда там ни k2 ни com_content не пахнет )))

Пора платное расширение делать :)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] title материалов и категорий без пунктов меню

Автор pharaoh

Ответов: 269
Просмотров: 63286
Последний ответ 03.02.2022, 02:45:26
от globus812
Фильтрация по строкам и стили таблицы - некорректная работа

Автор vegastk

Ответов: 15
Просмотров: 1313
Последний ответ 26.08.2019, 15:10:36
от vegastk
[Решено] Проблема с выводом даты и часовым поясом

Автор afikus

Ответов: 6
Просмотров: 8666
Последний ответ 28.12.2016, 14:16:50
от newvideo
[Решено] Как сделать пустую главную страницу?

Автор akhalex38

Ответов: 7
Просмотров: 2435
Последний ответ 10.12.2016, 19:59:17
от Филипп Сорокин
Решено: На сайте уродуется кириллица

Автор konstantingun

Ответов: 3
Просмотров: 1442
Последний ответ 01.12.2016, 13:43:07
от konstantingun