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

ildar87

  • Новичок
  • 15
  • 0 / 0
Приветствую

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

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

robert

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

sivers

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

ildar87

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

ildar87

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

sivers

  • Завсегдатай
  • 1251
  • 160 / 0
Будет очень много материалов, планировал сохранять в подкаталоги по первым двум буквам хешированного имени файла
Лучше уж ИД хэшить. Вдруг имя поменять надо будет в материале?
На связи в телеге @sivers
*

ildar87

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

ildar87

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

AlekVolsk

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

ildar87

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

robert

  • Живу я здесь
  • 4919
  • 452 / 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

  • Живу я здесь
  • 4919
  • 452 / 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

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

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

Автор Chigolberi

Ответов: 17
Просмотров: 267
Последний ответ 04.06.2020, 16:03:22
от Chigolberi
Нужно ли привязывать материал к категории?

Автор Alex_dark74

Ответов: 3
Просмотров: 106
Последний ответ 28.05.2020, 17:08:29
от voland
Масштабирование текста, ссылка на материал

Автор Sanekyo

Ответов: 0
Просмотров: 77
Последний ответ 30.04.2020, 19:20:28
от Sanekyo
Пакетная выгрузка (импорт) изображений товаров

Автор Vitaly91188

Ответов: 5
Просмотров: 134
Последний ответ 29.04.2020, 20:26:34
от sivers
Как вывести дополнительные поля пользователя в материал?

Автор Igor1

Ответов: 38
Просмотров: 4190
Последний ответ 12.04.2020, 19:54:35
от SolopoV