Регистрация
Вход через соцсети
Восстановление пароля

Решение для поля "Множественная загрузка файлов"   Партнерский модуль

бесплатно
Скачать
promo
Разработчики нашей любимой системы сделали поле Множественная загрузка файлов, но на сегодняшний день возможности этого поля ограничены. Уверен, что в будущем функционал поля будет расширен и приобретёт свойственные для NetCat красоту и удобство, а пока этого нет, я предлагаю использовать следующее решение:

Если в качестве файлов загружаются картинки, то иногда нужена особая обработка картинок, нежели $f_Img->settings->resize(600, 600)->preview(150, 150)
Допустим наше поле называется Photo_Gallery и имеет номер 1511(при внедрении подставьте свои название и номер).
Тогда, например, в "Действие после изменения объекта" можно вставить код:
Код:
";
if($inside_admin) {
ob_end_clean();
header("Location: ".$goBackLink."&inside_admin=1");
foreach($files_name as $v){
$photo_path = $DOCUMENT_ROOT.'/netcat_files/multifile/1511/'.$v;
if(!is_file($photo_path)) continue;
nc_ImageTransform::imgResize($photo_path,$DOCUMENT_ROOT.'/netcat_files/multifile/1511/preview_'.$v,'155', '155', 1);
/*Здесь можно применять по аналогии и другие функции nc_ImageTransform или даже свои собственные алгоритмы*/
}
exit;
}
else {
echo NETCAT_MODERATION_MSG_OBJCHANGED;
echo "<br /><br />".$goBack;
}
echo "


Если возможностей обычного шаблона вывода $f_Photo_Gallery_tpl вам мало, то можно и здесь сдеать свой код. Например, в шаблон компонета "Объект в списке" вставляем:
Код:
";
if($f_Photo_Gallery->count()){
$Photo_Gallery = '';
foreach($multifiles[$f_RowID]['Photo_Gallery'] as $k => $v){
if($k) $Photo_Gallery.= '<a href="'.$v['Path'].'" target="_blank" rel="group'.$f_RowID.'" title="'.$v['Name'].'"><!-- --></a>';
else $Photo_Gallery.= '<a href="'.$v['Path'].'" target="_blank" rel="group'.$f_RowID.'" title="'.$v['Name'].'"><img border="0" src="'.$v['Preview'].'" width="155" height="155" /></a>';
}
$result .= "

Затем новоиспечённую переменную вставляем в нужное место шаблона, например ".($f_Photo_Gallery->count() ? $Photo_Gallery : '<img border="0" src="/images/noimg.jpg" width="155" height="155" />')."
В цикле переменная $v будет имть ключи:
[Field_ID] => 1511 - номер поля
[Message_ID] - дублирует $f_RowID
[Priority] - наверно, приоритет. Только как его нормально менять?
[Name] - название файла, если было задано $f_Photo_Gallery->settings->use_name() в шаблонах действий
[Size] - размер файла
[Path] - путь к файлу
[Preview] - путь к превьюшке
[ID] - поле ID из таблицы Multifield базы данных.

Надеюсь, что кому-нибудь помог улыбка
бесплатно

Комментарии 34

RMX 20 августа 2012, 12:49:58
Кто то уже пробовал?
Я сам и пробовал на версии 4.7. Всё работает.
Finar  Ph & Ph 11 сентября 2012, 18:29:53
Спасибо за решение, будем пробовать. Я так понимаю, с его помощью можно, например, наложить watermark на фотографии?
danil74  Шведов Данил Владимирович 11 сентября 2012, 18:58:17
Да, можно.
Finar  Ph & Ph 19 сентября 2012, 19:25:57
Попробовали - действительно можно, премногоблагодарны за решение!
danil74  Шведов Данил Владимирович 19 сентября 2012, 20:00:31
На здоровье:)
Алексей 04 октября 2012, 09:10:31
а можно две превьюшки создать?
Можно создать сколько угодно превьюшек, только тогда придётся одну назвать стандартно preview_XXX, а остальные как-то иначе. В этом случае при удалении картинки preview_XXX удалится стандартным механизмом нетката, а остальные сами не удалятся.
Эрнест  Toп10-Строй 24 октября 2012, 12:49:45
Добрый день, а не могли бы вы подсказать, каким образом туда вставить функцию с watermark'ом? Пробовал по аналогии, что-то не выходит(
Добрый день. Всё-таки плое "Множественная загрузка файлов" оказалось ограниченным и я придумал более изящное и функциональное решение. Поэтому у меня нет под раукой подходящего компонента, но, на сколько я понимаю, стоит применить [B]nc_ImageTransform::putWatermark_file[/B], указав пути до картинки и ватермарка, и всё должно получиться.
dyarikov  Студия Titanium 18 декабря 2012, 18:06:11
Спасибо, адаптировал для вывода списка файлов в новостях. Единственно чего не ясно, но это скорее к поддержке, почему нельзя править имена файлов.
Гость 09 марта 2013, 13:04:33
кто откроет страшную тайну как формируется циферка 1511
Гость 09 марта 2013, 13:15:50
Все раскрыл тайну
$multifiles[$f_RowID]['img'][0]['Field_ID']
img название поля
Только никому не говорите. Пусть тайна останентся тайной :cool:
Гость 23 мая 2013, 17:12:06
$multifiles[$f_RowID]['img'][0]['Field_ID'] вставлять вместо цифры 1511 ?
Гость 14 августа 2013, 11:03:50
из кода не ясно откуда берется переменная $files_name и не получается засим в 5.2
Петя 24 августа 2013, 13:06:51
Данил, а как вывести на экран созданные картинки?
Первая картинка будет иметь адрес $multifiles[$f_RowID]['Photo_Gallery'][0]['Path']
Вторая
$multifiles[$f_RowID]['Photo_Gallery'][0]['Path']
И так далее ))
Петя 25 августа 2013, 08:55:11
Даниил, если не сложно и есть время) Я не программист и потому охотно бы поболтал с Вами на эту тему) Я отправил Вам запрос в скайпе и написал письмо на почту) Ответьте пожалуйста) Спасибо!)
Написал вам на почту.
Гость 25 августа 2013, 08:55:58
Логин скайпа: qcb-shop, почта: raindewww@gmail.com
Finar  Ph & Ph 28 августа 2013, 16:14:48
Всем пользователям рецепта и netcat 472 полезно узнать о мегабаге в работе с этим полем: [URL='http://web.finar.ru/Base/NetCat-Multifield-MegaBag']Исчезновение файлов из поля Множественная Загрузка Файлов в Netcat 4[/URL]
[B]Finar[/B], я ж еще год назад эту проблему решал, обращался в НетКэт и они еще тогда выпустили официальный патч по поводу этого косяка для 4.72 версии. Я выкладывал его на форуме. Только сам НетКэт не стал его рассылать своим клиентам и афишировать это, а просто включили данный фикс уже в 5.х версию. Обидно, что Вы проделали такое исследование, изобретя фактически велосипед.
danil74  Шведов Данил Владимирович 16 сентября 2013, 13:12:10
Моему ииследованию тоже уже больше года. Тогда, по моим данным, это был не велосипед. Теперь время идёт и ситуация меняется. Но по-прежнему есть чего в этом движке переделывать и доделывать. Так что мы с вами без работы не останемся.
Finar  Ph & Ph 22 июня 2014, 12:54:27
А потому что нет внятной инфраструктуры для распространения информации на NetCat.ru Партнерский раздел - как фейсбук, там фиг чего найдешь в этих бесконечных лентах. Официальный сайт - красивенький (вроде как? я фиг его знает, мне все равно синенький он, розовый, с котом или без), только совершенно не предназначенный для работы и дела.

