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

vanishox

  • Новичок
  • 6
  • 0 / 0
День добрый.

Сразу оговорюсь новичок (поставил Joomla 3.6.5 вчера 29.03.2017).

- PHP 5.4
- MySQL 5.1.66

1. Начал работать с Joomla по книге - "10 легких шагов к освоению Joomla! 3"
2. Создаю меню так:
Цитировать
- «Меню» → «Менеджер меню».
 - Создайте запись [кнопка «Создать»] со следующими параметрами:
 • Заголовок : Пользователи;
 • Тип меню : polzovateli;
 • Описание : Пользовательское меню
3. После сохранения браузер подвисает и в конце выдает белую страничку.

В логах апача вижу следующее:
Цитировать
[Thu Mar 30 10:03:16 2017] [error] [client 10.10.65.2] PHP Notice:  Undefined property: MenusViewMenus::$filterForm in /var/www/psihology/layouts/joomla/searchtools/default/bar.php on line 28, referer: http://localhost:8080/administrator/index.php?option=com_menus&view=menu&layout=edit
[Thu Mar 30 10:03:16 2017] [error] [client 10.10.65.2] PHP Fatal error:  Call to a member function getGroup() on a non-object in /var/www/psihology/layouts/joomla/searchtools/default/bar.php on line 28, referer: http://localhost:8080/administrator/index.php?option=com_menus&view=menu&layout=edit

Подскажите, в чем ошибка?
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Так. Первое, что хочу вам порекомендовать - поставьте себе нормальный локальный сервер на комп. Я пользуюсь OpenServer. В его настройках выберите версию PHP 7, ну и все остальные параметры, соответственно, крутите на максимум, желательно с учетом разрядности вашей системы. После этого создайте в нем сайт, установите Joomla, скачав дистрибутив с joomla.org. Вот статья в помощь. Можно и по умолчанию настройки оставить - будет работать. Пробуйте.
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

vanishox

  • Новичок
  • 6
  • 0 / 0
Проблема в том, что нужно сделать сайт на рабочем сервере - поднят на Debian7.
Связка: apache + php + MySQL.
Я поставил Joomla сразу на него.
Может стоит пробовать более раннюю версию Joomla из линейки 3.х, либо скакнуть ниже на ветку 2.х ?
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Может стоит пробовать более раннюю версию Joomla из линейки 3.х, либо скакнуть ниже на ветку 2.х ?
Ну попробуйте, заодно научитесь вирусы лечить.

Это можно интерпретировать так: я пришел покупать машину, все устраивает, но беда в том, что они у вас ездят на бензине АИ-95, а у меня под гаражом цистерна керосина зарыта, может лучше купить ржавый раритет?

Что мешает на том же сервере обновить версии программного обеспечения? Это всего несколько строчек в консоль... Через старое серверное ПО тоже ведь сайты ломают...
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

vanishox

  • Новичок
  • 6
  • 0 / 0
Это можно интерпретировать так: я пришел покупать машину, все устраивает, но беда в том, что они у вас ездят на бензине АИ-95, а у меня под гаражом цистерна керосина зарыта, может лучше купить ржавый раритет?

Все правильно, только при этом тот у кого я покупаю машину уверяет, что на моем керосине его машина также поедет.

Если больше не будет идей, придется обновиться до php7.
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Цитировать
[Thu Mar 30 10:03:16 2017] [error] [client 10.10.65.2] PHP Fatal error:  Call to a member function getGroup() on a non-object in /var/www/psihology/layouts/joomla/searchtools/default/bar.php on line 28, referer: http://localhost:8080/administrator/index.php?option=com_menus&view=menu&layout=edit

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

https://github.com/joomla/joomla-cms/issues/9687

https://github.com/joomla/joomla-cms/pull/9696

https://github.com/joomla/joomla-cms/commit/9194bf9900a7b7a18865212175c4461a9ea46cf7

Проверьте свои файлы на соответствие исправлениям в последней ссылке.

