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

ildar87

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Приветствую

Прошу проконсультировать.
Пользователь с фронта будет создавать материал и загружать фотографии с возможностью их обрезки. На сервер отправляется массив с изображениями в base64, на сервере изображения сохраняются в разных размерах. Делал подобное под laravel, но с Joomla не так все просто.
Думаю, в шаблоне добавления материала сделать кнопку загрузки изображений, добавить дополнительное поле, в которое будет сохраняться массив загруженных изображений в base64, на сервере также сохранять в разных размерах и перезаписывать это доп поле массивом путей к сохраненным изображениям.

Где на стороне сервера обрабатывать и перезаписывать значение доп поля?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
В Joomla есть система плагинов для врезки своего кода без хака ядра. Они разпределены по группам и их методы вызываются определенными событиями. В вашем случае я бы написал плагинчик группы content на событие onContentAfterSave. Надо еще подумать, куда записать пути к файлам, возможно, вам придется добавить столбик для них.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

sivers

  • Живу я здесь
  • 2005
  • 272 / 0
Можно и вовсе обойтись без хранения путей в БД (если только нет необходимости поиска в БД по ним). Сохранять для каждого материала в отдельную папку, содержащую в названии ИД материала, а при открытии страницы материала, проверять содержимое этой папки функцией glob().
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

ildar87

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
В Joomla есть система плагинов для врезки своего кода без хака ядра. Они разпределены по группам и их методы вызываются определенными событиями. В вашем случае я бы написал плагинчик группы content на событие onContentAfterSave. Надо еще подумать, куда записать пути к файлам, возможно, вам придется добавить столбик для них.
Спасибо, погуглю
*

ildar87

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Можно и вовсе обойтись без хранения путей в БД (если только нет необходимости поиска в БД по ним). Сохранять для каждого материала в отдельную папку, содержащую в названии ИД материала, а при открытии страницы материала, проверять содержимое этой папки функцией glob().
Будет очень много материалов, планировал сохранять в подкаталоги по первым двум буквам хешированного имени файла
*

sivers

  • Живу я здесь
  • 2005
  • 272 / 0
Будет очень много материалов, планировал сохранять в подкаталоги по первым двум буквам хешированного имени файла
Лучше уж ИД хэшить. Вдруг имя поменять надо будет в материале?
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

ildar87

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Лучше уж ИД хэшить. Вдруг имя поменять надо будет в материале?
Имя будет состоять из ид пользователя, времени, счётчика - совпадений не будет
*

ildar87

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
В Joomla есть система плагинов для врезки своего кода без хака ядра. Они разпределены по группам и их методы вызываются определенными событиями. В вашем случае я бы написал плагинчик группы content на событие onContentAfterSave. Надо еще подумать, куда записать пути к файлам, возможно, вам придется добавить столбик для них.
Разобрался, получилось, еще раз спасибо.
Но разве нельзя менять значение доп свойства до сохранения?
*

AlekVolsk

  • Гуру
  • 6916
  • 413 / 4
а еще в Joomla есть допполя и для них есть поле галереи https://github.com/JPathRu/pkg_gallery_field, фронт для поля дописать имхо не проблема
*

ildar87

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
а еще в Joomla есть допполя и для них есть поле галереи https://github.com/JPathRu/pkg_gallery_field, фронт для поля дописать имхо не проблема
Спасибо, но пока мне нравится идея хранения в поле типа textarea
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Разобрался, получилось, еще раз спасибо.
Но разве нельзя менять значение доп свойства до сохранения?
Можно. onContentNormaliseRequestData или onContentBeforeSave.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

ildar87

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Можно. onContentNormaliseRequestData или onContentBeforeSave.
Нашел только, как получить список полей материала:
FieldsHelper::getFields($context, $article, true);

И перезаписать в бд:
$model = BaseDatabaseModel::getInstance('Field', 'FieldsModel', array('ignore_request' => true));
$model->setFieldValue($field->id, $article->get('id'), $newValue);

Как можно изменить значение свойства до сохранения?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Метод - onContentBeforeSave($context, $table, $isNew, $data), $table - объект JTable, $data - данные из формы. Смотрите код Joomla\CMS\MVC\Model\AdminModel::save().
Не будь паразитом, сделай что-нибудь самостоятельно!
*

ildar87

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Видимо, что-то не понимаю

В событии onContentBeforeSave изменение значения доп поля не сохраняются
В форме создания материала, заполняю доп поле test-field значением 111
В плагине в событии onContentBeforeSave($context, $article, $isNew, $data) присваиваю новое значение $data['com_fields']['test-field'] = '333';
Но в базе сохраняется прежнее значение, т.е. 111

Может значения доп полей нужно править не в группе content?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
В плагине в событии onContentBeforeSave($context, $article, $isNew, $data) присваиваю новое значение $data['com_fields']['test-field'] = '333';
Но в базе сохраняется прежнее значение, т.е. 111
Мало менять $data, нужно еще ее прикручивать к $article, я же вам писал
Смотрите код Joomla\CMS\MVC\Model\AdminModel::save()
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор Chigolberi

Ответов: 19
Просмотров: 3404
Последний ответ 10.06.2022, 00:27:40
от Леон
Нет возможности редактировать материал с фронта

Автор arma

Ответов: 0
Просмотров: 144
Последний ответ 02.06.2022, 17:56:37
от arma
Настройка редактора в пункте меню - создать материал

Автор Vasbka

Ответов: 3
Просмотров: 305
Последний ответ 26.05.2022, 23:01:29
от Vasbka
Вывести переменную шаблона в материал

Автор Little Muk

Ответов: 8
Просмотров: 1657
Последний ответ 08.05.2022, 15:02:46
от Black-kot
Получить список выбранных изображений в медиаменеджере

Автор voron121

Ответов: 0
Просмотров: 168
Последний ответ 05.05.2022, 23:26:10
от voron121