Форум русской поддержки Joomla!® CMS
06.12.2016, 04:46:13 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

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

 (Прочитано 1120 раз)
0 Пользователей и 1 Гость смотрят эту тему.
lesh1j
Давно я тут
****

Репутация: +30/-0
Offline Offline

Пол: Мужской
Сообщений: 231


« : 25.09.2014, 17:11:52 »

Здравствуйте, такой вопрос, пишу компонент
Чтобы добавить поле image в админке, в XML пишу
Код
<field name="image"
type="media"
hide_none="1"
label=""
description="" />

 

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

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

Репутация: +709/-0
Offline Offline

Пол: Мужской
Сообщений: 7522


Разраблю понемногу


« Ответ #1 : 25.09.2014, 18:38:03 »

Без JS тут никак...
Записан
lesh1j
Давно я тут
****

Репутация: +30/-0
Offline Offline

Пол: Мужской
Сообщений: 231


« Ответ #2 : 22.10.2014, 02:39:51 »

Всё-таки я, наконец, собрался с силами и сделал этот, как мне кажется, весьма нужный тип поля(на скрине обведен), архив прикрепляю, проверял только Joomla 3.3, может пригодится кому, мне так постоянно нужен, когда делаю небольшие каталоги, раньше делал просто 5-10 полей типа "media", но это - шило=)
кто не знает - скидываем файлик из прикрепленного архива в administrator\components\com_вашКомпонент\models\fields\multiimage.php и всё, с этим полем можно работать так же как со стандартными, type="multiimage"
в БД заносятся value всех полей через запятую, соответственно если нужно вывести на фронт-энде, то можно это сделать примерно так:
Код
$images= explode(",", $this->item->images);
 
foreach ( $images as $image) {
echo '<img src="/' . $image . '" /><br>';
}
 

* multiimage.zip (4.1 Кб - загружено 32 раз.)
« Последнее редактирование: 22.10.2014, 14:44:15 от lesh1j » Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6456



« Ответ #3 : 27.10.2014, 14:17:17 »

А как быть с модулем, не привязанном к компоненту, как применять файл?
Записан
ELLE
Support Team
*****

Репутация: +862/-0
Offline Offline

Пол: Женский
Сообщений: 4723



« Ответ #4 : 27.10.2014, 14:19:09 »

com_modules может?
Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6456



« Ответ #5 : 27.10.2014, 14:26:18 »

Закинуть в administrator/components/com_modules/models/fields/ ? так там папки fields в models даже нет...
Может попробовать в /libraries/cms/form/field/, где все поля лежат?
Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6456



« Ответ #6 : 27.10.2014, 14:28:32 »

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

Репутация: +862/-0
Offline Offline

Пол: Женский
Сообщений: 4723



« Ответ #7 : 27.10.2014, 14:31:37 »

Закинуть в administrator/components/com_modules/models/fields/ ? так там папки fields в models даже нет...
у меня есть. но я не пробовала...лениво)
Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6456



« Ответ #8 : 27.10.2014, 15:49:06 »

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

Записан
fbr
Живу я здесь
******

Репутация: +136/-6
Offline Offline

Сообщений: 1250


« Ответ #9 : 27.10.2014, 16:40:25 »

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

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

Репутация: +30/-0
Offline Offline

Пол: Мужской
Сообщений: 231


« Ответ #10 : 27.10.2014, 17:18:16 »

Закинуть в administrator/components/com_modules/models/fields/ ? так там папки fields в models даже нет...
Может попробовать в /libraries/cms/form/field/, где все поля лежат?
Ну да, можно в /libraries/cms/form/field, тогда по идее должно быть доступно во всех местах

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

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

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

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

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

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

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6456



« Ответ #11 : 27.10.2014, 17:29:27 »

Ну да, можно в /libraries/cms/form/field, тогда по идее должно быть доступно во всех местах
Уже проверил, в libraries положил - работает.

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

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6456



« Ответ #12 : 27.10.2014, 17:31:17 »

Поправите косячки (разделитель, notice всякие там) и выкладывайте pull-request, пусть включают в поставку J )))
Записан
lesh1j
Давно я тут
****

Репутация: +30/-0
Offline Offline

Пол: Мужской
Сообщений: 231


« Ответ #13 : 27.10.2014, 17:39:05 »

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

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6456



« Ответ #14 : 27.10.2014, 20:32:16 »

Да, поправил у себя на ''
Записан
NeuroZ
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 129


Разработка сайтов и J! расширений под ключ


« Ответ #15 : 22.02.2015, 16:19:58 »

Большое спасибо! очень полезная вещь! И отличный пример как создавать свое кастомное поле для расширений.
Записан
NeuroZ
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 129


Разработка сайтов и J! расширений под ключ


« Ответ #16 : 22.02.2015, 19:51:22 »

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

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 52



« Ответ #17 : 12.03.2015, 19:40:14 »

Добрый день. Подскажите как переделать этот тип поля на обычные input и textarea, тоесть чтобы не картинка загружалась и 2 текстовых поля ввода, при нажатии добавить появлялось еще 2 поля и т д. А при сохранении данные складывались объектом в поле БД а не как сейчас через "," Заранее спасибо за ответ.
Записан
b2z
Support Team
*****

Репутация: +709/-0
Offline Offline

Пол: Мужской
Сообщений: 7522


Разраблю понемногу


« Ответ #18 : 12.03.2015, 19:50:46 »

Думаю, что Вам поможет MiniCCK
Записан
vickof
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 52



« Ответ #19 : 12.03.2015, 20:22:33 »

Думаю, что Вам поможет MiniCCK
Это плагин к материалам, а я создаю свой компонент и мне такой тип поля нужен.
Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Offline Offline

Пол: Мужской
Сообщений: 1538


« Ответ #20 : 12.03.2015, 20:32:19 »

В своем компоненте создайте кастомный тип поля, подключите его через addfieldpath параметр в xml-ке и делайте там что хотите с php/js-ом.
« Последнее редактирование: 12.03.2015, 20:36:30 от zomby6888 » Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6456



« Ответ #21 : 12.03.2015, 20:56:31 »

А при сохранении данные складывались объектом в поле БД а не как сейчас через ","
Скорее всего, это будет многомерный массив, загнанный в json, а не объект, ибо объект в multipart-поле вы никак не сохраните
Записан
vickof
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 52



« Ответ #22 : 13.03.2015, 12:37:30 »

Скорее всего, это будет многомерный массив, загнанный в json, а не объект, ибо объект в multipart-поле вы никак не сохраните
можно и так, главное чтобы я потом достал эти данные из базы
В своем компоненте создайте кастомный тип поля, подключите его через addfieldpath параметр в xml-ке и делайте там что хотите с php/js-ом.
это понятно и так, по этому же принципу и сделан multiimage который здесь обсуждается.
Есть такое поле type="Repeatable"
http://docs.joomla.org/Repeatable_form_field_type
Может как раз это то что мне нужно, но я не смог найти в инете как его прикрутить, и отобразить потом в представлении.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet