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

jr0001

  • Захожу иногда
  • 52
  • 0 / 1
Кто нибудь встречался с такой проблемой, сайт, если он не умещается на экране, то смещается влево, чуть чуть, но заметно смещается. В IE такого нету, там он почему то центрируется нормально, а вот в FF и Опере Safari смещается.  Но если переходить на странички, которые полностью влезают, то ничего не происходит, а стоит только футеру выйти хотя бы на один пиксель за границу экрана, как сразу же смещение влево.



это структура сайта
Код: php
<div class="container">
         <div class="top_conteiner"></div>
         <div class="content">  тут лежит основное содержимое, оно растягивается<div>
         <div class="footer"></div>                    
</div>


центрирую сайт, т.е. основной блок с помощью
Код: css
.container {
width: 920px;
margin:auto;

}


 основное содержимое, высоты нету, так как растягивается, может и в этом дело?
Код: css
.content {
float: left;
width: 920px;
}


это футер, clear: left; так как при float:left; он выпадал из container'а, может тут что то не то?
Код: css
.footer {
width: 920px;
background-image: url(../images/footer.jpg);
height: 76px;
clear: left;
}
   








Проблема решена:

ладно, "с барского плеча"  ;D вам решение:
в CSS для body пропишите что показывать скроллер всегда:
Код
body {
overflow-y:scroll;
}
« Последнее редактирование: 27.12.2009, 21:21:16 от jr0001 »
*

jr0001

  • Захожу иногда
  • 52
  • 0 / 1
Мда .... если сайт уходит ниже границы браузера, то появляется полоса прокрутки, и уменьшается ширина экрана, потому он и смещается влево! УРА)
теперь надо догнать, как центрировать, не зависимо от наличия полосы прокрутки
*

doctorgrif

  • Давно я тут
  • 745
  • 82 / 1
  • Нудный доктор
Мда .... если сайт уходит ниже границы браузера, то появляется полоса прокрутки, и уменьшается ширина экрана, потому он и смещается влево! УРА)
теперь надо догнать, как центрировать, не зависимо от наличия полосы прокрутки
попробуй для top_conteiner, content, footer задать размер не в пикселях, а в процентах...
Омск-Екатеринбург-Челябинск...Feldzug gen Westen | Кафедра | GrayBox | Joostina 1.2.1 | Joostina Extensions | In Vino Veritas [в работе]
*

jr0001

  • Захожу иногда
  • 52
  • 0 / 1
попробуй для top_conteiner, content, footer задать размер не в пикселях, а в процентах...
честно говоря не понял, как это может помочь, но все равно сделал, но не помогло. Наверно тут ни как не получится, потому как ширина меняется ( Я думаю нужно высоту увеличивать, что бы всегда была браузерная полоса  прокрутки справа
« Последнее редактирование: 26.12.2009, 22:03:20 от jr0001 »
*

jr0001

  • Захожу иногда
  • 52
  • 0 / 1
Люди, а у кого нибудь вообще получалось отцентровать с полосой прокрутки и без? мне кажется это не возможно, или по крайней мере не стоит того. Полоса прокрутки уменьшает ширину и центр сдвигается влево, а без неё центр сдвигается вправо, следовательно центровать нельзя, можно только увеличивать высоту шаблона, что бы всегда была полоса прокрутки.  
А кто нибудь делал так, что бы страница не изменяла положение от прокрутки? просто интересно стало.



*

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
как вариант сделать не <div class="container"> а <div id="container">
это как вариант, чисто попробовать
в ЦСС стили задавать соответсвенно не
.container
а
#container
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
*

jr0001

  • Захожу иногда
  • 52
  • 0 / 1
как вариант сделать не <div class="container"> а <div id="container">
это как вариант, чисто попробовать

Я так уже пробовал=) Но какая в принципе разница? сайт же центрируется, только из за полосы прокрутки он сдвигается влево относительно страницы, которая меньше по высоте и без полосы. Т.е. центр сдвигается. Или я не так понимаю?
можно конечно сдвинуть центр на величину полосы прокрутки, но она вроде не у всех одинаковая, тож облом. Да и я посмотрел сайты, везде содержимое с прокруткой.
*

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
Код
.container {
width: 920px;
margin:auto;
 
}

поменять на

Код
.container {
width: 920px;
margin-left:auto;
        margin-right:auto;
 
}
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
*

zlideni

  • Захожу иногда
  • 337
  • 76 / 0
Ну сдвинулся левее относительно края экрана монитора...но он остаётся отцентрированный по окну браузера.....взяв в расчёты и ширину скролинга...
А Вы себе как представляете что должен работать алгоритм....?
Может независимо от высоты контента должен присутствовать скролинг но быть не активным в случае вписывания по высоте в браузер....но активном в противном случае.....тогда всегда будет по центру относительно края монитора...
В принципе я не вижу особой проблемы в этом...да и мало кто из пользователей обращают на это внимание...
*

jr0001

  • Захожу иногда
  • 52
  • 0 / 1
А Вы себе как представляете что должен работать алгоритм....?
дык я про тоже) и однако странно что не замечают
*

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
Цитировать
А Вы себе как представляете что должен работать алгоритм....?
эта фраза, и не только эта, вообще не понятна. Я даже сильно не старался понять че там куда сдвигаеться в шаблоне, предлагал некоторые "какварианты".
Чтобы понять причину косяка надо смотреть шаблон "на стенде", тоесть установленный и под руками.
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
*

