Мульти поле в админке

  • 22 Ответов
  • 1389 Просмотров

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

*

Оффлайн lesh1j

Мульти поле в админке
« : 25.09.2014, 19:11:52 »
Здравствуйте, такой вопрос, пишу компонент
Чтобы добавить поле image в админке, в XML пишу
Код: (xml) [Выделить]
<field name="image"
type="media"
hide_none="1"
label=""
description="" />

ну и потом его вызываю в edit.php
А может есть в Joomla стандартные метод поля с неограниченным количеством изображений(т.е. грубо говоря под полем image кнопка добавить еще, появляется еще одно поле) или направьте, как это реализовать.

В принципе интересует не только image, но и текстовые поля
« Последнее редактирование: 25.09.2014, 19:37:03 от lesh1j »


*

Оффлайн lesh1j

Re: Мульти поле в админке
« Ответ #2 : 22.10.2014, 04:39:51 »
Всё-таки я, наконец, собрался с силами и сделал этот, как мне кажется, весьма нужный тип поля(на скрине обведен), архив прикрепляю, проверял только Joomla 3.3, может пригодится кому, мне так постоянно нужен, когда делаю небольшие каталоги, раньше делал просто 5-10 полей типа "media", но это - шило=)
кто не знает - скидываем файлик из прикрепленного архива в administrator\components\com_вашКомпонент\models\fields\multiimage.php и всё, с этим полем можно работать так же как со стандартными, type="multiimage"
в БД заносятся value всех полей через запятую, соответственно если нужно вывести на фронт-энде, то можно это сделать примерно так:
Код: (php) [Выделить]
$images= explode(",", $this->item->images);

foreach ( $images as $image) {
echo '<img src="/' . $image . '" /><br>';
}
« Последнее редактирование: 22.10.2014, 16:44:15 от lesh1j »

*

Оффлайн AlekVolsk

Re: Мульти поле в админке
« Ответ #3 : 27.10.2014, 15:17:17 »
А как быть с модулем, не привязанном к компоненту, как применять файл?


*

Оффлайн AlekVolsk

Re: Мульти поле в админке
« Ответ #5 : 27.10.2014, 15:26:18 »
Закинуть в administrator/components/com_modules/models/fields/ ? так там папки fields в models даже нет...
Может попробовать в /libraries/cms/form/field/, где все поля лежат?

*

Оффлайн AlekVolsk

Re: Мульти поле в админке
« Ответ #6 : 27.10.2014, 15:28:32 »
Кстати, косяк: запятая в качестве разделителя - не лучший вариант, ибо запятая может быть частью имени файла, за то никак не может быть прямой слэш |

*

Оффлайн ELLE

Re: Мульти поле в админке
« Ответ #7 : 27.10.2014, 15:31:37 »
Закинуть в administrator/components/com_modules/models/fields/ ? так там папки fields в models даже нет...
у меня есть. но я не пробовала...лениво)

*

Оффлайн AlekVolsk

Re: Мульти поле в админке
« Ответ #8 : 27.10.2014, 16:49:06 »
Еще один косяк: строка 425, поправить это:
Код: (php) [Выделить]
$imageinput = $this->getMediaInput($value, 1, 0);на это:
Код: (php) [Выделить]
$imageinput = $this->getMediaInput($this->value, 1, 0);

*

Онлайн fbr

Re: Мульти поле в админке
« Ответ #9 : 27.10.2014, 17:40:25 »
А может есть в Joomla стандартные метод поля с неограниченным количеством изображений(т.е. грубо говоря под полем image кнопка добавить еще, появляется еще одно поле) или направьте, как это реализовать.

В принципе интересует не только image, но и текстовые поля
Есть такое поле type="Repeatable"
http://docs.joomla.org/Repeatable_form_field_type

*

Оффлайн lesh1j

Re: Мульти поле в админке
« Ответ #10 : 27.10.2014, 18:18:16 »
Закинуть в administrator/components/com_modules/models/fields/ ? так там папки fields в models даже нет...
Может попробовать в /libraries/cms/form/field/, где все поля лежат?
Ну да, можно в /libraries/cms/form/field, тогда по идее должно быть доступно во всех местах

Кстати, косяк: запятая в качестве разделителя - не лучший вариант, ибо запятая может быть частью имени файла, за то никак не может быть прямой слэш |

Это jquery each по умолчанию через запятую просто значения в переменную заносит, лень было разбираться, можно ли как-то заменить разделитель

Еще один косяк: строка 425, поправить это:
Код: (php) [Выделить]
$imageinput = $this->getMediaInput($value, 1, 0);на это:
Код: (php) [Выделить]
$imageinput = $this->getMediaInput($this->value, 1, 0);

Не, это строка для динамического добавления нового поля, там value должно быть пустым

Есть такое поле type="Repeatable"
http://docs.joomla.org/Repeatable_form_field_type

Спасибо, вроде то, что нужно было мне, вот только с полем "media" у меня не получается выбрать изображение, открывается не модальное окно при клике на "выбрать", а на новую страницу переходит и, соответственно выбрать изображение не получается

*

Оффлайн AlekVolsk

