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

oshmarin

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



буду благодарен тому кто знает эту проблему и решение.
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Re: vmError: VmTable #__virtuemart_products_ru_ru Check not passed
« Ответ #1 : 26.03.2013, 10:54:12 »
Если следовать переводу, вы забыли указать либо название товара либо алиас :)
*

oshmarin

  • Новичок
  • 5
  • 0 / 0
Re: vmError: VmTable #__virtuemart_products_ru_ru Check not passed
« Ответ #2 : 26.03.2013, 12:17:23 »
Если следовать переводу, вы забыли указать либо название товара либо алиас :)
Спасибо огромное! уважуха и респект вам!
*

Servelatin

  • Захожу иногда
  • 132
  • 1 / 0
Re: vmError: VmTable #__virtuemart_products_ru_ru Check not passed
« Ответ #3 : 17.08.2013, 11:51:55 »
А если ошибка такая: vmError: VmTable #__virtuemart_vendors_ru_ru Check not passed. Neither slug nor obligatory value at vendor_store_name for auto slug creation is given
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Re: vmError: VmTable #__virtuemart_products_ru_ru Check not passed
« Ответ #4 : 17.08.2013, 11:55:37 »
А если ошибка такая: vmError: VmTable #__virtuemart_vendors_ru_ru Check not passed. Neither slug nor obligatory value at vendor_store_name for auto slug creation is given
судя по тому, что написано, вы не указали ни имя производителя, ни его алиас на латинице
*

Servelatin

  • Захожу иногда
  • 132
  • 1 / 0
Re: vmError: VmTable #__virtuemart_products_ru_ru Check not passed
« Ответ #5 : 17.08.2013, 12:07:16 »
Спасибо за быстрый ответ.
Все данные продавца заполнены, на обоих языках. Пробовал даже дублировать таблицу virtuemart_vendors_ru_ru с virtuemart_vendors_en_g, не помогает.
Дело в том, что с этой ошибкой всё работает, но смотрится некорректно при оформлении заказа.
Проблема известная, но решений нигде нет, кроме одного - настройка - установить таблицы или обновить их. Мне оно не помогает, как и многим другим ищущим решение, к сожалению.
*

Максим Пишняк

  • Давно я тут
  • 837
  • 35 / 0
Re: vmError: VmTable #__virtuemart_products_ru_ru Check not passed
« Ответ #6 : 18.08.2013, 15:26:36 »
Возможно ли что не назначен vendor? Для его назначения есть кнопка в инструментах VM в последней его версии.
*

Dobreff

  • Захожу иногда
  • 214
  • 10 / 4
Re: vmError: VmTable #__virtuemart_products_ru_ru Check not passed
« Ответ #7 : 17.09.2013, 18:01:35 »
не вижу такой кнопки .... ((
*

Максим Пишняк

  • Давно я тут
  • 837
  • 35 / 0
Re: vmError: VmTable #__virtuemart_products_ru_ru Check not passed
« Ответ #8 : 18.09.2013, 12:19:52 »
И ваша версия?
*

Dobreff

  • Захожу иногда
  • 214
  • 10 / 4
Re: vmError: VmTable #__virtuemart_products_ru_ru Check not passed
« Ответ #9 : 18.09.2013, 14:54:52 »
последняя com_virtuemart.2.0.22d
*

Максим Пишняк

  • Давно я тут
  • 837
  • 35 / 0
Re: vmError: VmTable #__virtuemart_products_ru_ru Check not passed
« Ответ #10 : 18.09.2013, 23:45:37 »
В разделе Инструменты смотрели?
*

Dobreff

  • Захожу иногда
  • 214
  • 10 / 4
Re: vmError: VmTable #__virtuemart_products_ru_ru Check not passed
« Ответ #11 : 19.09.2013, 12:39:46 »
- Для его назначения есть кнопка в инструментах VM в последней его версии.
- не вижу такой кнопки .... ((
- В разделе Инструменты смотрели?
====
ааа.... в ИНСТРУМЕНТАХ?..а я думал в ИНСТРУМЕНТАХ......
СпасибО!
*

Максим Пишняк

  • Давно я тут
  • 837
  • 35 / 0
Re: vmError: VmTable #__virtuemart_products_ru_ru Check not passed
« Ответ #12 : 20.09.2013, 16:50:02 »
Всегда, пожалуйста.

Между прочим ваш пост выглядит как анекдот.
*

webch

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
  • 3dch.ru создание виртуальных туров
Re: vmError: VmTable #__virtuemart_products_ru_ru Check not passed
« Ответ #13 : 29.09.2013, 03:59:23 »
Если следовать переводу, вы забыли указать либо название товара либо алиас :)

СПАСИБО БОЛЬШОЕ УВАЖУХА И РЕСПЕКТ!
*

Dobreff

  • Захожу иногда
  • 214
  • 10 / 4
Re: vmError: VmTable #__virtuemart_products_ru_ru Check not passed
« Ответ #14 : 29.09.2013, 13:40:02 »
Всегда, пожалуйста.

Между прочим ваш пост выглядит как анекдот.
Да нет, это вы ни юмора, ни логики не понимаете )))
ЕСТЕСТВЕННО я в НИСТРУМЕНТАХ смотрел )) Раз уж в самом начале написано в инструментах VM в последней его версии.

