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

Sergey84

  • Захожу иногда
  • 60
  • 0 / 0
Добрый день,

проверил сайт на ошибки на validator.w3.org.

1. Bad value for attribute type on element link: Expected a MIME type but saw the empty string.
Далее идет код с ссылкой на фавиконку. Но в атрибуте type пусто. Хотя сама фавиконка лежит в корне сайта, и путь к ней указан в index.php верно. Где мне копать эту ссылку с пустым type?

2. CSS: Parse Error.
 !important}#kt .kt-form-b (желтым цветом выделена фигурная скобка перед решеткой). Что тут нужно исправить?

3. И еще проблема с названиями папок, где хранятся картинки. Находится все это дело в images. Все названия без пробелов. Например, название папки А Б (в ней картинки - 1.jpg, 2.jpg и т.д.).  Если я руками меняю название папки на А_Б, то теряются пути к картинкам. На сайте они не отображаются. Приходится проваливаться в каждую статью, удалять картинки и заново их вставлять. Мне посоветовали установить DB Replacer. Только я там понять ничего не могу: какую таблицу выбирать, какие колонки выбирать и что на что менять.

Буду благодарен за помощь.   
*

sivers

  • Живу я здесь
  • 2582
  • 358 / 0
Re: Ошибки при валидации сайта
« Ответ #1 : 19.02.2020, 22:54:45 »
2. CSS: Parse Error.
 !important}#kt .kt-form-b (желтым цветом выделена фигурная скобка перед решеткой). Что тут нужно исправить?
попробуйте добавить пробел перед решеткой или точку с запятой перед закр. фигурной скобкой
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Re: Ошибки при валидации сайта
« Ответ #2 : 19.02.2020, 23:05:30 »
Касательно п.3 - я бы написал скрипт, который пробежится по материалам, найдет все пути с пробелом, составит массив, а затем поменяет названия и там и там. В вашем случае вижу такое решение: сделайте дамп таблицы #__content, в ней лежат ваши материалы. Затем поиском ищите. Есть у вас папка А В, меняете на A_B, а затем в дампе ищите через поиск и меняете.

Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

Sergey84

  • Захожу иногда
  • 60
  • 0 / 0
Re: Ошибки при валидации сайта
« Ответ #3 : 20.02.2020, 08:23:14 »
Цитировать
попробуйте добавить пробел перед решеткой или точку с запятой перед закр. фигурной скобкой

К сожалению, не помогло.

Цитировать
сделайте дамп таблицы #__content, в ней лежат ваши материалы. Затем поиском ищите. Есть у вас папка А В, меняете на A_B, а затем в дампе ищите через поиск и меняете.

Попробую так.
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Re: Ошибки при валидации сайта
« Ответ #4 : 20.02.2020, 10:23:14 »
!important}#kt .kt-form-b
Покажите весь кусок этого кода, что там до и после. По идее должно быть так:
Код
  ... !important;
}
#kt .kt-form-b {
...
}
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

Sergey84

  • Захожу иногда
  • 60
  • 0 / 0
Re: Ошибки при валидации сайта
« Ответ #5 : 20.02.2020, 10:33:32 »
Код именно так и выглядит. Со смартфона не могу скопировать код из хостинга. Но уверяю, что точка с запятой есть, а валидатор ее не видит)))) Как такое возможно?
validator.w3.org - здесь проверял главную страницу сайта - movielab.pro
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Re: Ошибки при валидации сайта
« Ответ #6 : 20.02.2020, 12:42:54 »
Как такое возможно?
А в исходном коде так же? Возможно, что сервер отдает кеш, либо скомпилированный LESS, а не CSS. Поэтому и не отражаются изменения.
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

Sergey84

  • Захожу иногда
  • 60
  • 0 / 0
Re: Ошибки при валидации сайта
« Ответ #7 : 20.02.2020, 13:22:04 »
Цитировать
А в исходном коде так же? Возможно, что сервер отдает кеш, либо скомпилированный LESS, а не CSS. Поэтому и не отражаются изменения.

В исходном коде стоит точка с запятой. А в валидаторе ее нет.
Это модуль "Комментарии" от компонента Komento. Он у меня выведен на сайте на главной странице. Настроек в нем немного, а кэш отключен в дополнительных параметрах.
*

Sgrey

  • Захожу иногда
  • 75
  • 4 / 1
Re: Ошибки при валидации сайта
« Ответ #8 : 20.02.2020, 20:20:06 »
1) У вас атрибут type пустой, о чем вам валидатор и сообщает.
2) Нет точки с запятой в исходном коде, поэтому и валидатор ее не видит.
3) Это можно сделать просто в phpMyAdmin поиском и заменой, предварительно сделав бэкап.
*

Sergey84

  • Захожу иногда
  • 60
  • 0 / 0
Re: Ошибки при валидации сайта
« Ответ #9 : 20.02.2020, 22:11:04 »
Цитировать
1) У вас атрибут type пустой, о чем вам валидатор и сообщает.
Я все файлы перерыл, не нашел нигде пустой атрибут type. Где копать, уже не знаю.

