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

sea_dream

  • Захожу иногда
  • 107
  • 2 / 0
  • Создание сайтов
На сайте http://moyargo.ru/ установлена стандартная форма отправки письма, сайт выполнен на Joomla 1.7 при отправке письма, письмо приходит с задержкой где то час (на сайтах расположенных на том же хостинге приходят сразу) и с ошибкой, в непонятной кодировке, сообственно вот что приходит:
Mail delivery failed: returning message to sender
От кого:    Mail Delivery System <Mailer-Daemon@srv0.host-food.ru>
Кому:    armavir_1979@mail.ru
Сегодня, 12:12
This message was created automatically by mail delivery software.

A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:

  armavir_1979@mail.ru
    SMTP error from remote mail server after end of data:
    host mxs.mail.ru [94.100.176.20]: 550 access denied, host address 91.227.16.27 is not in access list for admin@mail.ru

------ This is a copy of the message, including all the headers. ------

Return-path: <armavir_1979@mail.ru>
Received: from h48775 by srv0.host-food.ru with local (Exim 4.80.1 (FreeBSD))
(envelope-from <armavir_1979@mail.ru>)
id 1UL7wL-000DoB-77
for armavir_1979@mail.ru; Thu, 28 Mar 2013 12:12:05 +0400
To: armavir_1979@mail.ru
Subject: =?utf-8?B?0KHQsNC50YIg0JjRgNC40L3Rizog0J/RgNC+0LHQvdC+0LU=?=
X-PHP-Script: moyargo.ru/index.php for 46.158.71.173, 46.158.71.173
Date: Thu, 28 Mar 2013 12:12:05 +0400
From: =?utf-8?B?0KHQsNC50YIg0JjRgNC40L3Riw==?= <armavir_1979@mail.ru>
Reply-to: =?utf-8?B?0KLQtdGB0YLQtdGA?= <admin@mail.ru>
Message-ID: <ff14d6ca224ba398d9562c282527f05d@moyargo.ru>
X-Priority: 3
X-Mailer: PHPMailer 5.1 (phpmailer.sourceforge.net)
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="utf-8"

п╜я┌п╬ п©п╦я│я▄п╪п╬ п╬я┌п©я─п╟п╡п╩п╣п╫п╬ я│ я│п╟п╧я┌п╟ http://moyargo.ru/ п╬я┌:
п╒п╣я│я┌п╣я─ <admin@mail.ru>

п÷я─п╣п©п╟я─п╟я┌ б╚п▒п╟п╧п╨п╟п╩ п╜п°1б╩ я█я└я└п╣п╨я┌п╦п╡п╫п╬ п©п╦я┌п╟п╣я┌ п╦ я│п╬пЁя─п╣п╡п╟п╣я┌ я─п╟я│я│п╟п╢я┐. п÷я─п╣п╤п╢п╣ я┤п╣п╪ п©я─п╦п╪п╣п╫я▐я┌я▄ п╨п╬п╫я├п╣п╫я┌я─п╟я┌, п╣пЁп╬ п╫п╣п╬п╠я┘п╬п╢п╦п╪п╬ п©п╬п╢п╡п╣я─пЁп╫я┐я┌я▄ я└п╣я─п╪п╣п╫я┌п╟я├п╦п╦ п╡ я─п╟я│я┌п╡п╬я─п╣ п╡п╬п╢я▀ п╦ п©п╦я┌п╟я┌п╣п╩я▄п╫п╬п╧ я│я─п╣п╢я▀ п╜п°-п©п╟я┌п╬п╨п╦. п╖п╣я─п╣п╥ 4-7 п╢п╫п╣п╧ я┐п╢п╬п╠я─п╣п╫п╦п╣ пЁп╬я┌п╬п╡п╬!
*

AdWeb

  • Давно я тут
  • 877
  • 31 / 3
так вам все и написали:
550 access denied, host address 91.227.16.27 is not in access list for admin@mail.ru

а попробовать устранить и посмотреть причину можно тут
| Хороший Хостинг | Купить Хикашоп | Каталог перекладів Joomla компонентів
PS. спасибо кидать через вебмани: R152456839841 если плюсикофф не хватает :)
*

sea_dream

  • Захожу иногда
  • 107
  • 2 / 0
  • Создание сайтов
А по русски в двух словах можно в чем проблема?
*

AdWeb

  • Давно я тут
  • 877
  • 31 / 3
А по русски в двух словах можно в чем проблема?
IP 91.227.16.27 (ваш почтовый сервер/хостинг/  или сеть в которой он находится) занесен в черный список как рассылающий спам, почтовые сервера берут  списки с веб сервисов подобных тому на который я дал вам линк, там же как правило есть опция вытащить свой айпи из черного списка
| Хороший Хостинг | Купить Хикашоп | Каталог перекладів Joomla компонентів
PS. спасибо кидать через вебмани: R152456839841 если плюсикофф не хватает :)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Суперпользователь при создании статьи приходят уведомления

Автор vellev

Ответов: 2
Просмотров: 1107
Последний ответ 25.05.2016, 17:16:07
от vellev
Решено! Не получаю данные из формы обратной связи

Автор silatal

Ответов: 2
Просмотров: 1623
Последний ответ 27.05.2015, 23:46:42
от silatal
На странице контактов выдаёт ошибку Strict Standards

Автор pesokot

Ответов: 10
Просмотров: 9631
Последний ответ 09.02.2015, 15:05:28
от Arturik
Изменить внешний вид формы Contact Fox Form

Автор Ksenia1992

Ответов: 3
Просмотров: 2247
Последний ответ 23.06.2014, 15:08:25
от darkghost
Не приходят письма с сайта на почты от mail-а

Автор Andrej-zhe

Ответов: 8
Просмотров: 2321
Последний ответ 16.06.2014, 14:34:40
от Andrej-zhe