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

Belka

  • Захожу иногда
  • 148
  • 8 / 0
Столкнулась со странным глюком. Есть меню из 12 пунктов. При нажатии на какой-нибудь пункт - переход на соответствующую категорию (точнее настроен вывод материалов категории). Так вот, при нажатии на один из пунктов, долго "думает" браузер и в итоге получается ошибка 504 (Gateway Time-out).

Что только не делала: исправляла базу в phpMyAdmin, перестраивала пункты меню и категории, переносила из глючной категории материалы и складывала их обратно, пересохраняла и саму категорию и материалы оттуда, чистила кэш после каждого действия, отключала практически все плагины и модули, меняла шаблон по-умолчанию - толку ноль. Один раз удалось зайти в этот пункт меню и перейти к списку материалов категории, но ко всем ссылкам на материалы, вдруг добавилось нечто странное в виде http://сайт.com/категория/материал.html?itemid=0 (не запомнила точнее до символа, но этой пакости после HTML быть не должно), естественно ведет к 404. Очистила кэш, после этого перестроила меню - теперь только ошибка 504.

Еще раз замечу, что только с этим пунктом меню и этой категорией такой вот баг.

Всю голову уже сломала, идей больше нет. Может кто-то сталкивался с таким багом?

Joomla 2.5.11.

P.S. Удалось скопировать эти неверные ссылки. Вот образец: http://сайт.com/категория/материал.html?itemid=xxx:алиас материала. Все, что выделено взялось непонятно откуда. Этого быть не должно. Правильная ссылка должна быть вида: http://сайт.com/категория/материал.html. Подозрения есть такие, что при генерировании этих кривых ссылок, Joomla сильно грузит сервер и из-за этого ошибка 504. Но вот откуда эти кривые ссылки генерятся и почему произошел такой глюк, понять никак не могу.
« Последнее редактирование: 15.07.2013, 17:30:12 от Belka »
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Ошибка 504 в одной из категорий
« Ответ #1 : 15.07.2013, 18:08:01 »
Блабла..
А где ссылка? кто хостер?
*

Belka

  • Захожу иногда
  • 148
  • 8 / 0
Re: Ошибка 504 в одной из категорий
« Ответ #2 : 15.07.2013, 18:11:51 »
Хостер-то причем? Сайт на VDS. Там запас еще на десяток таких сайтов, если не больше. Проблема только с одной категорией. Вот ссылка - http://www.codspc.com/call-of-duty/call-of-duty-black-ops.html
Там список материалов в категории. Если не вылезет ошибка 504, то станет видно, что все ссылки корявые.
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Ошибка 504 в одной из категорий
« Ответ #3 : 15.07.2013, 18:15:17 »
Казалось бы, причем тут хостер?
А по ссылкам - мало инфы.
Что стоит из сеф-компонентов\плагинов? Что менялось?
Не переносился ли с 1,5?
*

Belka

  • Захожу иногда
  • 148
  • 8 / 0
Re: Ошибка 504 в одной из категорий
« Ответ #4 : 15.07.2013, 18:24:46 »
Казалось бы, причем тут хостер?
А по ссылкам - мало инфы.
Что стоит из сеф-компонентов\плагинов? Что менялось?
Не переносился ли с 1,5?
Хостер тут точно ни при чем. Про причины появления 504 ошибки я знаю. Только у меня выделенный сервер (VDS), работает на Apache и NGINX, если бы сервер не тянул, то все сайты бы падали с ошибкой 504. Тут же проблема только с этой категорией. Все остальное на сайте, да и др. сайты на сервере работают нормально.
SEF стоит встроенный, родной. Его я отключала - без толку. Перенос с 1.5 был еще в прошлом году, с тех пор ни единого бага не было, модули-плагины все старые (по полгода и больше), ничего не менялось. Единственное последнее действие в начале мая - обновление с J2.5.9 до J2.5.11 и все. Глюк же появился сегодня с утра. Просто и внезапно. С утра очистила кэш (удаляла мусорные посты с форума Kunena, заодно кэш очистила).
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] title материалов и категорий без пунктов меню

Автор pharaoh

Ответов: 269
Просмотров: 63286
Последний ответ 03.02.2022, 02:45:26
от globus812
Ошибка загрузки скрипта

Автор shane

Ответов: 0
Просмотров: 1363
Последний ответ 17.09.2019, 01:35:43
от shane
Отключить скрипты для одной страницы

Автор mixis

Ответов: 5
Просмотров: 8712
Последний ответ 08.03.2019, 10:06:54
от Сергей Гончаров
Ошибка 500 вместо 404 на несуществующих страницах с расширением только php

Автор old_lotar

Ответов: 12
Просмотров: 2366
Последний ответ 12.02.2019, 12:58:13
от draff
Появляются несуществующие ссылки несуществующих категорий с активными материалам

Автор hels

Ответов: 4
Просмотров: 1650
Последний ответ 29.09.2018, 15:18:21
от Efanych