Re: Мульти поле в админке
« Ответ #11 : 27.10.2014, 18:29:27 »
Ну да, можно в /libraries/cms/form/field, тогда по идее должно быть доступно во всех местах
Уже проверил, в libraries положил - работает.

Не, это строка для динамического добавления нового поля, там value должно быть пустым
А без этого notice выскакивает, неприятно. Да и value по умолчанию пустое изначально, я у себя исправил - работает норм.

*

Оффлайн AlekVolsk

Re: Мульти поле в админке
« Ответ #12 : 27.10.2014, 18:31:17 »
Поправите косячки (разделитель, notice всякие там) и выкладывайте pull-request, пусть включают в поставку J )))

*

Оффлайн lesh1j

Re: Мульти поле в админке
« Ответ #13 : 27.10.2014, 18:39:05 »
А без этого notice выскакивает, неприятно. Да и value по умолчанию пустое изначально, я у себя исправил - работает норм.
Это оно по умолчанию пустое при создании нового item'а в компоненте, а при редактировании? У Вас тогда при редактировании существующего item'а новое поле будет добавляться c value равным значению всех полей, типа "images/1.jpg,images/2.jpg,images/3,jpg,images/4.jpg", тогда уж вот так
Код: (php) [Выделить]
$imageinput = $this->getMediaInput('', 1, 0);
« Последнее редактирование: 27.10.2014, 20:54:28 от lesh1j »

*

Оффлайн AlekVolsk

Re: Мульти поле в админке
« Ответ #14 : 27.10.2014, 21:32:16 »
Да, поправил у себя на ''

*

Оффлайн NeuroZ

  • ***
  • 131
  • [+]0 / [-]0
  • Разработка сайтов и J! расширений под ключ
    • Просмотр профиля
Re: Мульти поле в админке
« Ответ #15 : 22.02.2015, 17:19:58 »
Большое спасибо! очень полезная вещь! И отличный пример как создавать свое кастомное поле для расширений.
<h1 id="h2" class="h3" data-h4="h5"> или как заставить мир тебя ненавидеть

*

Оффлайн NeuroZ

  • ***
  • 131
  • [+]0 / [-]0
  • Разработка сайтов и J! расширений под ключ
    • Просмотр профиля
Re: Мульти поле в админке
« Ответ #16 : 22.02.2015, 20:51:22 »
Кстати нашел 2 недочета в скрипте:
1. Если вызывать этот тип поля 2 (и более) раза в одной форме, то в виду отсутствия уникальности классов - происходят глюки при динамическом добавлении/удалении элементов.
2. Если динамически добавить поля, выбрать картинку, а потом удалить - input type=hidden не очищается и в БД сохраняется даже удаленный вариант (связано с динамическим добавлением кнопки "удалить" - на нее нужно повесить обработчик по событию "on")
Цитировать
$(document).on("click", ".deleteDynamicButton" ,function(event) {
« Последнее редактирование: 22.02.2015, 20:56:34 от NeuroZ »
<h1 id="h2" class="h3" data-h4="h5"> или как заставить мир тебя ненавидеть

*

Оффлайн vickof

Re: Мульти поле в админке
« Ответ #17 : 12.03.2015, 20:40:14 »
Добрый день. Подскажите как переделать этот тип поля на обычные input и textarea, тоесть чтобы не картинка загружалась и 2 текстовых поля ввода, при нажатии добавить появлялось еще 2 поля и т д. А при сохранении данные складывались объектом в поле БД а не как сейчас через "," Заранее спасибо за ответ.


*

Оффлайн vickof

Re: Мульти поле в админке
« Ответ #19 : 12.03.2015, 21:22:33 »
Думаю, что Вам поможет MiniCCK
Это плагин к материалам, а я создаю свой компонент и мне такой тип поля нужен.

*

Оффлайн zomby6888

Re: Мульти поле в админке
« Ответ #20 : 12.03.2015, 21:32:19 »
В своем компоненте создайте кастомный тип поля, подключите его через addfieldpath параметр в xml-ке и делайте там что хотите с php/js-ом.
« Последнее редактирование: 12.03.2015, 21:36:30 от zomby6888 »
интернет-блог: http://websiteprog.ru

*

Оффлайн AlekVolsk

Re: Мульти поле в админке
« Ответ #21 : 12.03.2015, 21:56:31 »
А при сохранении данные складывались объектом в поле БД а не как сейчас через ","
Скорее всего, это будет многомерный массив, загнанный в json, а не объект, ибо объект в multipart-поле вы никак не сохраните

*

Оффлайн vickof

Re: Мульти поле в админке
« Ответ #22 : 13.03.2015, 13:37:30 »
Скорее всего, это будет многомерный массив, загнанный в json, а не объект, ибо объект в multipart-поле вы никак не сохраните
можно и так, главное чтобы я потом достал эти данные из базы
В своем компоненте создайте кастомный тип поля, подключите его через addfieldpath параметр в xml-ке и делайте там что хотите с php/js-ом.
это понятно и так, по этому же принципу и сделан multiimage который здесь обсуждается.
Есть такое поле type="Repeatable"
http://docs.joomla.org/Repeatable_form_field_type
Может как раз это то что мне нужно, но я не смог найти в инете как его прикрутить, и отобразить потом в представлении.