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

Misha-san

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Принцип работы меню такой. При переходе по пункту меню "Компания", открывается страница где с боку есть еще одно меню, фактически подраздел раздела меню "Компания".
При этом кнопка "Компания" - находится в "нажатом", активном состоянии. Но когда перехожу по ссылке подменю, кнопка "Компания" становится неактивной.
Нужно когда открыт подраздел раздела меню "Компания", чтобы кнопка "Компания" была активна.
Подскажите пожалуйста как можно их так связать?? ^-^
*

Robinson

  • Захожу иногда
  • 442
  • 72 / 1
Re: Подскажите как связать 2 меню!
« Ответ #1 : 06.07.2010, 09:45:11 »
Именно так и работают стандартные модули меню. Публикуй модуль меню "подраздел раздела" на пункте меню "Компания" в нужном месте - "с боку" и он будет появляться при клике на пункт меню "Компания". Все остальное также делается в стандартных настройках.
*

Professor

  • Захожу иногда
  • 59
  • 10 / 0
Re: Подскажите как связать 2 меню!
« Ответ #2 : 06.07.2010, 10:24:37 »
Сразу видно кто читает FAQ а кто не читает)
Как сделать связанные меню?
*

Misha-san

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Подскажите как связать 2 меню!
« Ответ #3 : 09.07.2010, 20:45:18 »
Спасибо большое за то что ткнули носом! Очень помогло!!

Re: Подскажите как связать 2 меню!
« Ответ #4 : 25.07.2010, 15:55:43 »
А как сделать, чтобы подменю (которое в другом месте сайта) было видно всегда ?
« Последнее редактирование: 25.07.2010, 17:01:04 от Oldegus »
*

gamletjlo

  • Осваиваюсь на форуме
  • 44
  • 1 / 0
  • R U ready?
Re: Подскажите как связать 2 меню!
« Ответ #5 : 21.02.2011, 16:45:40 »
Как написано тут: http://joomlaforum.ru/index.php/topic,48469.0.html конечно можно использовать, если в других пунктах меню нет подпунктов(ибо в таком случае будут отображаться подпункты всех разделов). А если есть? И вам нужно вывести в другой позиции только подпункты одного раздела главного меню, как тогда поступить?

Re: Подскажите как связать 2 меню!
« Ответ #6 : 05.04.2011, 15:58:48 »
да, я все сделал как описано в FAQ, но при переходе на подпункт меню, оно пропадает, вместо того чтобы быть на месте с подсвеченым активным на данный момент подпунктом. Что не так?? Почему пропадает?

Разобрался. Нужно было через Ctrl выделить все подпункты заданного меню, где должно быть это подменю.
« Последнее редактирование: 05.04.2011, 16:51:37 от regman »
*

Antonyony

  • Новичок
  • 6
  • 0 / 0
Re: Подскажите как связать 2 меню!
« Ответ #7 : 03.06.2012, 21:43:12 »
Хороший способ описан в FAQке!

А как бы выкрутиться в следующем случае:
-в главном горизонтальном меню, для основных пунктов меню (Новости; База знаний и пр.)

выбран "Разделитель"?Случай, когда обходишься без "шаблона блога категории".
Т.е. нужно выбрать один из вложенных пунктов "Производство"; "Вокруг авто" , чтобы попасть внутрь категории "Новости"

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

Antonyony

  • Новичок
  • 6
  • 0 / 0
Re: Подскажите как связать 2 меню!
« Ответ #8 : 04.06.2012, 17:32:23 »
Пожалуй, непонятно написал.
Постараюсь пояснить примером. На сайте vniibt-bi.ru , если щелкнешь на пункте меню "Продукция", то сразу попадешь в один из подпунктов "Винтовые забойные...". При этом везде есть подсветка.
Подскажите , пожалуйста, как реализовать такое же связанное меню?
*

Antonyony

  • Новичок
  • 6
  • 0 / 0
Re: Подскажите как связать 2 меню!
« Ответ #9 : 04.06.2012, 17:47:33 »
Поразмышлял... Появились идеи...
В принципе, можно выкрутиться следующим способом. Выбрать в качестве типа пункта меню "Внешняя ссылка", которая будет вести на нужный пункт связанного меню.
Но, пока сайт не залит на хостинг, ссылки будут иметь вид http://localhost/имя_сайта/products/***
А после заливки придется все ссылки вручную переделывать в вид: http://lимя_сайта/products/***

Как вариант, конечно. Но может есть альтернатива этому способу?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вытащить главное меню из шаблона

Автор Леон

Ответов: 2
Просмотров: 1751
Последний ответ 18.05.2015, 15:40:18
от Леон
Редактировать меню сайта

Автор sanin25

Ответов: 6
Просмотров: 1854
Последний ответ 10.04.2015, 18:40:19
от sanin25
Привязка плагина к пункту меню

Автор rudoy24

Ответов: 0
Просмотров: 1338
Последний ответ 28.10.2014, 14:41:38
от rudoy24
[РЕШЕНО] Абсолютные ссылки в меню

Автор css_ufa

Ответов: 1
Просмотров: 2619
Последний ответ 24.06.2014, 11:31:28
от djfactory
top-menu не открывается

Автор vityatir

Ответов: 1
Просмотров: 1402
Последний ответ 02.03.2014, 13:29:49
от Efanych