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

entelexiya

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
А чо тут комментарии удаляют?
Или вы хотите слышать только слова благодарности?
Помочь не хотите?
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
А чо тут комментарии удаляют?
Или вы хотите слышать только слова благодарности?
Помочь не хотите?
Тут удаляют только то, что не по теме. Я дал Вам ответ в Вашей соответствующей теме.
*

entelexiya

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Тут удаляют только то, что не по теме. Я дал Вам ответ в Вашей соответствующей теме.

А зачем вы на каждый вопрос тему создаете?
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
А зачем вы на каждый вопрос тему создаете?
Вообще-то это правила форума. К тому же ваш вопрос никакого отношения к разработке компонента не имеет. И да, я потом удалю нашу с Вами переписку - это оффтоп.
*

_maks

  • Новичок
  • 1
  • 0 / 0
Доброго времени суток!
Есть такая задача, после добавления/редактирования записи в таблицу нужно сохранить картинки с именем (id_только-что-добавленной-записи)_#.#
Как добавить поля на форму разобрался.
Не могу понять где и как сразу после добавления/редактирования записи в таблицу брать id только что добавленной/отредактированой записи
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Доброго времени суток!
Есть такая задача, после добавления/редактирования записи в таблицу нужно сохранить картинки с именем (id_только-что-добавленной-записи)_#.#
Как добавить поля на форму разобрался.
Не могу понять где и как сразу после добавления/редактирования записи в таблицу брать id только что добавленной/отредактированой записи
1. Для начала создайте новую тему (читайте правила форума)
2. По вашему вопросу скопировать из класса JModelAdmin метод save() в вашу модель после строк:
Код: php
// Store the data.
if (!$table->store())
{
$this->setError($table->getError());
return false;
}
Вы сможете написать например: $name = 'image-' . $table->id . '.jpg'; сохранить свое изображение с нужным вам именем, и выполнить что угодно с изображением...
*

Night_Pilgrim

  • Захожу иногда
  • 74
  • 0 / 0
Может мне кто-нибудь подсказать,
есть компонент для Joomla 2.5, установил на Joomla 3, поначалу обрадовался, что установился, а потом получил белый экран с ошибкой в связи с чем возник вопрос какие принципиальные отличия между компонентами для Joomla 2.5 и Joomla 3.0 ?
Так сказать "где ковырять", чтоб заработало :)
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
Так сказать "где ковырять", чтоб заработало :)
Выставить отображение ошибок на максимум и увидите где ошибка. Ну или тыц.
*

limon142

  • Захожу иногда
  • 71
  • 1 / 0
Подскажите пожалуйста в Joomla 1.5 права доступа писались так
Код

public function display($tpl = NULL)
{

$user = &JFactory::getUser();
..................
..................

if ($items) {
$access = new stdClass();
$access->canEdit = $user->authorize("com_content", "edit", "content", "all");
$access->canEditOwn = $user->authorize("com_content", "edit", "content", "own");
$access->canPublish = $user->authorize("com_content", "publish", "content", "all");

..................
..................
}
else {
echo "<h3> тут пусто</h3>";
}


А как теперь права прописывать?
*

limon142

  • Захожу иногда
  • 71
  • 1 / 0
Подскажите еще один вопрос, переделываю компонент j1.5 на j2.5
В одной из страниц появилась ошибка
Код
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and of.status = 1' at line 4 SQL=SELECT count(*) as cnt FROM jos_orders as of where of.id= and of.status = 1
Понятно что не отображается значение of.id=
но не понятно почему в j1.5 все прекрасно работает

вот сам код из контроллера
Код

$query = 'SELECT count(*) as cnt
FROM #__orders as of
where of.id='.$office->id.'
and of.status = 1';

Помогите подправить и кому не трудно объяснить эту ошибку?

« Последнее редактирование: 16.11.2014, 15:06:10 от limon142 »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Сталкивался недавно с аналогичным случаем под J3.
Попробуйте:
Код: php
$query = 'SELECT count(of.id) as cnt
FROM #__orders as of
where (of.id='.(int)$office->id.')
  and (of.status = 1)';
Не забывайте фильтровать, возьмите за правило.
А проще попробуйте переделать запрос по правилам api J
« Последнее редактирование: 16.11.2014, 17:43:35 от AlekVolsk »
*

limon142

  • Захожу иногда
  • 71
  • 1 / 0
Спасибо, получилось, но не совсем понятно почему помогло и где почитать больше инфы про  запросы api J
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
*

limon142

  • Захожу иногда
  • 71
  • 1 / 0
Спасибо за блог
Цитировать
joomlablog.ru
, для меня просто находка.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Документация по созданию модуля для Joomla 2.5 и Joomla 3.x

Автор b2z

Ответов: 1
Просмотров: 2190
Последний ответ 29.07.2015, 09:40:30
от b2z
Создание компонента MVC

Автор borodatych

Ответов: 36
Просмотров: 4343
Последний ответ 13.04.2015, 08:17:30
от flyingspook
Подскажите как сделать русификацию компонента)

Автор stardel

Ответов: 4
Просмотров: 6834
Последний ответ 08.04.2015, 09:08:00
от oxotnikkz
JPluginHelper::importPlugin('content') в Joomla 1.7

Автор Dutch

Ответов: 2
Просмотров: 4716
Последний ответ 30.03.2015, 14:22:51
от twins717
Документация по созданию плагина для Joomla 2.5 и Joomla 3.x

Автор b2z

Ответов: 8
Просмотров: 13925
Последний ответ 27.08.2014, 09:52:02
от skinny