Новости Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

👩‍💻 SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla.Компонент - менеджер цифровых проектов для Joomla! CMS. Компонент обеспечивает создание каталога цифровых проектов и предоставляет возможность скачивания, в том числе с использованием лицензионных ключей.👩‍💻 v.2.5.0. Что нового?Схемы структур данных для серверов обновлений. Теперь с SW JProjects вы может создавать сервер обновлений не только для расширений Joomla, но и свои собственные. Например, вам нужно, чтобы структура данных сервера обновлений была другая и формат должен быть, например, не XML, а JSON. Формирование структуры данных для сервера обновлений расширений Joomla вынесено в отдельный плагин. Вы можете создать свой собственный плагин и реализовать в нём нужную вам структуру данных, добавив или наоборот исключив отображаемые данные. Сервер обновлений в компоненте по-прежнему отображает информацию о списке проектов и их версиях, о конкретном проекте и его changelog.Можно выбрать схему данных сервера обновлений глобально для всего компонента, выбрать другую схему данных для категории проектов, а так же выбрать схему в каждом проекте.

Разработчикам в качестве образца можно посмотреть плагин схемы данных для Joomla в составе компонента или же плагин-образец JSON-схемы на GitHub.
Группа плагинов swjprojects. Для нужд компонента создана группа плагинов swjprojects. В частности, в этой группе находится плагин структуры данных Joomla расширений для сервера обновлений.Изменение языковых констант. Изменены некоторые языковые константы в панели администратора. Если вы делали переопределение констант - переопределите их снова.👩‍💻 Joomla 6. Внесены изменения для корректной установки и работы компонента на Joomla 6. Компонент успешно протестирован на Joomla 6-beta2.Минимальная версия Joomla - 5. Подняты минимальные системные требования: Joomla 5.0.0 и PHP 8.1.
- Страница расширения👉 Плагин-образец кастомной JSON-схемы данных для сервера обновлений на GitHub.- GitHub расширения- Документация на GitHub- Joomla Extensions Directory#joomla #расширения

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:- создать объект класса события- передать в него параметры

use Joomla\CMS\Event\AbstractEvent;use Joomla\CMS\Factory;use Joomla\CMS\Plugin\PluginHelper;// Грузим плагины нужных группPluginHelper::importPlugin('system');// Создаём объект события$event = AbstractEvent::create('onAfterInitUniverse', [    'subject' => $this,    'data'    => $data, // какие-то данные    'article' => $article, // ещё материал вдовесок    'product' => $product, // и товаров подвезли]);// Триггерим событиеFactory::getApplication()->getDispatcher()->dispatch(    $event->getName(), // Тут можно строку передать 'onAfterInitUniverse'    $event);// Получаем результаты// В случае с AbstractEvent это может быть не 'result',// а что-то ещё - куда сами отдадите данные.// 2-й аргумент - значение по умолчанию, // если не получены результаты$results = $event->getArgument('result', []);
Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды. Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;$event = MyCoolEvent::create('onAfterInitUniverse', [    'subject'    => $this,    'eventClass' => MyCoolEvent::class, // ваш класс события    'data'       => $data, // какие-то данные    'article'    => $article, // ещё материал вдовесок    'product'    => $product, // и товаров подвезли]);
Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.
@joomlafeed#joomla #php #webdev

0 Пользователей и 1 Гость просматривают эту тему.
  • 15 Ответов
  • 3235 Просмотров
*

Heian

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Здравствуйте!
Проблема в следующем - одно из полей должно быть list'ом и хранить несколько значений, однако при сохранении в соотв. поле в БД ничего не пишется - ни индексов, ни самих значений. Хотя имена у поля и поля в таблице совпадают. Все остальные поля (text и т.д.) пишутся нормально. Как сохранить в БД данные из поля типа list с включенным multiple?
Или возможно ли как-нибудь перехватить функцию сохранения, чтобы модернизировать данные и записать их так, как надо?
В туториале об этом вообще ни слова...
*

Heian

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Или подскажите компоненты с подобным функционалом, чтобы разобраться на готовом... лично я таких еще не встречал
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
По идее такой список должен приходить массивом. Привидите код списка (спрячьте за тег спойлер). Кстати, Вы разрабатываете свой компонент?
*

Heian

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Все, разобрался.

b2z, так и есть. Joomla вообще никак не обрабатывает такие значения в основных полях, видимо, не предусмотрено. Поэтому для решения понадобилось дописать в контроллере компонента функцию save, перехватить POST и заменить значения, которые являются массивами, на их join.
Если кому-то понадобится:
Код
function save() {
$form=$_POST['jform'];
foreach($form as $field) {
 if(is_array($field)) $_POST['jform'][$field]=join($field,',');
}
return parent::save();
}

Кстати, Вы разрабатываете свой компонент?
Да, так и есть
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Ну что, не возникло больше вопросов?
Ну же, дорогой друг, выбири наконец 3 значения в поле, сохрани и посмотри, остались ли они в админке у тебя выбранными? м? Нет? Да?
Как только захочешь нормальную работу multiplate - подскажу где что добавить :)
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Joomla вообще никак не обрабатывает такие значения в основных полях, видимо, не предусмотрено.
В каком плане в основных полях? А Вы пробовали добавлять multiple=true?
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
В каком плане в основных полях? А Вы пробовали добавлять multiple=true?
Видимо не совсем. Ибо возник бы вопрос, почему выбранные пункты, при повторном редактировании итема, не показываются выбранными! Ведь записать значения выбранных пунктов в БД - просто.
*

Heian

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
В каком плане в основных полях? А Вы пробовали добавлять multiple=true?
Пробовал, собственно, из-за этого и возник этот вопрос)
И да, установить дефолтные значения стандартными средствами также не удалось. Для этого пришлось написать спец. функции в контроллере, создающие массив option'ов (по умолчанию эта функция спрятана в недрах движка и сходу ее не модернезировать).
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Пробовал, собственно, из-за этого и возник этот вопрос)
И да, установить дефолтные значения стандартными средствами также не удалось. Для этого пришлось написать спец. функции в контроллере, создающие массив option'ов (по умолчанию эта функция спрятана в недрах движка и сходу ее не модернезировать).
Как-то вы очень сложно все делаете) Есть JForm, с помощью которого, все очень быстро делается.
Нужно всего-лишь добавить в модели в function loadFormData() строку
Код
$data->имя_поля = explode(',',$data->имя_поля);
Это разбивает строку из БД на массив.
и в файл admin->tables->компонент.php строки:
Код
public function check() {
  $this->имя_поля = implode(',',$this->имя_поля);
  return parent::check();
}
А это наоборот, собирает из массива строку, которую записывает в бд при сохранении.
*