Цитировать
2) Нет точки с запятой в исходном коде, поэтому и валидатор ее не видит.
Выше писал, что точка с запятой в исходном коде есть, а валидатор ее не видит. Вот часть исходника:
Код
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3e28b4', endColorstr='#cd66da', GradientType=1 )!important;
   
}   
#kt .kt-form-bg--<?php echo $preset->id; ?>::-webkit-input-placeholder {
color: <?php echo $preset->getParams()->get('fontcolor'); ?> !important;
opacity: .7 !important;
}
#kt .kt-form-bg--<?php echo $preset->id; ?>::-moz-placeholder {
color: <?php echo $preset->getParams()->get('fontcolor'); ?> !important;
opacity: .7 !important;
}
#kt .kt-form-bg--<?php echo $preset->id; ?>:-ms-input-placeholder {
color: <?php echo $preset->getParams()->get('fontcolor'); ?> !important;
opacity: .7 !important;
}
#kt .kt-form-bg--<?php echo $preset->id; ?>:-moz-placeholder {
color: <?php echo $preset->getParams()->get('fontcolor'); ?> !important;
opacity: .7 !important;
}
#kt .kt-form-editor.kt-form-bg--<?php echo $preset->id;?> .kt-form-editor__smiley-toggle > i {
color: <?php echo $preset->getParams()->get('fontcolor'); ?> !important;
}
<?php } ?>

Цитировать
3) Это можно сделать просто в phpMyAdmin поиском и заменой, предварительно сделав бэкап.
Очень странная штука происходит: валидатор показал несколько ошибок на конкретные папки без пробелов. Я ручками все изменил, фотки заново подгрузил, ошибка из валидатора пропала. Но как же остальные пара десятков папок с картинками без пробелов? Почему валидатор не ругается на них?
*

Sgrey

  • Захожу иногда
  • 75
  • 4 / 1
Re: Ошибки при валидации сайта
« Ответ #10 : 21.02.2020, 12:42:04 »
Я все файлы перерыл, не нашел нигде пустой атрибут type. Где копать, уже не знаю.

Тяжелый случай :( В ссылке на фавикон у вас type="" а должен быть type="image/vnd.microsoft.icon"


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

Еще раз, что у вас в исходных файлах я не знаю, но в коде сайта точки с запятой НЕТ. Хотя она здесь не причем, ругается он вероятно на filter:progid:DXImageTransform.Microsoft.gradient


Очень странная штука происходит: валидатор показал несколько ошибок на конкретные папки без пробелов. Я ручками все изменил, фотки заново подгрузил, ошибка из валидатора пропала. Но как же остальные пара десятков папок с картинками без пробелов? Почему валидатор не ругается на них?

Покажите ссылки на конкретные примеры папок, где ругается и где нет.
*

Sergey84

  • Захожу иногда
  • 60
  • 0 / 0
Re: Ошибки при валидации сайта
« Ответ #11 : 21.02.2020, 12:49:18 »
Цитировать
Еще раз, что у вас в исходных файлах я не знаю, но в коде сайта точки с запятой НЕТ. Хотя она здесь не причем, ругается он вероятно на filter:progid:DXImageTransform.Microsoft.gradient
А что с фильтром не так? Валидатор выделяет желтым цветом именно фигурную скобку, больше ничего.

Цитировать
Покажите ссылки на конкретные примеры папок, где ругается и где нет.
А как я покажу ссылку? Изначально было несколько однотипных ошибок в валидаторе, которые явно указывали на наличие пробела в названиях папок с картинками (они находятся в корне сайта в папке imges). Я руками изменил названия папок без пробелов, заново в каждой статье подгрузил фотки (иначе все слетало, и фотки на сайте пропадали). Ошибки исчезли. Но это было несколько папок с пробелами. Сейчас на сайте больше десятка статей - и папки для них в корне сайта с пробелами. А валидатор молчит. 
*

Sgrey

  • Захожу иногда
  • 75
  • 4 / 1
Re: Ошибки при валидации сайта
« Ответ #12 : 21.02.2020, 15:27:15 »
Если не ошибаюсь, он отсутствует в стандарте. То что валидатор выделяет именно скобку ничего не значит, не всегда автоматические проверки правильно указывают на реальное местоположение ошибки.

Очень просто, пример страницы где ошибка есть и пример страницы где ее нет, хотя пробелы есть в обоих случаях. Если сейчас ошибок нет, то и говорить не о чем.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не работает мобильная версия сайта

Автор jeans

Ответов: 4
Просмотров: 563
Последний ответ 21.05.2025, 12:44:06
от jeans
Разные меню для мобильной и для ПК версии сайта

Автор jimka

Ответов: 7
Просмотров: 977
Последний ответ 24.03.2025, 20:03:01
от R31rus
Множество несуществующих ссылок при обходе сайта роботом Яндекс

Автор goga_pgasovav

Ответов: 7
Просмотров: 1169
Последний ответ 10.12.2024, 18:44:25
от goga_pgasovav
Антивирус нашел вредоносный код в двух файлах сайта polyfill

Автор buto

Ответов: 4
Просмотров: 922
Последний ответ 19.10.2024, 10:56:55
от wishlight
Шаблон для данной страницы недоступен. сообщите об этом Администратору сайта

Автор 62411

Ответов: 2
Просмотров: 1152
Последний ответ 30.03.2024, 13:15:16
от web1