Но беда что в ИНСТРУМЕНТАХ ничего нет подобного
*

andersan2000

  • Захожу иногда
  • 64
  • 0 / 0
Re: vmError: VmTable #__virtuemart_products_ru_ru Check not passed
« Ответ #15 : 02.10.2013, 12:20:26 »
Респект!
*

skazka

  • Новичок
  • 1
  • 0 / 0
  • просто Sk@zzzka
Re: vmError: VmTable #__virtuemart_products_ru_ru Check not passed
« Ответ #16 : 25.10.2013, 12:04:31 »
Спасибо за быстрый ответ.
Все данные продавца заполнены, на обоих языках. Пробовал даже дублировать таблицу virtuemart_vendors_ru_ru с virtuemart_vendors_en_g, не помогает.
Дело в том, что с этой ошибкой всё работает, но смотрится некорректно при оформлении заказа.
Проблема известная, но решений нигде нет, кроме одного - настройка - установить таблицы или обновить их. Мне оно не помогает, как и многим другим ищущим решение, к сожалению.
У меня тоже была такая проблема, решила ее тем что просто заполнила поля Название магазина и название продавца в разделе магазин, вкладка продавец и ошибка ушла. Может поможет и вам, удачи!  ;)
*

Valmount

  • Новичок
  • 7
  • 0 / 0
Re: vmError: VmTable #__virtuemart_products_ru_ru Check not passed
« Ответ #17 : 26.01.2014, 15:07:03 »
Добрый день. Установил VM, пытаюсь изменить настройки магазина и сохранить их. Пишет vmError: Имя пользователя занято и не сохраняет внесённые изменения. Подскажите, пож-та, с чём может быть связана данная ошибка?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ошибка "vmError: Имя пользователя занято" при попытке сохранить настройки магазина

Автор Cueball

Ответов: 7
Просмотров: 5953
Последний ответ 16.05.2020, 17:05:15
от d0ublezer0
vmError: Сохранить не удалось из-за ошибки: В доступе отказано

Автор Melkiy

Ответов: 3
Просмотров: 1035
Последний ответ 11.11.2018, 17:27:56
от lexxbry
vmError: Invalid media, image type does not fit to extension

Автор vovchikku

Ответов: 1
Просмотров: 3091
Последний ответ 15.05.2018, 08:34:47
от Чезз
vmError: related product is missing, maybe unpublished

Автор o_fedor

Ответов: 3
Просмотров: 1788
Последний ответ 02.08.2017, 08:57:25
от o_fedor
vmError: Warning, the Безопасный путь is empty

Автор Leds555

Ответов: 2
Просмотров: 9913
Последний ответ 11.01.2017, 11:06:54
от slava088