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

Roinmana

  • Захожу иногда
  • 108
  • 2 / 0
Доброго дня! Обновил сайт с 3.4.8 на 3.6, потом на 3.6.2. После обновления до 3.6 появилась ошибка БД
Код
The Joomla! Core database tables have not been converted yet to UTF-8 Multibyte (utf8mb4).
При попытке "исправить", выдает ошибку
Код
Ошибка

Specified key was too long; max key length is 1000 bytes SQL=ALTER TABLE `#__contentitem_tag_map` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Видимых проблем в работе админки и сайта пока не выявил. Что это за ошибка и как ее устранить?
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Какая версия MySQL и операционной системы на хостинге? (битность в том числе)
*

Roinmana

  • Захожу иногда
  • 108
  • 2 / 0
Какая версия MySQL и операционной системы на хостинге? (битность в том числе)
Вот, что удалось найти, про остальное нужно тикет с вопросами отправлять в ТП:
Apache/2.2.15 (CentOS)
Версия клиента базы данных: libmysql - 5.5.35
Информация о версии: 3.5.2.2
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Хм.. хостинг виртуальный? Кто хостер? Возможно он поставил слишком большие ограничения
*

Roinmana

  • Захожу иногда
  • 108
  • 2 / 0
Хм.. хостинг виртуальный? Кто хостер? Возможно он поставил слишком большие ограничения
Виртуальный хостинг reg.ru. В ТП сказали следующее:
Код
"Решение данной проблемы описано по ссылке:

http://stackoverflow.com/questions/8746207/1071-specified-key-was-too-long-max-key-length-is-1000-bytes

Вам необходимо убрать с индекса поле с типом varchar, или уменьшить его.

Поле 255 символов имеет длину 1 020 байт в новой кодировке, что уже выше предела.
Как это сделать в моем случае?
*

Roinmana

  • Захожу иногда
  • 108
  • 2 / 0
Может кому пригодиться. В базе данных нужно найти таблицу фигурирующую в ошибке и задать varchar 200 (в моем случае). После этого исправить БД стандартным средством Joomla. Ошибок больше не возникало.
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Это не лучший вариант.
Лучший - пусть хостер увеличит лимиты или сменить его.
*

Benefactor

  • Захожу иногда
  • 154
  • 2 / 2
При установке нового движка J3.6 застряю на втором шаге. Права, браузеры, менял версии PHP, что может быть?!
*

yrygvay

  • Завсегдатай
  • 1293
  • 36 / 3
При установке нового движка J3.6 застряю на втором шаге. Права, браузеры, менял версии PHP, что может быть?!
Лучше не застревать на втором шаге)))
А по существу, как и что делаете и на чём.
Смотрю....
*

Doctor Death

  • Захожу иногда
  • 144
  • 1 / 12
Господа с прошлой пятниц не могу скачать обдейт на 6.2 - сайт недоступен на проч
пробовал из трех мест
если у кого есть выложите пожалуйста сюда
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
пробовал из трех мест
Скоро, с такой политикой Роскомнадзора, все мы будем юзать анонимные прокси. А после того, как Pornohub заблокировали в России, выбор становиться априори. )))

Я юзаю Browsec для Firefox, многие ставят FriGate, почитайте, что это, и качайте на здоровье все, что угодно, без каких либо ограничений.
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

Джоник

  • Новичок
  • 3
  • 0 / 0
никак не могу установить вторым языком контента русский на 3.6.2
устанавливал локализацию стандартно, встала версия пакета 3.6.2
снес установил 3.4.1
снес установил вручную. сначала 3.4 потом 3.6
даже пробовал тег другой ru_RU ru_Ru
проблема та же : "Тег языка должен состоять из 2 или 3 букв в нижнем регистре (код языка в по стандарту ISO), дефиса и 2 букв в верхнем регистре (код страны по стандарту ISO).
Данный тег должен полностью соответствовать используемому в установленном языке. Например: en-GB, srp-ME."


sorry "дефис", блин, все заработало (автоматом подставлялся тег по-старому)  ru-RU
« Последнее редактирование: 04.10.2016, 19:12:28 от Джоник »
*

Guran

  • Захожу иногда
  • 329
  • 22 / 0