У вас либо Joomla не 3.6.5, либо взяли вы ее не с официального сайта.

*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Выше я написал, откуда качать.
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

vanishox

  • Новичок
  • 6
  • 0 / 0
Хммм. Скачал Joomla отсюда:

http://joomla.ru/downloads/joomla -> Joomla 3.6.5

(https://downloads.joomla.org/cms/joomla3/3-6-5/Joomla_3.6.5-Stable-Full_Package.zip - если быть точным)

В файлах:
- administrator/components/com_languages/views/language/tmpl/edit.php
- administrator/components/com_menus/views/item/tmpl/edit.php

Есть исправления:

Цитировать
<form action="<?php echo JRoute::_('index.php?option=com_languages&view=language&layout=edit&lang_id=' . (int) $this->item->lang_id); ?>" method="post" name="adminForm" id="language-form" class="form-validate form-horizontal">

и

Цитировать
<form action="<?php echo JRoute::_('index.php?option=com_menus&view=item&layout=edit' . $tmpl . '&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="item-form" class="form-validate">

Но при этом в логи падают все равно ошибки:
Цитировать
[Mon Apr 03 12:13:37 2017] [error] [client 10.10.65.2] PHP Notice:  Undefined property: MenusViewMenus::$filterForm in /var/www/psyhology/layouts/joomla/searchtools/default/bar.php on line 28, referer: http://localhost:8080/administrator/index.php?option=com_menus&view=menu&layout=edit

[Mon Apr 03 12:13:37 2017] [error] [client 10.10.65.2] PHP Fatal error:  Call to a member function getGroup() on a non-object in /var/www/psyhology/layouts/joomla/searchtools/default/bar.php on line 28, referer: http://localhost:8080/administrator/index.php?option=com_menus&view=menu&layout=edit

В чем еще может быть проблема? Наврядли проблема в php - я так понимаю проблема в коде самого фрэймворка?
« Последнее редактирование: 03.04.2017, 12:51:58 от vanishox »
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
ТС, вам выше писали, какой ру))) вы щас накачаете себе...
выше писали сайт Joomla.org
там офф сайт, русик, обновления.

ещё раз не с офф скачаете, советую, лучше не пишите.
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

vanishox

  • Новичок
  • 6
  • 0 / 0
Хммм. Скачал Joomla отсюда:

http://joomla.ru/downloads/joomla -> Joomla 3.6.5

(https://downloads.joomla.org/cms/joomla3/3-6-5/Joomla_3.6.5-Stable-Full_Package.zip - если быть точным)

В скобках я указал url архива с которого шла закачка - на сайте http://joomla.ru/downloads/joomla представлена ссылка на скачивание как раз с сайта Joomla.org

Если по теме - нашел описание похожего bug issue - https://github.com/joomla/joomla-cms/pull/9371, только там по модулям.

Просто непонятно, от чего это зависит. И нет 100% рабочего варианта как его лечить.

*

vanishox

  • Новичок
  • 6
  • 0 / 0
Re: Ошибка при создании меню в Joomla v. 3.6.5
« Ответ #10 : 03.04.2017, 15:24:43 »
В общем поставил версию Joomla 3.5.1 (скачанную с сайта Joomla.org) на другой сервер Debian 8 c apache2 и php 5.6, база MySQL та же.
На другом сервере работает.
Будет время - попробую на основном сервере также поднять 3.5.1 - отпишу.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор Fati

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

Автор akteon25

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

Автор Ebelous

Ответов: 8
Просмотров: 2875
Последний ответ 27.01.2025, 20:38:45
от pavelrer
Исчез компонент 'Поля' из меню в админке

Автор goga_pgasovav

Ответов: 2
Просмотров: 1272
Последний ответ 23.12.2024, 22:31:21
от goga_pgasovav
Trouble Upgrading from Joomla 3.8 to 3.9

Автор melissa00

Ответов: 0
Просмотров: 1707
Последний ответ 26.07.2024, 10:03:51
от melissa00