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

mremin

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Всем доброго времени суток!

Есть Joomla 3.6.0, мультиязычность настроена стандартным способом, плагин "Фильтр языков" включен, для каждого языка создано отдельное меню, отдельные модули и отдельные материалы.

При переключении языка сайта (с помощью модуля переключения языков) находясь на главной странице, изменение языка не происходит, выводится всегда только на русском языке (ссылка на страницу также не меняется - остается с префиксом /RU). Находясь на всех других страницах (кроме главной), переключение языка работает корректно.

Пробовал в разных браузерах - везде один результат. В какую сторону копать?
*

Mikha

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
должны быть две главные страницы для каждого языка
*

1-F7

  • Захожу иногда
  • 197
  • 0 / 0
Я новый сайт создавал для другого языка.
*

Mikha

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Я новый сайт создавал для другого языка.
для разных языков разные сайты?
*

1-F7

  • Захожу иногда
  • 197
  • 0 / 0
Да, можно на разных доменах, или поддоменах, или внутренних каталог типа /en/ /de/ и так далее, главной чтоб язык соответствовал вашему сайту.

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-gb" lang="en-gb" dir="ltr">

Других способов я не знаю. Для меня это самый легкий способ.
*

1-F7

  • Захожу иногда
  • 197
  • 0 / 0
*

Eholov

  • Захожу иногда
  • 170
  • 14 / 0
Попробуйте стандартный плагин кэша Joomla включить.
*

darkghost

  • Живу я здесь
  • 2212
  • 97 / 0
Доброе время суток, Форум!
Чтобы не плодить темы - пишу здесь, если не прав - перенесите тему, плисс.

Вопрос следующего рода - есть два языка (ру и инглиш), по умолчанию стоит -ру-, можно ли сделать так, чтобы пользователю открывался тот язык сайта, какая у него раскладка клавы в браузере?
У версии 2,5 получилось такое сделать, а вот в Жуумле 3, ххх шо то не могу.
Заранее благодарен
*

yunira

  • Осваиваюсь на форуме
  • 13
  • 1 / 0
Всем доброго времени суток!

Есть Joomla 3.6.0, мультиязычность настроена стандартным способом, плагин "Фильтр языков" включен, для каждого языка создано отдельное меню, отдельные модули и отдельные материалы.

При переключении языка сайта (с помощью модуля переключения языков) находясь на главной странице, изменение языка не происходит, выводится всегда только на русском языке (ссылка на страницу также не меняется - остается с префиксом /RU). Находясь на всех других страницах (кроме главной), переключение языка работает корректно.

Пробовал в разных браузерах - везде один результат. В какую сторону копать?

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

Не перевелись кнопки после установки языка на лиццо сайта

Автор Александр Кардаш

Ответов: 3
Просмотров: 3784
Последний ответ 03.10.2022, 20:43:44
от Александр Кардаш
Условие выбора языка в коде if=lang = ru то....?

Автор Dolphin4ik_1

Ответов: 1
Просмотров: 4149
Последний ответ 13.01.2022, 15:10:41
от NewUsers
Falang и переключатель языка

Автор max_1985

Ответов: 3
Просмотров: 4489
Последний ответ 22.11.2021, 22:19:11
от max_1985
Мультиязычный сайт и атрибут lang=&quot;&quot;

Автор amrok

Ответов: 2
Просмотров: 5129
Последний ответ 07.06.2021, 20:56:24
от amrok
Мультиязычность на сайт

Автор mihasstas

Ответов: 1
Просмотров: 6926
Последний ответ 06.04.2020, 14:46:19
от NewUsers