era

  • Администратор
  • 1588
  • 392 / 5
  • В туалете лучше быть пользователем, чем админом.
ладно, "с барского плеча"  ;D вам решение:
в CSS для body пропишите что показывать скроллер всегда:
Код
body {
overflow-y:scroll;
}
*

zlideni

  • Захожу иногда
  • 337
  • 76 / 0
Цитировать
Чтобы понять причину косяка надо смотреть шаблон "на стенде", тоесть установленный и под руками.
Нет никакого косяка....в шаблоне...
Прочтите ещё раз топик.....Вы не вникли в вопрос топикастера.......
Цитировать
   body {
      overflow-y:scroll;
   }

Опсссссссссссс об этом забыл.....хотя не принципиально........
*

jr0001

  • Захожу иногда
  • 52
  • 0 / 1
эта фраза, и не только эта, вообще не понятна. Я даже сильно не старался понять че там куда сдвигаеться в шаблоне, предлагал некоторые "какварианты".

Так я даже рисунок приложил, на всякий случай, для тех, кто не поймет моих слов, а все равно не ясно... странно что человек не разобравшись, уже предлагает "какварианты". Так можно далеко завести ( особенно "полных нубов"

.....хотя не принципиально........
для меня это принципиально)



ладно, "с барского плеча"  ;D вам решение:
в CSS для body пропишите что показывать скроллер всегда:
Код
body {
overflow-y:scroll;
}

Ну ты, барин, уважил, спасибо! :D
« Последнее редактирование: 27.12.2009, 15:33:00 от jr0001 »
*

jr0001

  • Захожу иногда
  • 52
  • 0 / 1
ДА ужж... надо CSS серьезно изучать
*

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
Мои "какварианты" - это было правильное написание твоих кодов. Иногда бывает помогает
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
*

ARW

  • Захожу иногда
  • 57
  • 2 / 0
как у вас при
Код
width:920px;
не вмещается блок на экране по горизонтали? о_О

Код
.container {width:1024px; position: absolute; left:50%; margin-left:-512px;}
Собсна дальше сами ^_^' Внимательно смотрим на чиселки и меняем на нужные.

А что конкретно "не умещается" на мониторе при заданной вами ширине, я теряюсь.
« Последнее редактирование: 27.12.2009, 19:53:59 от ARW »
*

jr0001

  • Захожу иногда
  • 52
  • 0 / 1
А что конкретно "не умещается" на мониторе при заданной вами ширине, я теряюсь.

Смотри прикрепленные картинки, там все объяснено, а вообще проблема решена=)
*

jr0001

  • Захожу иногда
  • 52
  • 0 / 1
Мои "какварианты" - это было правильное написание твоих кодов. Иногда бывает помогает
А велика ли разница, идентификатор, или класс? класс может относится к нескольким элементам и id только к одному, или есть еще какие то важные отличия?
*

era

  • Администратор
  • 1588
  • 392 / 5
  • В туалете лучше быть пользователем, чем админом.
жжёте, у человека проблема в том что при появлении полосы прокрутки соответственно уменьшается общая ширина рабочей области (на 15-20 пикселей), а раз шаблон отцентрован, то он немного смещается влево.
*

jr0001

  • Захожу иногда
  • 52
  • 0 / 1
жжёте, у человека проблема в том что при появлении полосы прокрутки соответственно уменьшается общая ширина рабочей области (на 15-20 пикселей), а раз шаблон отцентрован, то он немного смещается влево.
ну я же так и написал, чего им непонятно..?
хм может они прикалываются?)
*

ARW

  • Захожу иногда
  • 57
  • 2 / 0
заработался, думал из-за ползунка справа, появляется нижний ползунок))) По-этому и удивился, что при ширине 920px не влезает сайт)))
*

era

  • Администратор
  • 1588
  • 392 / 5
  • В туалете лучше быть пользователем, чем админом.
ну я же так и написал, чего им непонятно..?
ну да, ты почти так написал, а надо было написать что-бы всем было понятно ;)
*

jr0001

  • Захожу иногда
  • 52
  • 0 / 1
ну да, ты почти так написал, а надо было написать что-бы всем было понятно ;)
дык.. всем не угодишь ;)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как поставить такой курсор на сайт Joomla?

Автор Romanych

Ответов: 0
Просмотров: 906
Последний ответ 05.11.2020, 21:45:29
от Romanych
Не работает правильно сайт на хосте

Автор Алексей Лоскутов

Ответов: 6
Просмотров: 1693
Последний ответ 21.05.2020, 20:23:57
от xpank
Как поменять цвет текста в CSS если они связаны одним label?

Автор zeni1agent

Ответов: 2
Просмотров: 1526
Последний ответ 23.05.2018, 13:54:22
от zeni1agent
Кнопка пожаловаться, если видео не открывается

Автор leo78

Ответов: 1
Просмотров: 1635
Последний ответ 14.10.2017, 19:27:30
от leo78
Выровнить сайт по центру!

Автор Анна_pupu

Ответов: 5
Просмотров: 1576
Последний ответ 21.03.2016, 13:27:42
от Анна_pupu