Новости 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 Пользователей и 2 Гостей просматривают эту тему.
  • 14 Ответов
  • 3231 Просмотров
*

Andrey N.

  • Новичок
  • 6
  • 0 / 0
Нужен раздел, пункт меню с адресом mysite.ru/food. В корне сайта создал папку с именем food, она нужна, чтобы делать ссылки на файлы такого вида: mysite.ru/food/file.pdf. Создаю пункт меню с алиасом, соответственно получаю при сохранении:
Алиас пункта меню первого уровня не может быть 'food' поскольку 'food' совпадает с именем подкаталога в каталоге с системными файлами Joomla.
Каким образом можно сделать так, чтобы получить нужные адреса?
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
Каким образом можно сделать так, чтобы получить нужные адреса?
Переименовать папку, создать пункт меню, переименовать папку обратно.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Andrey N.

  • Новичок
  • 6
  • 0 / 0
Переименовать папку, создать пункт меню, переименовать папку обратно.
Алиас присвоить получилось, но по ссылке mysite.ru/food получаю forbidden: You don't have permission to access /food/ on this server.
В wp это решалось помещением в эту папку index.php c содержимым:
Код
<? include 'index.php'
Закинул такой файл, перебрасывает на главную без подгрузки стилей и скриптов.
*

Andrey N.

  • Новичок
  • 6
  • 0 / 0
Если кому нужно, решение нашёл на форуме, на английском: Name your folder "Training". That wil not conflict with "trainig" on a Linux Server. Will not work if you are hosted on Windows though.
Работает.

upd. )) Работает, но ссылки тоже нужно с большой буквой: mysite.ru/Food/file.pdf. Как же сделать, чтобы ссылка была точной, строчными буквами?
« Последнее редактирование: 22.05.2021, 18:51:31 от Andrey N. »
*

Selvik

  • Новичок
  • 1
  • 0 / 0
Добрый день! Такая же проблема. Нашли решение?
*

Aleksandr72

  • Новичок
  • 9
  • 0 / 0
Добрый день. Работаю в школе. Тоже появилась надобность это сделать. Стоит Joomla 2.5. Я вышел таким способом. Тоталкомандером создал папку в корне сайта получилось http://abalakovo.ru/food/ положил туда те самые файлы и все заработало. Смысл весь в том, что это нужно для автоматизированной системы мониторинга. Физически страница не нужна на сайте, поэтому весь огород не имеет смысла. Файлы просто заливаются в эту папку файловым менеджером и система мониторинга их находит. Пишу потому что возможно кому то пригодится. Вот адрес по которому можно проверить вашу ссылку. http://мониторингпитание.рф/
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
Не так уж трудно и полноценную страницу там сделать. Положить в эту папку index.php и в нем сделать необходимую верстку. При желании можно даже апи Joomla подключить. Но если это все не требуется, то еще проще.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Aleksandr72

  • Новичок
  • 9
  • 0 / 0
Возможно. Я как бы давно занимаюсь сайтом, но на уровне разместить информацию. Когда то сделал его, взял готовый шаблон, немного поправил что то в расширениях, и вроде помаленьку работает. Особых познаний в программировании нет. Раньше был моложе и занимался этим больше. Сейчас нет. Пытался конечно сначала сделать страницу, у меня не получилось чтобы страница была и каталог food и ссылка food. Если вы пишите есть вариант, то можно и подробнее написать как и что поправить, может кому и пригодится.
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
Если вы пишите есть вариант, то можно и подробнее написать как и что поправить, может кому и пригодится.
Объяснений на эту тему уже было много, а вопрос продолжают поднимать. Кто совсем не умеет кодить - тому подойдет ваш вариант.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Aleksandr72

  • Новичок
  • 9
  • 0 / 0
Да, думаю мой вариант и есть правильный. Но, пока я это понял, пришлось попотеть. И информации сильно не мог найти. Я искал конкретно по данному случаю с папкой food. Спасибо всем кто откликнулся.
*

gabrish-marina

  • Новичок
  • 1
  • 0 / 0
Доброго времени суток, помогите пожалуйста сделать папку food на Joomla. Директор напрягает, но я не системный администратор, а просто наполняю контент на сайте. Как через через total commander? Заранее благодарна
*

ShopES

  • Захожу иногда
  • 426
  • 11 / 0
через ftp или панель управления хостингом
*

Garrr

  • Новичок
  • 2
  • 0 / 0
Добрый день, коллеги. Я нашел решение.
1. Создаем в корневой директории сайта директорию pitanie
2. Открываем файл .htaccess на редактирование и добавляем строку:
RewriteRule ^food/(.*)\.xlsx$ /pitanie/$1.xlsx [L]

Joomla 1.5 - все работает. Не поленился и зарегился для ответа: Гугл меня привел в эту тему, решение нашел тут. Повезло что решение от WP взлетело на Жумле. Удачи, коллеги.
« Последнее редактирование: 07.10.2021, 23:49:10 от Garrr »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Главное меню

Автор Анастасия87

Ответов: 7
Просмотров: 1570
Последний ответ 21.05.2021, 08:40:40
от arma
Как сократить вертикальное расстояние между меню сайта и баннером?

Автор MultiMatrix83

Ответов: 2
Просмотров: 1424
Последний ответ 16.02.2020, 19:30:25
от MultiMatrix83
Редактирование Модуля - в меню не удаляется пункт

Автор bovinkm

Ответов: 4
Просмотров: 1617
Последний ответ 16.08.2019, 15:00:22
от bovinkm
Не выбирается материал в Joomla при создании меню. Как быть?

Автор elliotos

Ответов: 8
Просмотров: 3221
Последний ответ 09.07.2019, 16:38:31
от cerxx
[Баг - не решено] Копировать пункт в другое меню с тем же алиасом?

Автор ELLE

Ответов: 104
Просмотров: 19398
Последний ответ 14.05.2019, 15:06:50
от voland