Новости 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 Ответов
  • 2056 Просмотров
*

mfiction

  • Новичок
  • 5
  • 0 / 0
Всем, доброго времени суток, столкнулся с очень интересной проблемой перерыл весь рунет и интернет, но так и не смог найти решения моей проблемы.

Имеем шаблон (самописный):

     <div id="header">
         <jdoc:include type="modules" name="header"/>
     </div>

     <div id="content">
         <jdoc:include type="component" style="xhtml" />
         <jdoc:include type="message" />
     </div>

     <div id="menu">
         <jdoc:include type="modules" name="menu"/>
     </div>

     <div id="footer">
         <jdoc:include type="modules" name="footer"/>
     </div>

Имеются категории:
|-A (общая категория)
|--B (подкатегория А)
|--С (подкатегория А)
|---D (подкатегория С)
|---E (подкатегория С)

Структура меню аналогична.

Задача: отобразить на главной странице сайта краткий обзор (вступления) к статьям из всех подкатегорий, для этого и была создана категория А.

Для этого пункт меню "А" в менеджере меню делается домашней страницей (home), тип меню - category blog, а в его настройках устанавливается значения параметра "Blog Layout Options"->"Include Subcategories" = All, чтобы отображались материалы всех категорий.

Проблема состоит в том, что Joomla при формировании страницы видоизменяет верстку шаблона и помещает "независимые" дивы menu и footer в div блок content, что приводит к появлению скролла, да и общему искажению шаблона. Что интересно, если поставить тип меню "материал" - все ок, так же все ок, если "Include Subcategories" присвоить none.

Я предполагаю, что проблема кроется в файле "мой темплейт"\html\com_content\category\blog.php, но так как я с PHP практически не знаком сам разобраться не могу.
Стоит отметить, что когда я писал свой темплейт я папку HTML не создавал и особых правил не прописывал, предположительно Joomla должна работать по своему стандартному шаблону отображения блогов, но где-то происходит сбой и я все никак не могу понять где.





*

midav

  • Давно я тут
  • 926
  • 115 / 1
Посмотрите исходный код проблемной страницы . Не то, что показывает инспектор кода типа FireBug , а именно исходный код . Посмотреть можно по Ctrl U .  Или через меню браузера .
Возможно что появляются незакрытые дивы в материалах . И от этого ломается верстка .
Ответы на вопросы по CSS . Откройте для себя Firebug
*

mfiction

  • Новичок
  • 5
  • 0 / 0
На всякий случай я, конечно, посмотрел, но в исходниках все правильно. Прежде всего, обращаю ваше внимание на то, что при установленном типе меню "single article" или, когда установлено в "category blog" параметр "Blog Layout Options"->"Include Subcategories" = none (т.е. когда не нужно выводить в блоге статьи - в главной категории у меня статей нет) все отображается корректно. Joomla формирует кучу вложенных дивов в блоке контента:

<div id="content">
   <div class="blog">
      <div class="items-leading"></div>
      <div id="menu"> </div>
      <div id="footer"></div>
   </div>
</div>

и как видите засовывает в него совсем не принадлежащие контенту блоки... Причем, если поставить "Blog Layout Options"->"Include Subcategories" = none, тогда <div class="items-leading"></div> не создается и все отлично, тогда вид получается вот такой:

<div id="content">
   <div class="blog"> </div>
</div>

   <div id="menu">   </div>
   <div id="footer">  </div>
« Последнее редактирование: 20.05.2013, 14:06:48 от mfiction »
*

midav

  • Давно я тут
  • 926
  • 115 / 1
Ну, значит в файле который отвечает за вывод, присутствует незакрытый div .
Как смотрели исходный код ? Просто вот это на исходный код непохоже :
Код
<div id="content">
   <div class="blog">
      <div class="items-leading"></div>
      <div id="menu"> </div>
      <div id="footer"></div>
   </div>
</div>
Ответы на вопросы по CSS . Откройте для себя Firebug
*

mfiction

  • Новичок
  • 5
  • 0 / 0
Я решил проблему, если кому интересно история описана здесь:
http://forum.joomla.org/viewtopic.php?f=619&t=803477

Все оказалось несколько интересней :), хотя общий ход Ваших мыслей правильный.

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

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

Автор pharaoh

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

Автор platonische

Ответов: 0
Просмотров: 1501
Последний ответ 20.05.2020, 11:11:03
от platonische
Проблема с кешем?

Автор bandanu

Ответов: 5
Просмотров: 2026
Последний ответ 29.11.2019, 00:57:10
от gartes
Проблема с настройками вывода материалов в 2 колонки

Автор TowRed

Ответов: 31
Просмотров: 15705
Последний ответ 04.10.2019, 06:01:24
от Sveta2889
Появляются несуществующие ссылки несуществующих категорий с активными материалам

Автор hels

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