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

talion2003

  • Захожу иногда
  • 95
  • 36 / 6
  • Не программер я...
Мне нужно в заголовке статьи сделать закругленые уголки, а это значит, что необходимо добавить еще пару ячеек в html. Какой файл нужно для этого ковырять и в каком именно месте?
Да говорю же Вам, не программер я!!!

 www.chelovekdnevnik.ru www.serdcadetey.ru
*

one_more

  • Захожу иногда
  • 139
  • 87 / 3
  • there is no spoon
Если уж ковырять...
тогда /components/com_content/content.html.php
примерно 583 строка
ориентир - <td class="contentheading<?php echo $params->get( 'pageclass_sfx' ); ?>" width="100%">
Errare humanum est
*

talion2003

  • Захожу иногда
  • 95
  • 36 / 6
  • Не программер я...
спасибо большое! правда нужные строки немного в другом месте, вот здесь function Title, 543 строка. Но, спасибо за наводку:)
Да говорю же Вам, не программер я!!!

 www.chelovekdnevnik.ru www.serdcadetey.ru
*

talion2003

  • Захожу иногда
  • 95
  • 36 / 6
  • Не программер я...
Кстати, было бы неплохо создать статью, где были бы указаны все эти места, потому что очень часто сталкиваешься с тем, что приходится ковырять файлы джумлы для смены дизайна и тратится на это куча времени и нервов. А если бы был некий справочник, то дело шло гораздо быстрее.
Спасибо!
Да говорю же Вам, не программер я!!!

 www.chelovekdnevnik.ru www.serdcadetey.ru
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
правда нужные строки немного в другом месте, вот здесь function Title, 543 строка.
а вот и нет, как раз в
function show{
...
<
table class="contentpaneopen<?php echo $params->get( 'pageclass_sfx' ); ?>">
<
tr>
	
<?
php
	
// displays Item Title
	
HTML_content::Title$row$params$link_on$access );

	
// displays PDF Icon
	
HTML_content::PdfIcon$row$params$link_on$hide_js );

	
// displays Print Icon
	
mosHTML::PrintIcon$row$params$hide_js$print_link );

	
// displays Email Icon
	
HTML_content::EmailIcon$row$params$hide_js );
	
?>
	
</tr>
</table>
...
}
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Кстати, было бы неплохо создать статью, где были бы указаны все эти места, потому что очень часто сталкиваешься с тем, что приходится ковырять файлы джумлы для смены дизайна и тратится на это куча времени и нервов. А если бы был некий справочник, то дело шло гораздо быстрее.
Спасибо!
тогда пришлось бы описывать весь АПИ J1.0
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

talion2003

  • Захожу иногда
  • 95
  • 36 / 6
  • Не программер я...
Вот тогда еще вопросик. У меня в новом шаблоне будет использоваться темно-серый фон и белый текст. Проблема в том, что при выводе на печать фон становится белым (что абсолютно правильно), а вот сам текст так и остается тоже белым. Как бы сделать, чтобы текст становился черным?
Да говорю же Вам, не программер я!!!

 www.chelovekdnevnik.ru www.serdcadetey.ru
*

one_more

  • Захожу иногда
  • 139
  • 87 / 3
  • there is no spoon
создать статью, где были бы указаны все эти места, потому что очень часто сталкиваешься с тем, что приходится ковырять файлы джумлы для смены дизайна и тратится на это куча времени и нервов.

У lamer'a тут назрела мыслишка... но несколько иная. Не описывать, где и что лежит, а научить нужные места в коде искать и находить. Reverse engineering по-ламерски :)
Времени вот только на всё это не хватает. Но уже работаем ^-^
Errare humanum est
*

talion2003

  • Захожу иногда
  • 95
  • 36 / 6
  • Не программер я...
Отличная идея! Это очень актуально.

А на мой последний вопросик ответа ни у кого нет?
Да говорю же Вам, не программер я!!!

 www.chelovekdnevnik.ru www.serdcadetey.ru
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
по идее, для этого есть иконка печати, где текст форматируется как раз вывода на принтер.
его и настраивать в CSS.
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

talion2003

  • Захожу иногда
  • 95
  • 36 / 6
  • Не программер я...
ну так вот я про эту иконку и говорю, но где настроить, я к сожалению не знаю:(
Да говорю же Вам, не программер я!!!

 www.chelovekdnevnik.ru www.serdcadetey.ru
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
ну дык, процедура стандартная - "методом научного тыка" ;D

жмёшь кнопку - получаешь окно.
смотришь как посторен HTML код.
и потом вносишь коррективы в CSS-файл шаблона.

а вообще-то при просмотре у body меняется класс на:
<body class="contentpane">

дальнейшее очень зависит от того, как был написан CSS.
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

talion2003

  • Захожу иногда
  • 95
  • 36 / 6
  • Не программер я...
Да не то это. Дело в том, что у меня в CSS определены тэги H1, H2, p и я их использую. Нужно как-то сделать, чтобы страница для печати ссылалась на другой CSS шаблон или же содержала описания стилей уже внутри себя. Но как? Где все это задать?
Да говорю же Вам, не программер я!!!

 www.chelovekdnevnik.ru www.serdcadetey.ru
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
ну раз Вы считаете, что это "не то", тогда извините...  8)
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

talion2003

  • Захожу иногда
  • 95
  • 36 / 6
  • Не программер я...
Вот так и знал, что получу этот ответ. Вместо того, чтобы помочь устраиваем обидки непонятные.

Причем тут contentpane, если тэги все те же (h1, h2, p) остаются на странице для печати, а они в свою очередь определены в CSS шаблоне. Другое дело, если бы страница для печати ссылалась на воторой шаблон, в котором эти тэги определены уже с другими параметрами. 
Да говорю же Вам, не программер я!!!

 www.chelovekdnevnik.ru www.serdcadetey.ru
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Причем тут contentpane, если тэги все те же (h1, h2, p) ...
а при том, что нужно учить CSS.

зы. делать мне больше нечего, как обижаться... это ж тебе надо, а не мне.
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

talion2003

  • Захожу иногда
  • 95
  • 36 / 6
  • Не программер я...
Все, понятно. Вопросов больше не имею.
Да говорю же Вам, не программер я!!!

 www.chelovekdnevnik.ru www.serdcadetey.ru
*

talion2003

  • Захожу иногда
  • 95
  • 36 / 6
  • Не программер я...
Ладно, выучил CSS, получилось:)

CSS великая весч:) Даже иконку печати удалось убрать:)
« Последнее редактирование: 21.05.2006, 21:26:10 от talion2003 »
Да говорю же Вам, не программер я!!!

 www.chelovekdnevnik.ru www.serdcadetey.ru
*

ButuzOFF

  • Захожу иногда
  • 144
  • 22 / 2
Во классно вам все знаете ^-^ А для танкистов можно подробнее как всетаки сделать заголовок статьи с закругленными углами и если нетрудно (простите за  наглость ^-^) как оформить майн боди в "круглом" стиле
Я понимаю шо пошлете учить ксс ,но все таки пожалуйста можно хоть пример кода ,и какой параметр поставить
Я чесно всегда старался дойти своим умом но тут затрымка и причем я так понимаю надолго
Или если не трудно, хоть ссылку бросьте где по теме информация есть
Благодарю в любом случае ^-^
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться