Новости Joomla

Свои типы полей в 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 для атрибута addfieldprefixnamespace 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 #разработка

Свои типы полей в 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 Гость просматривают эту тему.
  • 16 Ответов
  • 5910 Просмотров
*

Автарх

  • Осваиваюсь на форуме
  • 20
  • 1 / 0
Навигация DatsoGallery и OpenSEF
« : 13.10.2007, 16:48:09 »
Как ни странна подобная связка, но после уставновки последнего OpenSEF на Datsogallery 1.4.1 случился такой глюк:

Навигация по категориями на странице "<<В начало" "<Назад" "Дальше>" "В конец>>" выстроилась по вертикали перед названием категории (см. скриншот).

С чем это может быть связано ?

В исходнике страницы посмотрел: там за это отвечает класс: "button2-left(right) off", а в php коде галереи вроде нигде его нет :(
Как можно все починить ?

[вложение удалено Администратором]
*

temniy

  • Захожу иногда
  • 413
  • 85 / 9
Re: Навигация DatsoGallery и OpenSEF
« Ответ #1 : 13.10.2007, 18:24:59 »
скорее всего там div block без float'а. Дай этот кусок кода из баузера посмотреть.
Лучший хостинг от 1 евро!
Сервис whois  |  Домены по отличным ценам (более 80 зон, хорошие цены и консультации -> после регистрации)
*

Автарх

  • Осваиваюсь на форуме
  • 20
  • 1 / 0
Re: Навигация DatsoGallery и OpenSEF
« Ответ #2 : 13.10.2007, 21:21:59 »
Текст такой:

<td align='right'><div id='dt1'>
<div class="button2-right off"><div class="start"><span class="pagenav"><< В начало</span></div></div>
<div class="button2-right off"><div class="prev"><span class="pagenav">< Назад</span></div></div>
<div class="button2-left"><div class="page">
<span> 1 </span>
</div></div>
<div class="button2-left off"><div class="next"><span class="pagenav">Дальше ></span></div></div>

<div class="button2-left off"><div class="end"><span class="pagenav">В конец >></span></div></div><table cellspacing="1" cellpadding="10" border="0" width="100%"><tr><td align="left" colspan="2" class="sectiontableheader">Подкатегории</td></tr>
*

temniy

  • Захожу иногда
  • 413
  • 85 / 9
Re: Навигация DatsoGallery и OpenSEF
« Ответ #3 : 13.10.2007, 21:59:21 »
Ну и смотри стили
У <div id='dt1'> должно быть выставлено display:inline
У <div class="button2-right off"> и похожих - float:left
как минимум
Лучший хостинг от 1 евро!
Сервис whois  |  Домены по отличным ценам (более 80 зон, хорошие цены и консультации -> после регистрации)
*

Автарх

  • Осваиваюсь на форуме
  • 20
  • 1 / 0
Re: Навигация DatsoGallery и OpenSEF
« Ответ #4 : 14.10.2007, 00:21:50 »
В том то и дело, что не знаю, где найти описание этих классов :(
*

temniy

  • Захожу иногда
  • 413
  • 85 / 9
Re: Навигация DatsoGallery и OpenSEF
« Ответ #5 : 14.10.2007, 02:04:17 »
в css твоего шаблона. Если там нет - создай
Лучший хостинг от 1 евро!
Сервис whois  |  Домены по отличным ценам (более 80 зон, хорошие цены и консультации -> после регистрации)
*

Автарх

  • Осваиваюсь на форуме
  • 20
  • 1 / 0
Re: Навигация DatsoGallery и OpenSEF
« Ответ #6 : 14.10.2007, 15:33:26 »
Не... ну это можно сделать само собой. Но ведь где-то этот шаблон прописывается.
До ОПенСЕФ все же было как надо. Как минимум можно просто найти, где он до этого определялся.
*

temniy

  • Захожу иногда
  • 413
  • 85 / 9
Re: Навигация DatsoGallery и OpenSEF
« Ответ #7 : 14.10.2007, 15:48:10 »
у галереи своего css нет. Как сеф может влиять на css? Ну если только он заменяет стандартный вывод навигации на свой.
Лучший хостинг от 1 евро!
Сервис whois  |  Домены по отличным ценам (более 80 зон, хорошие цены и консультации -> после регистрации)

Re: Навигация DatsoGallery и OpenSEF
« Ответ #8 : 07.11.2007, 15:46:11 »
если кто остался в этой теме ещё, помогите, всё сделал как сказано, но навигация остаётся прежней.
сайт http://www.foto-colibri.ru/
*

temniy

  • Захожу иногда
  • 413
  • 85 / 9
Re: Навигация DatsoGallery и OpenSEF
« Ответ #9 : 07.11.2007, 15:52:36 »
если кто остался в этой теме ещё, помогите, всё сделал как сказано, но навигация остаётся прежней.
сайт http://www.foto-colibri.ru/
Что ты сделал, мил человек? В твоём css есть только это -
.button2-left off {

}
и где там флоаты?
Лучший хостинг от 1 евро!
Сервис whois  |  Домены по отличным ценам (более 80 зон, хорошие цены и консультации -> после регистрации)
*

revil

  • Захожу иногда
  • 103
  • 5 / 0
Re: Навигация DatsoGallery и OpenSEF
« Ответ #10 : 08.11.2007, 14:32:36 »
Проблема дейстивтельно в opensef, так как он подменяет стнадартную навигацию своей, ковыряй файл
administrator/components/com_sef/includes/pageNavigation.php

я убрал оттуда все лишние дивы и стало нормально :)
*

Full_crazy

  • Захожу иногда
  • 264
  • 48 / 0
  • Иногда думаю ...
Re: Навигация DatsoGallery и OpenSEF
« Ответ #11 : 14.11.2007, 15:08:45 »
Ну нет, чтоб написать - где ковырять  :P. Я тож обновился, вылезла эта гадость.... пришлось лезть в код, просто закомментировал в файле pageNavigation.php этот кусок
Код
/*if ($this_page > 1) {
$page = ($this_page - 2) * $this->limit;
$html .= "\n<div class=\"button2-right\"><div class=\"start\"><a href=\"#beg\" title=\"first page\" onclick=\"javascript: document.adminForm.limitstart.value=0; document.adminForm.submit();return false;\"><< Start</a></div></div>";
$html .= "\n<div class=\"button2-right\"><div class=\"prev\"><a href=\"#prev\" title=\"previous page\" onclick=\"javascript: document.adminForm.limitstart.value=$page; document.adminForm.submit();return false;\">< Previous</a></div></div>";
} else {
$html .= "\n<div class=\"button2-right off\"><div class=\"start\"><span class=\"pagenav\"><< Start</span></div></div>";
$html .= "\n<div class=\"button2-right off\"><div class=\"prev\"><span class=\"pagenav\">< Previous</span></div></div>";
}
$html .= "\n<div class=\"button2-left\"><div class=\"page\">";
for ($i=$start_loop; $i <= $stop_loop; $i++) {
$page = ($i - 1) * $this->limit;
if ($i == $this_page) {
$html .= "\n<span> $i </span>";
} else {
$html .= "\n<a title=\"#$i\" onclick=\"javascript: document.adminForm.limitstart.value=$page; document.adminForm.submit();return false;\"><strong>$i</strong></a>";
}
}
/*$html .= "\n</div></div>";
if ($this_page < $total_pages) {
$page = $this_page * $this->limit;
$end_page = ($total_pages-1) * $this->limit;
$html .= "\n<div class=\"button2-left\"><div class=\"next\"><a href=\"#next\" title=\"next page\" onclick=\"javascript: document.adminForm.limitstart.value=$page; document.adminForm.submit();return false;\"> Next ></a></div></div>";
$html .= "\n<div class=\"button2-left\"><div class=\"end\"><a href=\"#end\" title=\"end page\" onclick=\"javascript: document.adminForm.limitstart.value=$end_page; document.adminForm.submit();return false;\"> End >></a></div></div>";
} else {
$html .= "\n<div class=\"button2-left off\"><div class=\"next\"><span class=\"pagenav\">Next ></span></div></div>";
$html .= "\n<div class=\"button2-left off\"><div class=\"end\"><span class=\"pagenav\">End >></span></div></div>";
}*/
SEF работает.
Joomla! = невозможного почти нет!
*

Автарх

  • Осваиваюсь на форуме
  • 20
  • 1 / 0
Re: Навигация DatsoGallery и OpenSEF
« Ответ #12 : 16.11.2007, 01:49:43 »
Увы не помогло.
Как выяснилось SEF также дает ошибочную пагинацию при отображении материалов меню в виде блога.
Хотя может это только у меня так ?
*

Full_crazy

  • Захожу иногда
  • 264
  • 48 / 0
  • Иногда думаю ...
Re: Навигация DatsoGallery и OpenSEF
« Ответ #13 : 16.11.2007, 08:00:19 »
Может действительно у тебя.... я на нескольких сайтах проверил - убирается ошибочная пагинация. Вот здесь приложил исправленный файл, на всякий случай  ^-^
  Кеш почисти, на сайте или в прокси.... мало ли причин бывает.
Joomla! = невозможного почти нет!

Re: Навигация DatsoGallery и OpenSEF
« Ответ #14 : 16.11.2007, 08:31:16 »
Киньте сюда administrator/components/com_sef/includes/

Фаил pagenavigation.php из public_html/administrator/includes/  заменив другой фаил в папке.

Проблема исчезнет, OpenSEF тож будет норм работать.
*

revil

  • Захожу иногда
  • 103
  • 5 / 0
Re: Навигация DatsoGallery и OpenSEF
« Ответ #15 : 28.11.2007, 12:21:43 »
Может действительно у тебя.... я на нескольких сайтах проверил - убирается ошибочная пагинация. Вот здесь приложил исправленный файл, на всякий случай  ^-^
  Кеш почисти, на сайте или в прокси.... мало ли причин бывает.
путем удаления блока убирается не ошибочная пагинация, а убирается пагинация вообще, что конечно не выход
*

revil

  • Захожу иногда
  • 103
  • 5 / 0
Re: Навигация DatsoGallery и OpenSEF
« Ответ #16 : 28.11.2007, 13:11:34 »
Киньте сюда administrator/components/com_sef/includes/

Фаил pagenavigation.php из public_html/administrator/includes/  заменив другой фаил в папке.

Проблема исчезнет, OpenSEF тож будет норм работать.


У меня не исчезла, ссылки для перехода по страницам все равно не работали :(
Пришлось удалять OpenSEF так как и в других компонентах пагинация тоже не работала
« Последнее редактирование: 28.11.2007, 13:18:02 от revil »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Есть ли достойная замена для DatsoGallery?

Автор vbulletinX

Ответов: 5
Просмотров: 4702
Последний ответ 14.07.2022, 20:00:50
от marbert
В какую галерею перенести все фото из DatsoGallery?

Автор darkknight

Ответов: 5
Просмотров: 3062
Последний ответ 08.12.2021, 18:45:41
от sergeytolkachyov
[download] Datso Gallery (Download DatsoGallery free all version)

Автор beliyadm

Ответов: 354
Просмотров: 177674
Последний ответ 10.08.2018, 14:43:21
от pH43
cache заполняется DatsoGallery

Автор relat

Ответов: 3
Просмотров: 3377
Последний ответ 05.03.2018, 17:56:11
от beliyadm
DatsoGallery для Joomla 3.x

Автор vbulletinX

Ответов: 17
Просмотров: 6575
Последний ответ 17.06.2017, 11:05:19
от KisoN