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

ildar87

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

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

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

robert

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

sivers

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

ildar87

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

ildar87

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

sivers

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

ildar87

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

ildar87

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

AlekVolsk

  • Гуру
  • 6915
  • 415 / 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()
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Поиск в Материал- Блог категории

Автор mag_num83

Ответов: 1
Просмотров: 320
Последний ответ 14.09.2023, 20:36:34
от beliyadm
Менеджер изображений не запоминает последнюю выбранную папку

Автор saxes

Ответов: 0
Просмотров: 365
Последний ответ 26.04.2023, 07:36:23
от saxes
Вставка кода видео в материал

Автор dedun

Ответов: 20
Просмотров: 7230
Последний ответ 12.03.2023, 16:13:31
от kochevnik
ajax загрузка компонента на странице материала К2

Автор Divn

Ответов: 0
Просмотров: 524
Последний ответ 13.01.2023, 15:05:52
от Divn
jos-Error: Материал не найден вместо 404 ошибки

Автор bugmenot

Ответов: 4
Просмотров: 922
Последний ответ 10.01.2023, 11:32:11
от Mick_20