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

lesh1j

  • Захожу иногда
  • 257
  • 35 / 0
Мульти поле в админке
« : 25.09.2014, 17:11:52 »
Здравствуйте, такой вопрос, пишу компонент
Чтобы добавить поле image в админке, в XML пишу
Код: xml
<field name="image"
type="media"
hide_none="1"
label=""
description="" />

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

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

b2z

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

lesh1j

  • Захожу иногда
  • 257
  • 35 / 0
Re: Мульти поле в админке
« Ответ #2 : 22.10.2014, 02: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, 14:44:15 от lesh1j »
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Мульти поле в админке
« Ответ #3 : 27.10.2014, 13:17:17 »
А как быть с модулем, не привязанном к компоненту, как применять файл?
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
*

AlekVolsk

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

AlekVolsk

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

ELLE

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

AlekVolsk

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

*

fbr

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

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

lesh1j

  • Захожу иногда
  • 257
  • 35 / 0
Re: Мульти поле в админке
« Ответ #10 : 27.10.2014, 16: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

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

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

AlekVolsk

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

lesh1j

  • Захожу иногда
  • 257
  • 35 / 0
Re: Мульти поле в админке
« Ответ #13 : 27.10.2014, 16: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, 18:54:28 от lesh1j »
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Мульти поле в админке
« Ответ #14 : 27.10.2014, 19:32:16 »
Да, поправил у себя на ''
*

NeuroZ

  • Захожу иногда
  • 121
  • 0 / 0
  • Разработка сайтов и расширений под ключ
Re: Мульти поле в админке
« Ответ #15 : 22.02.2015, 15:19:58 »
Большое спасибо! очень полезная вещь! И отличный пример как создавать свое кастомное поле для расширений.
*

NeuroZ

  • Захожу иногда
  • 121
  • 0 / 0
  • Разработка сайтов и расширений под ключ
Re: Мульти поле в админке
« Ответ #16 : 22.02.2015, 18:51:22 »
Кстати нашел 2 недочета в скрипте:
1. Если вызывать этот тип поля 2 (и более) раза в одной форме, то в виду отсутствия уникальности классов - происходят глюки при динамическом добавлении/удалении элементов.
2. Если динамически добавить поля, выбрать картинку, а потом удалить - input type=hidden не очищается и в БД сохраняется даже удаленный вариант (связано с динамическим добавлением кнопки "удалить" - на нее нужно повесить обработчик по событию "on")
Цитировать
$(document).on("click", ".deleteDynamicButton" ,function(event) {
« Последнее редактирование: 22.02.2015, 18:56:34 от NeuroZ »
*

vickof

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

b2z

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

vickof

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

zomby6888

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

AlekVolsk

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

vickof

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