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

Клюква

  • Осваиваюсь на форуме
  • 42
  • 0 / 1
*

Клюква

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

AzaLeo

  • Захожу иногда
  • 76
  • 2 / 0
Обновил модуль, спасибо за реализацию, которую обсуждали на первой странице. Еще одна маленькая просьба - сделайте, пожалуйста, параметр, при котором название праздника будет выводится красным цветом. Это государственные праздники.
*

AzaLeo

  • Захожу иногда
  • 76
  • 2 / 0
еще момент: есть такие даты, как "последняя суббота месяца". С существующими настройками, как я понял, этого не сделать.
*

EvilBlacker

  • Новичок
  • 5
  • 1 / 0
Модуль удобный, спасибо
Но есть существенный недостаток, он игнорирует часовой пояс установленный в Joomla, работает по времени железного сервера, а он (в моём случае) расположен в сша, представляете с каким опозданием выводятся даты
А ещё у меня предложение, вставить скрипт текущей даты, чтобы вместо "Нет событий" отображалась текущая дата, например такой скрипт:
Код
<script language="JavaScript" type="text/javascript">
var Today=new Date();

Day=new Array("Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг",
"Пятница", "Суббота");

Month=new Array("Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля",
"Августа", "Сентября", "Октября", "Ноября", "Декабря");

document.write("<TABLE width=200 height=100 style='border:1px solid #FF6600;'>" +
"<tr><td align=center>" + Day[Today.getDay()] +
"<br><font color=orangered size=+3>" + Today.getDate() + "</font><br><b>" +
Month[Today.getMonth()] + "</b><br><font color=#808080 size=+1>" +
Today.getFullYear() + "</font><br>год</td></tr></TABLE>");
</script>
как он работает http://livelaboratory.ru/
*

JaS0n

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
А как нужно сделать запись чтобы напоминание выводилось например за 30 дней до событий и так до самого события?
*

EvilBlacker

  • Новичок
  • 5
  • 1 / 0
Fatal error: Call to undefined function mb_ereg() in /.../public_html/modules/mod_simple_informer/helper.php on line 70
вот строка:
   mb_ereg("^\[(\d[x\d]?\d).((?:$cur_month)|(?:00))\+?(\d{1,3})?==(.*?)==(.*?)==(.*?)]$",$matches[$i], $interval);      
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
*

figaro71

  • Новичок
  • 1
  • 0 / 0
День добрый! Был очень доволен до вчерашнего дня )) Возник вопрос: есть ограничение на количество событий в списке?
При очередном добавлении порции событий при сохранении список обнулился и настройки сбросились в дефолт.
*

Solbadguy

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
спасибо за модуль, помог реализовать задуманные идеи на сайте.
*

Миф

  • Новичок
  • 6
  • 0 / 0
спасибо за модуль!
А можно ли сделать, чтобы события не скрывались в слайдеры/спойлеры, а выводились в виде слайд-шоу? скажите хотя бы где копать
 
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
а что сложного?
все готово для счастья.
нашел подходящий js скрипт и поменял шаблон, чтобы нужные классы были у блоков с событиям.
грубо говоря, вся задача сводится к замене одного файла скриптов другим.
я же тоже не сам писал слайдеры, а только шаблон создал с нужной разметкой и прикрутил сторонний скрипт, который из статичного списка делает слайдеры
*

Миф

  • Новичок
  • 6
  • 0 / 0
расскажи пожалуйста по подробнее, как слайд-шоу прикрутить и куда, если не затруднит...
или было бы вообще круто, если бы добавил в функционал модуля такой вариант вывода инфы
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
вообще-то не очень круто по частным запросам забесплатно прикручивать доп. функционал ))).
подробнее описывать - тоже проблематично, ибо это уже будет бесплатное же обучение.
собственно, все уже написано - смысл манипуляций - в правке шаблона под конкретный найденный скрипт слайдера.
т.е., к примеру, сторонний скрипт обрабатывает  HTML
<li class='slide_item'>тут инфа 1</li>
<li class='slide_item'>тут инфа 2</li>
и на выходе делает из него слайдер.
Значит, надо взять текущий шаблон информера и привести к такому же виду, что не сложно, если знаешь основы HTML
если не знаешь основ - то, извини: "учиться, учиться, учиться", либо - платить.
*

Миф

  • Новичок
  • 6
  • 0 / 0