Скоро должен выйти стабильный релиз 3.6.3, около 400 исправлений за 2 месяца.  20 часов назад выпустили второго кандидата релиза: https://github.com/joomla/joomla-cms/releases
Надеюсь, что кэшировщики нормально заработают. Для Memcached они делали какие-то исправления.
« Последнее редактирование: 05.10.2016, 06:43:31 от Guran »
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Вышла 3.6.3 RC3 https://github.com/joomla/joomla-cms/releases/tag/3.6.3-rc3

Это релиз-кандидат. Для тестирования на небоевых сайтах
*

1-F7

  • Захожу иногда
  • 197
  • 0 / 0
Если я к примеру изменял файлы в самой системе, то мне лучше не обновляться.
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Если я к примеру изменял файлы в самой системе
То нечего делать на этом форуме!
*

Guran

  • Захожу иногда
  • 329
  • 22 / 0
В ssl-протоколе пропадают стили. В файле /libraries/joomla/uri/uri.php
Этот код:
Код
if (isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS'])!= 'off'))

{

$https = 's://';

}

else

{

$https = '://';

}

Меняешь на этот:

Код
if (isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS'])!= 'off'))

{
$https = 's://';

}

else

{

$https = 's://';

}

Разница в букве "s" в последней строке. Не знаю, правильно ли так делать, но работает. С версии Joomla 3.4 приходится подправлять. Неизвестно, исправят ли в Joomla 3.6.3
« Последнее редактирование: 11.10.2016, 18:11:32 от Guran »
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
С таким подходом можно все условие заменить на $https = 's://';
Да только первое же обновление удалит правки ядра.
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

arma

  • Завсегдатай
  • 1753
  • 81 / 3
Вышла 3.6.3. Обновилось без проблем.
*

Lix

  • Захожу иногда
  • 56
  • 4 / 0
В 3.6.3 нашел первую проблему - при редактировании модуля с HTML содержимым вешает страницу. Оказалось что выдает ошибку "Произошла ошибка при получении данных JSON: код состояния HTTP 0." делает редирект и дальше все - вечная загрузка. Пока причину не нашел.
На всякий случай сделал исправление базы в Joomla, сделал оптимизацию через phpMyAdmin, попробовал попереключать редакторы. Все без толку.
Если кто сталкивался с такой ошибкой - подскажите где рыть?

P.S. Если остановить загрузку страницы до редиректа и сохранить модуль, то проблема пропадает, остальные все открываются нормально.
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
В 3.6.3 нашел первую проблему - при редактировании модуля с HTML содержимым вешает страницу. Оказалось что выдает ошибку "Произошла ошибка при получении данных JSON: код состояния HTTP 0." делает редирект и дальше все - вечная загрузка. Пока причину не нашел.
На всякий случай сделал исправление базы в Joomla, сделал оптимизацию через phpMyAdmin, попробовал попереключать редакторы. Все без толку.
Если кто сталкивался с такой ошибкой - подскажите где рыть?

P.S. Если остановить загрузку страницы до редиректа и сохранить модуль, то проблема пропадает, остальные все открываются нормально.
Кэш браузера почистите.
Пишем сюда Вышел релиз Joomla! 3.6.3
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Нужна проф помощь в обновлении Joomla на лок.сервере osp. Можно платно

Автор Fati

Ответов: 0
Просмотров: 58
Последний ответ 16.06.2025, 16:40:04
от Fati
Помогите с БАГом в панели администратора Joomla 3

Автор akteon25

Ответов: 2
Просмотров: 1110
Последний ответ 26.02.2025, 16:41:56
от akteon25
Версии РНР и Joomla 3

Автор Ebelous

Ответов: 8
Просмотров: 2878
Последний ответ 27.01.2025, 20:38:45
от pavelrer
Trouble Upgrading from Joomla 3.8 to 3.9

Автор melissa00

Ответов: 0
Просмотров: 1710
Последний ответ 26.07.2024, 10:03:51
от melissa00
SP polls в Joomla 3.8.2

Автор wawont

Ответов: 2
Просмотров: 3378
Последний ответ 22.02.2024, 21:03:15
от Zegeberg