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

d13v555

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
Добрый день. Как открыть ссылку в новом окне (именно в окне а не в новой вкладке). Пример: http://www.sms-steklo.ru/catalog/dp/5072 там, под фотками есть УВЕЛИЧИТЬ ИЗОБРАЖЕНИЕ, мне нужно сделать чтоб открывались фотки так же. Помогите разобраться.
*

Grigory S.

  • Давно я тут
  • 658
  • 70 / 0
  • (с)
Re: Открыть ссылку в новом окне
« Ответ #1 : 14.04.2016, 08:13:32 »
К ссылке target="_blank" добавьте.
Не задав правильный вопрос, невозможно получить правильный ответ.
Для "спасибок" существует кнопочка "+".
*

d13v555

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
Re: Открыть ссылку в новом окне
« Ответ #2 : 14.04.2016, 08:14:35 »
Это я знаю. Открывает в новой вкладке. а Мне нужно как на том сайте В НОВОМ ОКНЕ
*

Grigory S.

  • Давно я тут
  • 658
  • 70 / 0
  • (с)
Re: Открыть ссылку в новом окне
« Ответ #3 : 14.04.2016, 08:22:08 »
Точно, пардон) Вот вам с того сайта))

Код: javascript
function ImgShw(ID, width, height, alt)
{
var scroll = "no";
var top=0, left=0;
if(width > screen.width-10 || height > screen.height-28) scroll = "yes";
if(height < screen.height-28) top = Math.floor((screen.height - height)/2-14);
if(width < screen.width-10) left = Math.floor((screen.width - width)/2-5);
width = Math.min(width, screen.width-10);
height = Math.min(height, screen.height-28);
var wnd = window.open("","","scrollbars="+scroll+",resizable=yes,width="+width+",height="+height+",left="+left+",top="+top);
wnd.document.write(
"<html><head>"+
"<"+"script type=\"text/javascript\">"+
"function KeyPress(e)"+
"{"+
" if (!e) e = window.event;"+
" if(e.keyCode == 27) "+
" window.close();"+
"}"+
"</"+"script>"+
"<title>"+(alt == ""? "Картинка":alt)+"</title></head>"+
"<body topmargin=\"0\" leftmargin=\"0\" marginwidth=\"0\" marginheight=\"0\" onKeyDown=\"KeyPress(arguments[0])\">"+
"<img src=\""+ID+"\" border=\"0\" alt=\""+alt+"\" />"+
"</body></html>"
);
wnd.document.close();
wnd.focus();
}

Код: html4strict
<a target="_blank" href="image.jpg" onclick="ImgShw('image.jpg','1024','681', ''); return false;" title="увеличить изображение">увеличить изображение</a>
Не задав правильный вопрос, невозможно получить правильный ответ.
Для "спасибок" существует кнопочка "+".
*

d13v555

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
Re: Открыть ссылку в новом окне
« Ответ #4 : 14.04.2016, 08:30:01 »
Спасибо. Буду сейчас разбираться)
*

d13v555

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
Re: Открыть ссылку в новом окне
« Ответ #5 : 14.04.2016, 09:11:38 »
Поставил. Окно открывается   :D

Новая проблема. Мало что понимаю в этот коде но на открывшемся окне нет фото. В коде показывает что пытается открыть image.jpg. В <a target="_blank" href="image.jpg" onclick="ImgShw('image.jpg','1024','681', ''); return false;" title="увеличить изображение">увеличить изображение</a> я поменял href на ту фото которая нужна но все-равно не открывает. Может нужно что - то в коде менять, где то здесь "<img src=\""+ID+"\" border=\"0\" alt=\""+alt+"\" />"+
*

Grigory S.

  • Давно я тут
  • 658
  • 70 / 0
  • (с)
Re: Открыть ссылку в новом окне
« Ответ #6 : 14.04.2016, 09:17:22 »
Вместо image.jpg нужно путь до вашего изображения вставлять.
Не задав правильный вопрос, невозможно получить правильный ответ.
Для "спасибок" существует кнопочка "+".
*

d13v555

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
Re: Открыть ссылку в новом окне
« Ответ #7 : 14.04.2016, 09:19:22 »
Я написал что меняю href. Пишу путь к файлу. Все равно пытается открыть image.jpg
*

Grigory S.

  • Давно я тут
  • 658
  • 70 / 0
  • (с)
Re: Открыть ссылку в новом окне
« Ответ #8 : 14.04.2016, 09:23:38 »
Тут тоже менять надо
Код: javascript
onclick="ImgShw('image.jpg','1024','681', '');
« Последнее редактирование: 14.04.2016, 09:28:06 от Grigory S. »
Не задав правильный вопрос, невозможно получить правильный ответ.
Для "спасибок" существует кнопочка "+".
*

d13v555

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
Re: Открыть ссылку в новом окне
« Ответ #9 : 14.04.2016, 09:25:25 »
А здесь что? Подробнее пожалуйста  ^-^
*

d13v555

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
Re: Открыть ссылку в новом окне
« Ответ #10 : 14.04.2016, 09:27:39 »
Ах да, понял всё)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Видео в модальном окне

Автор Leo1986

Ответов: 0
Просмотров: 741
Последний ответ 25.03.2024, 18:48:40
от Leo1986
Убрать из модуля новостей ссылку на статью, на которой выводится модуль

Автор zeus07

Ответов: 3
Просмотров: 1257
Последний ответ 08.11.2023, 21:17:26
от GrayAn
reCapcha во всплывающем окне - "Ошибка защиты от спама"

Автор Dannik

Ответов: 12
Просмотров: 2387
Последний ответ 14.09.2023, 18:59:24
от all_zer
Как назначить пункту меню ссылку на категории К2?

Автор kochevnik

Ответов: 1
Просмотров: 573
Последний ответ 12.03.2023, 16:26:44
от kochevnik
Как создать ссылку на категорию в картинке материала?

Автор Mnojitell

Ответов: 0
Просмотров: 897
Последний ответ 12.01.2023, 14:14:11
от Mnojitell