Где публичные списки косяков? Где ссылки на важные статьи? Где важные темы форума? Где попытки структурирования знаний сообщества?

Ничего этого нет, вместо этого один маркетинг, который только замусоривает мозги клиентам.
dyarikov  Студия Titanium 23 декабря 2013, 12:47:28
На 5.2 не работает, но на 5 вообще работало.
Гость 13 марта 2014, 16:06:21
На 5.2 не работает
Разработчики переделали массив $multifiles, так что теперь данные нужно брать из другого места. :)
Но если говорить о масштабировании, то в 5.2 появился встроенный функционал для этого (в настройках поля). Правда не для всех задач он пригоден.
Куцаков Александр 28 мая 2014, 12:12:05
Система 5.3 Функционал появился, но странный: в БД поле превьюшки не пустое, не смотря на отсутствие каких либо указаний её создавать. Второе: чаще всего такое поле нужно в магазине, где требуется два вида превьюшек в 99% случаев (для списка и полного вывода).
Не подскажите где искать файлы, ответственные за обработку этого поля?
По первой проблеме - странно, у меня нормально превьюшки создаются. Попробуйте обратиться в техподдержку. Может быть у вас библиотека GD не подключена к PHP или фотки слишком большие, не умещаются в память?
Касательно второй задачи (генерить дополнительные превьюшки) я бы на вашем месте не исправлял исходники неткат, это ведь доставит вам проблем с обновлением в дальнейшем. Лучше просто в действии после добавления объекта обработайте с помощью самодельной функции каждую "большую" фотку и сгенерите для нее дополнительную превьюшку, например, рядом с уже созданным файлом preview_*.jpg
e-wind 14 июля 2014, 13:35:04
Сделана функция для получения данных о файлах [URL='http://netcat.ru/developers/docs/api/nc_load_multifield.html']/docs/api/nc_load_multifield.html[/URL]

[URL='https://www.dropbox.com/s/jobywrt3s0tpk0m/nc_load_multifield.php']dropbox nc_load_multifield.php[/URL]
Отлично, большое спасибо за такое нововведение!
Гость 09 декабря 2014, 11:36:45
Как менять Priority каждого файла по отдельности ?
Думаю, только прямым запросом в БД.
оставить комментарий
Описание проекта