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

wh1t3

  • Новичок
  • 4
  • 0 / 0
Здравствуйте.
Joomla заинтересовался совсем недавно, с хтмл/пхп/ксс и прочими премудростями знаком только лишь поверхностно, если вообще можно так сказать. Поэтому разбираюсь в кодах, практически, методом тыка. Заранее извиняюсь, если кому-то мои вопросы кажутся абсолютно идиотскими.

История проблемы такова:

Взят шаблон Metamorph v2 студии Rockettheme.
В верхней части шаблона присутствует меню, которое мне необходимо заменить на другое.

Я делаю следующее:
1. Создаю необходимое мне горизонтальное меню с помощью компонента SwMenuPro v6.4, тип меню - "Trans Menu".
2. В файле index.php директории шаблона комментирую следующий блок:
Код
<!--<!-- Begin Horizontal Menu -->
<div id="horiz-menu1">
<div id="horiz-menu" class="<?php echo $mtype; ?>">
<?php if($mtype != "module") : ?>
<?php echo $topnav; ?>
<?php else: ?>
<jdoc:include type="modules" name="toolbar" style="none" />
<?php endif; ?>
</div>
</div>
<!-- End Horizontal Menu -->--->
В результате этих действий меню старое меню исчезает.

3. Ниже в этом же файле пишу следующее:
Код
<!-- Toolbar position -->
<div id="toolbar">
<jdoc:include type="modules" name="toolbar" style="none" />
</div>
<!-- End Toolbar position -->
После этого действия созданное в первом пункте меню начинает отображаться на позиции toolbar.

На рисунке ниже видно, что пункт выпадающего меню прорисовывается в каком попало месте. Теоретически он должен выпадать просто вниз. В компоненте SwMenuPro во время предпросмотра все отображается так, как должно.

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

Заранее благодарю за помощь и извиняюсь за потраченное время.



[вложение удалено Администратором]
*

chtec

  • Захожу иногда
  • 230
  • 100 / 1
Совершенно не понятно, почему нельзя было просто заменить пункты старого меню на нужные?

В любом случае стоит покопаться в css шаблона на предмет параметров для id="toolbar", id="horiz-menu1" и пр... А вообще, в Metamorph может быть (скорее всего) предусмотрен свой шаблон для mod_mainmenu - посмотри, он может лежать в папке шаблона, подпапка "html".
Осень тоже хорошо.
*

paron

  • Новичок
  • 9
  • 0 / 0
Всем привет!
У меня такой вопросец:
С помощью компонента SwMenuPro 6.4 создаю Akkordian Menu вертикальное. В предварительном просмотре подпункты меню раскрываются при нажатии на родительский пункт и остаются в раскрытом виде до тех пор пока не нажмешь на другой пункт. В шаблоне же ситуация иная: при нажатии подпункты выпадают и почти сразу же исчезают... Как исправить? Скажу сразу, что autoclose не использую!
*

vital_s1

  • Захожу иногда
  • 267
  • 26 / 0
  • Joomla магия
Там есть функция Sub Menu Open/Close Delay: нужно выставить тайминг для подменю.
Не бойся спрашивать, без этого ни как! -)
*

paron

  • Новичок
  • 9
  • 0 / 0
Тайминг стоит 50ms. Его надо увеличить?
*

vital_s1

  • Захожу иногда
  • 267
  • 26 / 0
  • Joomla магия
Тайминг стоит 50ms. Его надо увеличить?
Поэксперементируй с цифрами..... конечно же увеличить.
Не бойся спрашивать, без этого ни как! -)
*

paron

  • Новичок
  • 9
  • 0 / 0
Практически нет никакого эффекта  :(
*

Vectorit

  • Новичок
  • 4
  • 0 / 0
Еще вопросик про меню.
Оно по умолчанию центрировано по левому краю. Как можно сделать чтобы оно растягивалось на всю ширину тулбара равномерно, если например у меня мало пунктов?
*

Kaylang

  • Захожу иногда
  • 74
  • 5 / 0
В Joomla 1.5.13 cоздал горизонтальное выпадающее меню с помощью swMenuFree 5.2. В превью, выпадающее меню отображается, как положено, но на сайте выпадающие дивы появляются значительно ниже и правее. В чем может быть проблема?
Классы для выпадающего меню уникальны.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

убрать из меню заголовки h3

Автор nexter

Ответов: 19
Просмотров: 7889
Последний ответ 03.02.2020, 18:49:47
от durte
При добавлении нового пункта меню не отображается содержимое

Автор Denko

Ответов: 2
Просмотров: 3296
Последний ответ 16.01.2020, 18:40:55
от Denko
Не нажимается пункт меню на мобильной версии

Автор Sensession

Ответов: 7
Просмотров: 4797
Последний ответ 04.01.2020, 16:45:27
от xpank
Не отображаются пункты в меню

Автор physic

Ответов: 20
Просмотров: 23005
Последний ответ 20.09.2019, 16:54:01
от beliyadm
Как в ARI Ext Menu добиться работы параметра "Показать в меню"?

Автор vasmed

Ответов: 1
Просмотров: 3543
Последний ответ 01.03.2019, 11:12:18
от vasmed