Heian

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
А поля создаете с помощью JForm?
Нет. Сперва считываются нужные данные из БД, парсятся, на их основании создается массив option'ов, который и отдается для дальнейшего использования. Про JForm и его премудрости вообще не знал - в официальной документации очень сложно ориентироваться, можно банально не найти нужного, а в туториалах только основы.

xchesh, спасибо за некостыльный способ xD
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Нет. Сперва считываются нужные данные из БД, парсятся, на их основании создается массив option'ов, который и отдается для дальнейшего использования. Про JForm и его премудрости вообще не знал - в официальной документации очень сложно ориентироваться, можно банально не найти нужного, а в туториалах только основы.

xchesh, спасибо за некостыльный способ xD
Пожалуйста, лишь бы этим способом воспользовался.
*

klubnichkaaa

  • Захожу иногда
  • 302
  • 16 / 2
Вот понадобился такой мультисписок, но к сожалению в Joomla 2.5 он не сохраняет данные, так же в родных расширениях реализацию этого ненашел. Из того что было предложено в тебе добился только сохранение только какого то 1 пункта. А как же сохранить множественный выбор!
Пытался добавить function save() { но всё равно сохраняет только 1 параметр из списка. Как быть информации в интернете почти нету.
Делай с другими то же, что они собираются сделать с тобой: бей первым.
*

klubnichkaaa

  • Захожу иногда
  • 302
  • 16 / 2
Ох я балбес! ))) Ещё до того как нашёл эту ветку форума я разбирал родные компоненты я поменял varchar(255) на INT вот и не писалось у меня ничего кроме 1 значения. Поменял оставил код который был выше и всё сохраняет всё работает. Хорошо хоть нашёл эту ветку и смог сам обнаружить ошибку.
Делай с другими то же, что они собираются сделать с тобой: бей первым.
*

klubnichkaaa

  • Захожу иногда
  • 302
  • 16 / 2
Кстати недавно замеченный косяк! Пустые значение не  сохраняет, потому сделайте так на тот случай если скажем значение нужно сделать 0

Цитировать
   <field
   name="parent_id"
   type="sql" 
   label="COM_PRICELEAFSHOP_CAT_VIBOR"
   query="SELECT id,name_cat FROM #__priceleafshop_cat"
   key_field="id"
   value_field="name_cat"
   description="COM_PRICELEAFSHOP_CAT_VIBOR_OPISANIE"
   multiple="true"
   default="">
   <option value="0">COM_PRICELEAFSHOP_CAT_NO_SELECT</option>
   </field>

Таким образом вы можете поставить 0, но default тут не катит. А если не поставить <option value="0">COM_PRICELEAFSHOP_CAT_NO_SELECT</option> то при диактивации элементов и последующем сохранении, значение не будет пустым оно оставит теже значения что и были.
« Последнее редактирование: 16.05.2013, 18:06:18 от klubnichkaaa »
Делай с другими то же, что они собираются сделать с тобой: бей первым.
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Кстати недавно замеченный косяк! пустые то значение не  сохраняет, потому сделайте так на тот случай если скажем значение нужно сделать 0

Таким образом вы можете поставить 0 default тут не катит. А если не поставить <option value="0">COM_PRICELEAFSHOP_CAT_NO_SELECT</option> то всё будет работать как надо в противном случае если вы диактивируете все элементы то список всё равно будет сохранён в том же порядке что и был.
Согласен, так и будет.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

iCagenda - Дополнительные поля

Автор Mitriy

Ответов: 15
Просмотров: 2157
Последний ответ 06.10.2022, 22:52:41
от Mitriy
Менеджер контактов: Создание контакта - нет кнопки сохранить

Автор Slava77

Ответов: 1
Просмотров: 792
Последний ответ 23.05.2021, 01:41:25
от Slava77
Дополнительные поля на странице списка контактов

Автор S_Layer

Ответов: 2
Просмотров: 1360
Последний ответ 15.04.2020, 08:34:45
от ruyurik
А зачем нужны поля в Joomla?

Автор Lopes-popes

Ответов: 11
Просмотров: 1863
Последний ответ 08.07.2019, 11:23:33
от Avalon
В Widgetkit не появляются доп. поля из Zoo

Автор kozhenevsky

Ответов: 0
Просмотров: 1031
Последний ответ 14.12.2018, 13:48:40
от kozhenevsky