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

Fivehundreth

  • Новичок
  • 6
  • 0 / 0
Joomla 3.2.0 Stable
Php 5.3
Ставил из быстрого старта шаблона, уже много чего настроил и поменял, но столкнулся с проблемой: при установке любого расширения любым путем (из файла, из директории или из сети) выдает вот что:
JFolder: :files: Path is not a folder.
JInstaller: :Install: Cannot find Joomla XML setup file

Доступ к папкам - есть, пробовал бэкапить все файлы Joomla - не помогло. Пути до tmp прописаны. Весь день вчера бился, ничего не нашел в сети. Помогите, пожалуйста.
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
Цитировать
JFolder: :files: Path is not a folder.
Явно пути некорректные.

Цитировать
Ставил из быстрого старта шаблона
На чистой Joomla пробовали?
*

Fivehundreth

  • Новичок
  • 6
  • 0 / 0
На чистой не пробовал. Попробую.
upd
Попробовал на чистой, такая же беда...

Насчет путей. В файле configuration.php пути прописаны так:
public $log_path = 'Z:\\home\\aztec\\www/logs';
public $tmp_path = 'Z:\\home\\aztec\\www/tmp';
Сайт стоит не денвере.
Что может не верно, подскажите?

При попытке установить расширение из сети, выдает еще и такую ошибку:
Error
Archive does not exist
« Последнее редактирование: 16.06.2014, 20:04:19 от Fivehundreth »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Подтверждаю, на J3.3.х на денвере не устанавливаются расширения из пакета и по url: Archive does not exist. Тоже самое при обновлении некоторых расширений, ссылается либо на несуществующий архив либо на несуществующую папку вида _extensionName (начинается на нижнее подчеркивание).
Из каталога и с вкладки JED ставиться нормально.
*

Fivehundreth

  • Новичок
  • 6
  • 0 / 0
AlekVolsk
У меня вообще никак не ставится. Это решаемо?
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Перезалейте с дистрибутива все файлы
*

SK

  • Живу я здесь
  • 2155
  • 164 / 0
Насчет путей. В файле configuration.php пути прописаны так:
public $log_path = 'Z:\\home\\aztec\\www/logs';
public $tmp_path = 'Z:\\home\\aztec\\www/tmp';
Пропишите пути так:
public $log_path = 'Z:\\home\\aztec\\www\\logs';
public $tmp_path = 'Z:\\home\\aztec\\www\\tmp';
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Двойной слэш зачем?
*

SK

  • Живу я здесь
  • 2155
  • 164 / 0
Двойной слэш зачем?
У меня у кучи сайтов на Денвере именно так пути прописаны.
*

Fivehundreth

  • Новичок
  • 6
  • 0 / 0
Цитировать
Перезалейте с дистрибутива все файлы
Я перезаливал. Да и на чистой, только что установленной J, ничего не работает.
*

x1

  • Давно я тут
  • 635
  • 15 / 0
  • Linux — это Windows для бытовой техники
AlekVolsk
У меня вообще никак не ставится. Это решаемо?
Обновил Joomla до 3.3.1 . На денвере обновил два плагина без проблем. Пути такие:
public $log_path = 'Z:\\home\\...\\www/logs';
public $tmp_path = 'Z:\\home\\...\\www/tmp';
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
public $log_path = '/logs';
public $tmp_path = '/tmp';
*

Fivehundreth

  • Новичок
  • 6
  • 0 / 0

С путями как только не изгалялся. Пробовал прописывать всеми способами, описанными выше. Скрин с чистой Joomla. При попытке установить из вкладки JED.
Ребят, помогите разобраться, пожалуйста.
UPD
Перепробовал кучу версий J, последнюю попробовал 3.3.0 - шаблон устанавливается, но ни одно расширение не ставится, пишет что не может найти xml-файл, а из JED пишет то же, что и раньше (что на скрине). Походу ошибка где-то в настройках денвера или php. Уже голова кипит...
На 2.2.х устанавливаются шаблоны и расширения - но не работает именно тот шаблон, который мне нужен (он для 3.3.х)
« Последнее редактирование: 18.06.2014, 04:55:09 от Fivehundreth »
*

Fivehundreth

  • Новичок
  • 6
  • 0 / 0
Решилось всё просто. Скачал напрямую с сайта разработчика версию, помеченную именно как для J 3.3.x, всё встало.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Это решило проблему установки конкретного расширения, но не решило проблему установки расширений определенными способами вообще.
*

Hishchnik

  • Захожу иногда
  • 253
  • 19 / 1
  • ©
блин, денвер 3-й
Код: php
public $log_path = 'Z:\\home\\jm3.ru\\www/logs';
public $tmp_path = 'Z:\\home\\jm3.ru\\www/tmp';
встали по дефолту при установке J
проблем таких отродясь не видел......
4 сайта на локалке....
качал отсюда давненько уже...
1. Помог? Благодарность выражается кнопочкой "+" ;)
2. Остановите землю я сойду!
3.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Ага, та же фигня. Проблемы начались именно с J3.3.0, в 3.3.1 продолжились, косяк обнаружился трижды: обновление русской локализации и обновление 2-х плагинов от JoomlaWorks, sig и allvideos. Хз, что это. Поскольку на денвере штатно php 5.3.13, на котором ловил глюки работы некоторых плагинов (именно из-за php), решил для себя, что косяк с обновлением тоже из-за php. Решил его тупо обновить, попутно ищу достойную быстроподнимаемую замену, пока остановился на endels.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

&quot;Доступно расширение&quot;

Автор Berngardt

Ответов: 3
Просмотров: 5179
Последний ответ 06.08.2021, 11:23:45
от ShopES
Расширение с кнопками "Поделиться" и "Нравится" для Joomla

Автор Maffo

Ответов: 4
Просмотров: 2393
Последний ответ 07.07.2021, 16:12:57
от Biss
Joomla не устанавливается

Автор proformiru

Ответов: 2
Просмотров: 762
Последний ответ 10.03.2021, 09:36:07
от wishlight
Не устанавливается Flexi Custom Code

Автор Nikias

Ответов: 2
Просмотров: 852
Последний ответ 28.12.2020, 19:26:41
от arma
Не устанавливается чистая Joomla на OpenServer 3.5.3

Автор dtk77

Ответов: 6
Просмотров: 3171
Последний ответ 06.02.2020, 17:34:52
от b2z