основы HTML то я знаю, а вот PHP и JS слабовато..и шаблон slider.php соответственно на PHP...это там надо классы поменять на те, которые в новом скрипте со слайд-шоу или где?
если ответа не будет, то все равно спасибо за модуль!
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
открой страницу с модулем и демку с каким-нибудь слайдером и firebug-ом посмотри, в чем различие в верстке блоков.
устраняешь разницу, прикручиваешь скрипт - профит )
а то, что "php" - значения не имеет, т.к. там очень примитивно собирается все тот же HTML
*

Миф

  • Новичок
  • 6
  • 0 / 0
спасибо конечно за подсказку, пробовал прикрутить слайд шоу, но не выходит...все равно остаются слайдеры/спойлеры, несколькими блоками выводится снизу(((
*

Миф

  • Новичок
  • 6
  • 0 / 0
слайд-шоу прикрутил))
но вот почему события не переносятся на следующий месяц например если [19.04+30==....JPG==...==] то выводит Notice: Undefined offset: 1 in /../../../../modules/mod_simple_informer/helper.php on line 75 и так для строк  90, 93 и 94, а событие следующего месяца показывается внизу после предупреждений..?
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
*

Миф

  • Новичок
  • 6
  • 0 / 0
не переносятся(...я имел ввиду события текущего месяца показывает внизу после предупреждений...
уже решил это...применил вариант с текущем днем [256.00+n==prog_day.jpg==Programmers Day!==] в нем месяцы не учитываются и событие шагает просто по дням с переносом на след. месяц без проблем...
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
но вот почему события не переносятся на следующий месяц
по ходу, эта доработка была в аттаче, который был удален администрацией
с сайта скачал - действительно, там старая логика была.
сейчас вроде поправил.
можно скачать заново и 1 файл заменить - helper.php
*

bender1982

  • Новичок
  • 2
  • 0 / 0
скажите пожалуйста, а как конкретно (в каком файле) менять размер шрифта в модуле. А вот еще при вводе большого количества событий текст не сохраняется. Похоже есть ограничение по количеству
« Последнее редактирование: 29.01.2015, 15:50:56 от bender1982 »
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
стили оформления находятся в sinf.css
обычная CSS разметка. потратьте пару дней на освоение основ таблиц стилей и игрой с firebug-ом.
по объему - да, есть ограничения. в принципе можно создать ещё одно такое же поле - тогда можно в 2 раза больше событий вводить или читать их из текстового файла, но это уже доработки.
мне не интересно ими заниматься, если честно.
*

bender1982

  • Новичок
  • 2
  • 0 / 0
Вот в файле sinf.css:

.message_list a, .message_list div{
   display:block;
   text-decoration:none;
   color:#333;
   font-size:16px;
   border-radius: 5px;
   background:url("fon.jpg") repeat-x;
}
пробовал менять фонт сайз, но шрифт прежний. Что не так? Спасибо
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
совет все тот же - почитать про устройство CSS
стили могут шаблоном перекрываться. пробуйте !important добавить, как вариант.
FireBug вас спасет, в общем
*

Kefirek

  • Новичок
  • 4
  • 0 / 0
effrit, а где  текст событий хранится ?
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
это был вопрос на миллион, а у меня столько денег нету...
[256.00==prog_day.jpg==День программера==] - вот тут и хранится.

- где у вас хранится текст на стикерах?!
- на стикерах...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Calendar Filter — модуль для фильтрации материалов Joomla

Автор Sulpher

Ответов: 0
Просмотров: 1161
Последний ответ 09.11.2024, 14:01:49
от Sulpher
Модуль для вывода файлов меню из папки food

Автор draff

Ответов: 0
Просмотров: 2465
Последний ответ 19.09.2021, 10:17:14
от draff
Модуль случайной всплывающей цитаты для Joomla!

Автор Филипп Сорокин

Ответов: 2
Просмотров: 2423
Последний ответ 05.05.2021, 20:00:07
от Филипп Сорокин
jQuery модуль Обратный звонок, Форма заказа и многое другое

Автор extender

Ответов: 5
Просмотров: 8510
Последний ответ 26.11.2020, 08:59:36
от MariaK
Модуль JoomLine mp3 player

Автор zikkuratvk

Ответов: 184
Просмотров: 56991
Последний ответ 05.07.2020, 22:33:15
от san_san_ku