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

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
Всем привет, может у кого есть в заначке, всё облазил не нашел, а писать самому именно это сейчас и времени, и желания нету. В общем, нужна реализация переключателя языков такого вида: иконка земной шар, по клику на него выпадает список языков. Заранее спасибо!
« Последнее редактирование: 30.03.2019, 12:54:22 от Шмайсер »
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
*

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
В итоге сам написал простенькую переключалку, может кому пригодится. Что бы все работало, надо переопределить шаблон mod_language в HTML папку своего шаблона, стереть все, что есть в default.php и вставить вот этот код

Код
<?php
/**
 * @package Joomla.Site
 * @subpackage mod_languages
 * [member=126442]copyright[/member] Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license GNU General Public License version 2 or later; see LICENSE.txt
 */

// no direct access
defined('_JEXEC') or die('Restricted access');
?>



<style>
#slow_nav > ul{

    margin:0px auto 0;
}
 
#slow_nav > ul > li{
    list-style: none;
    position:relative;
    padding:0;
}
 
#slow_nav a{text-decoration:none;}
 
#slow_nav > ul > li > a{
    font-size:16px;
    padding:5px;
    color:#333;
}
 
#slow_nav li ul{
width:200px;
    position:absolute;
    list-style:none;
    text-align:center;
    top:32px;
    font-size:15px;
    left:-5px;
    margin:0;
    padding:0;
 z-index:99999999999;
/* Данные строки нужны для правильной работы анимации */
    max-height:0px;
    overflow:hidden;
    -webkit-transition:max-height 0.4s linear;
    -moz-transition:max-height 0.4s linear;
    transition:max-height 0.4s linear;
/* конец */
}
 
#slow_nav li:hover ul{
    max-height:300px;
z-index:99999999999;
}
 
#slow_nav li ul li{
    background-color:#f3f4f4;padding:5px;
    border-bottom:1px solid #ededed;
}

#slow_nav li ul li img {width:18px;height:12px;margin:3px 8px 3px 0px;}
 
#slow_nav li ul li:last-child{
    border-bottom:none;
}
 
#slow_nav li ul li a{
    padding:5px 12px;
    color:#333;
    display:flex;
}
 
#slow_nav li ul li:hover{
    background-color:#ededed;
}
 
#slow_nav li ul li:first-child{
    margin-top:20px;
    position:relative;
}
 
#slow_nav li ul li:first-child:before{
    content:'';
    position:absolute;
    width:1px;
    height:1px;
    border:5px solid transparent;
    border-bottom-color:#f3f4f4;
    left:10px;
    top:-10px;
}
</style>

<nav id="slow_nav">
    <ul>
        <li>
        <a><img src="/templates/youtemplate/path-to-images/get_language.png" width="20px" height="20px" /></a>
            <ul>
  <?php foreach ($list as $language) : ?>
                <li>
<a href="<?php echo htmlspecialchars_decode(htmlspecialchars($language->link, ENT_QUOTES, 'UTF-8'), ENT_NOQUOTES); ?>">
<?php echo JHtml::_('image', 'mod_languages/' . $language->image . '.gif', '', null, true); ?>
<span><?php echo $language->title_native; ?></span>
</a>
</li>
              <?php endforeach; ?>
            </ul>
        </li>
       
    </ul>
</nav>



не забыв загрузить в папку с картинками иконку при наведении на которую будет выпадать список языков.
демка недолго будет http://vashost.nichost.ru/ (на сам сайт не смотреть, он пока на уровне прототипа, еще неизвестно что заказчик надумает в итоге)
« Последнее редактирование: 30.03.2019, 13:34:02 от Шмайсер »
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Поехал дизайн главной страницы одного из трех языков

Автор hlitov

Ответов: 3
Просмотров: 3334
Последний ответ 23.12.2024, 16:12:59
от enrikebosko288
Локализация Joomla 3.x (обсуждение перевода, инструкции и рекомендации)

Автор smart

Ответов: 363
Просмотров: 203254
Последний ответ 16.05.2022, 16:56:45
от SK
Falang и переключатель языка

Автор max_1985

Ответов: 3
Просмотров: 4492
Последний ответ 22.11.2021, 22:19:11
от max_1985
Нужен узбекский для Joomla 3

Автор nick71

Ответов: 6
Просмотров: 8517
Последний ответ 18.08.2021, 08:47:42
от Zaynidin
Как создать много страниц с названиями - Joomla 3?

Автор mig4you

Ответов: 20
Просмотров: 6153
Последний ответ 20.12.2020, 21:40:40
от gartes