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

Rokogoko

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Здравствуйте.
Я создаю игровой форум.
Есть много разделов, свыше 50 штук с названием каждой игры.
В каждом нужно добавить подкатегории с одинаковым названием.
Например
Team Fortress 2
…Технические вопросы
…Где купить лицензию?
...Тактика
Half-Life 2
…Технические вопросы
…Где купить лицензию?
...Тактика
Max Payne
…Технические вопросы
…Где купить лицензию?
...Тактика

Есть ли способ добавить одинаковые подразделы автоматически?

Может есть файл, где хранится дерево категорий и подкатегорий и тогда это будет проще сделать через текстовой редактор, чем добавлять это всё с каждой перезагрузкой.
« Последнее редактирование: 12.04.2008, 00:05:42 от Rokogoko »
*

VETERINAR

  • Давно я тут
  • 855
  • 165 / 14
  • Kiss my shiny metal ass!
Re: Мульти-добавление подкатегорий.
« Ответ #1 : 09.04.2008, 06:38:39 »
Можно через phpMyAdmin и блокнот.

Содайте 1 категорию. Сделайте дамп таблицы с категориями. Скопируйте значения в блокнот (дамп структуры таблицы удалите). Сотрите id. И далее редактируйте только названия категорий и выполняйте SQL запросы через тот же phpMyAdmin своего дампа с новыми категориями. Не знаю структуру бызы этого форума, но принцип такой.
*

Rokogoko

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Re: Мульти-добавление подкатегорий.
« Ответ #2 : 10.04.2008, 03:37:52 »
Спасибо за ответ. Я с phpmyadmin пока мало операций делал.
Я нашёл в phpmyadmin таблицу jos_fb_categories, сделал эскпорт в формате SQL, скопировал значения в блокнот. Вот как сделать: "выполняйте SQL запросы через тот же phpMyAdmin" я пока не знаю.
Пойду изучать документацию по phpmyadmin
*

VETERINAR

  • Давно я тут
  • 855
  • 165 / 14
  • Kiss my shiny metal ass!
Re: Мульти-добавление подкатегорий.
« Ответ #3 : 10.04.2008, 04:43:52 »
"выполняйте SQL запросы через тот же phpMyAdmin" я пока не знаю.

А там вверху кнопка "SQL" почти на всех страницах. Нажимаете и вставляете в текстовое поле запрос. Потом достаточно нажать "пошел".
*

Rokogoko

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Re: Мульти-добавление подкатегорий.
« Ответ #4 : 12.04.2008, 00:03:06 »
VETERINAR спасибо за подсказки, они мне очень помогли.  Все работает, всё получилось. Очень толковый ответ, редко на форуме встретишь человека, который способен помочь в нестандартной задаче.

Если у кого возникнут дополнительные вопросы. Пишите в эту ветку, я расскажу пошагово во всех подробностях.
*

Rokogoko

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
------------------
Я вам поднял репутацию, но в причинах написал совсем не то. Надо было написать: "За открытие волшебного мира MySQL". :)
Изучил синтаксис, работа ускорилась в десятки раз. Я теперь могу одним запросом добавить сразу 10 категорий и они сразу будут опубликованы. Спасибо, просто невероятно ускоряет работу.
*

VETERINAR

  • Давно я тут
  • 855
  • 165 / 14
  • Kiss my shiny metal ass!
Изучил синтаксис, работа ускорилась в десятки раз.

Это замечательно. Рад, что помог :)
*

Rokogoko

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Народ мне в личку написал. Теперь пошагово:
1. Заходим в phpmyadmin
есть ли на денвере, то путь такой http://localhost/tools/phpmyadmin/
Если на хостере, то там нужно зайди по своим акк и выбрать mysql
2. Слева выбираем базу данных
3. Слева открывается список всех таблиц
4. Выбираем jos_fb_categories
5. Справа открылась эта таблица со всеми её настройками.
6. Выбираем вкладку export
Здесь ничего не трогаем. По умолчанию должно стоять на формате sql
Нажимаем GO
7. Открывается эта таблица на языке SQL. Ползём вниз.
Находим нужную строчку для дублирования категории. Например.
Код
INSERT INTO `jos_fb_categories` VALUES (4, 2, 'Level 3 Category B', 0, 0, 0, 1, NULL, 0, 0, 0, 0, 2, 0, 1, 0, '0000-00-00 00:00:00', 0, 0, '', '', '', 0, 0, 0, 0);
8. Нажимаем стрелку Back и выбираем вкладку SQL
9. Сюда можно вбивать команды на sql
Чтобы категория не про дублировалась, нужно убрать id
id идёт сразу после VALUES
в моём примере id - это 4
Нужно, чтобы sql автоматически присвоил id, поэтому вместо цифры напишите id
то есть будет выглядеть так
Код
INSERT INTO `jos_fb_categories` VALUES (id, 2, 'Level 3 Category B', 0, 0, 0, 1, NULL, 0, 0, 0, 0, 2, 0, 1, 0, '0000-00-00 00:00:00', 0, 0, '', '', '', 0, 0, 0, 0);
вместо Level 3 Category B - пишите название, любое какое нравится.
после того как строчку вбили, нажмите GO
ВСЁ
10. Теперь мульти-запрос. В блокноте заранее готовим все строчки, каждая которая будет заканчиваться точкой с запятой и тут же будет идти следующая строчка без пробела и переносов.
Например
Код
INSERT INTO `jos_fb_categories` VALUES (id, 2, 'Level 3 Category GAME 111', 0, 0, 0, 1, NULL, 0, 0, 0, 0, 2, 0, 1, 0, '0000-00-00 00:00:00', 0, 0, '', '', '', 0, 0, 0, 0);INSERT INTO `jos_fb_categories` VALUES (id, 2, 'Level 3 Category GAME 222', 0, 0, 0, 1, NULL, 0, 0, 0, 0, 2, 0, 1, 0, '0000-00-00 00:00:00', 0, 0, '', '', '', 0, 0, 0, 0);INSERT INTO `jos_fb_categories` VALUES (id, 2, 'Level 3 Category GAME 333', 0, 0, 0, 1, NULL, 0, 0, 0, 0, 2, 0, 1, 0, '0000-00-00 00:00:00', 0, 0, '', '', '', 0, 0, 0, 0);INSERT INTO `jos_fb_categories` VALUES (id, 2, 'Level 3 Category GAME 444', 0, 0, 0, 1, NULL, 0, 0, 0, 0, 2, 0, 1, 0, '0000-00-00 00:00:00', 0, 0, '', '', '', 0, 0, 0, 0);
Нажимаем GO
Сразу появятся 4 категории.
*

Rokogoko

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
во время работы с категориями потребовалось сменить название категории на другое.
есть фантастический плагин, рекомендую! ReReplacer
http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,4336/Itemid,35/
прямо у него в настройках пишите что и на что менять, и он меняет!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Error, missing fireboard config file!

Автор djforce

Ответов: 4
Просмотров: 3002
Последний ответ 24.10.2010, 19:45:50
от AlexSmirnov
[Решено] Сайт + форум

Автор nana

Ответов: 15
Просмотров: 3266
Последний ответ 05.10.2010, 14:43:51
от zhenia_01
Добавление ссылки "обсудить на форуме" в конец материала

Автор twp

Ответов: 1
Просмотров: 2523
Последний ответ 12.08.2010, 10:17:45
от twp
(решено) Темы форума FireBoard

Автор falco

Ответов: 4
Просмотров: 2747
Последний ответ 21.07.2010, 09:27:20
от cmepthik
Добавление новой группы пользователей в Fireboard

Автор terry111

Ответов: 1
Просмотров: 2043
Последний ответ 16.02.2010, 18:25:00
от terry111