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

beliyadm

  • Moderator
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Возникла необходимость, сделал, не грех и задокументировать.
Суть - при создании категории в всех трех каталогах для изображений (мини, средние и полные эскизы) создается подкаталог с именем - идентификатором ID категории, дальше все картинки при загрузке попадают в него. Удобно для хранения и ориентации при больших объемах галерей.
 
Создание подкаталога при создании категории и загрузка изображения именно в него
в admin.datsogallery.php в функции function saveCatg:
строку
global $database$my;
заменяем на
global $database$my$mosConfig_absolute_path;
перед mosRedirect добавляем:
require_once ($mosConfig_absolute_path '/administrator/components/com_datsogallery/config.datsogallery.php');
mkdir($mosConfig_absolute_path.'/'.$ad_pathoriginals.'/'.$row->cid0755);
mkdir($mosConfig_absolute_path.'/'.$ad_pathimages.'/'.$row->cid0755);
mkdir($mosConfig_absolute_path.'/'.$ad_paththumbs.'/'.$row->cid0755);


после в этом же файлес начале uploadhandler для каждой строки copy (и для dgImageCreate) добавляем перед именами файлов новый кусок пути
в результате должны быть такие вот пути:
/$catid/$org_screenshot_name вместо просто /$org_screenshot_name
Предупреждение - это относится к режиму одиночной загрузки, для batch режимов добавите по аналогии

Удаление изображения
admin.datsogallery.php, функция function removePicture
в ней в запрос добавляем выборку категории
$database->setQuery("select id, imgfilename, imgthumbname, imgoriginalname, catid from #__datsogallery where id = $cid[$i]");
После
$row $rows[0];
добавляем         
$catid $row->catid;
дальше в функцию удаления картинки добавляем нашу переменную с категорией, должно получится так:
if(removeFile($row->imgfilename$mosConfig_absolute_path $ad_pathimages$catid)) {
	
	
	
	
	
if(
removeFile($row->imgthumbname$mosConfig_absolute_path $ad_paththumbs$catid)) {
	
	
	
	
	
	
if(!
removeFile($row->imgoriginalname$mosConfig_absolute_path $ad_pathoriginals$catid)) {

В файле images.datsogallery.php находим внизу функцию function removeFile и заменяем на наш код:
function removeFile($srcFilename$srcFilePath$catid) {
	
$removeFilename $srcFilePath '/' $catid '/' $srcFilename;
	
if(
unlink($removeFilename)) {
	
	
return 
true;
	
} else {
	
	
return 
false;
	
}
}


Отображение картинок в админке
Файл admin.datsogallery.html.php
находим (примерно 80-90 строки)
$info getimagesize($mosConfig_absolute_path $ad_pathoriginals "/$row->imgoriginalname");
$size filesize($mosConfig_absolute_path $ad_pathoriginals "/$row->imgoriginalname");

и заменяем на
$info getimagesize($mosConfig_absolute_path $ad_pathoriginals "/$row->catid/$row->imgoriginalname");
$size filesize($mosConfig_absolute_path $ad_pathoriginals "/$row->catid/$row->imgoriginalname");

Еще дальше находим (строка примерно 320)
$info getimagesize($mosConfig_absolute_path $ad_pathoriginals "/$row->imgoriginalname");
$size filesize($mosConfig_absolute_path $ad_pathoriginals "/$row->imgoriginalname");

И меняем на
$info getimagesize($mosConfig_absolute_path $ad_pathoriginals "/$row->catid/$row->imgoriginalname");
$size filesize($mosConfig_absolute_path $ad_pathoriginals "/$row->catid/$row->imgoriginalname");

      
чуть ниже
<img src="<?php echo "$ad_paththumbs/$row->imgthumbname"; ?>" style="<?php echo $ad_imgstyle; ?>" title="<?php echo _DG_THUMB_PIC_PREVIEW; ?>" /><br /><br /><?php echo $orginfo?>
заменяем на
<img src="<?php echo "$ad_paththumbs/$row->catid/$row->imgthumbname"; ?>" style="<?php echo $ad_imgstyle; ?>" title="<?php echo _DG_THUMB_PIC_PREVIEW; ?>" /><br /><br /><?php echo $orginfo?>

Фронтенд
файл datsogallery.php
В начале файла

$originalpath 
$mosConfig_live_site $ad_pathoriginals "/";
$picturepath $mosConfig_live_site $ad_pathimages "/";
$originaldir $mosConfig_absolute_path $ad_pathoriginals "/";
$picturedir $mosConfig_absolute_path $ad_pathimages "/" $catid ."/";
$thumbnailpath $mosConfig_live_site $ad_paththumbs "/";

меняем на
$originalpath $mosConfig_live_site $ad_pathoriginals "/" $catid ."/";
$picturepath $mosConfig_live_site $ad_pathimages "/" $catid ."/";
$originaldir $mosConfig_absolute_path $ad_pathoriginals "/" $catid ."/";
$picturedir $mosConfig_absolute_path $ad_pathimages "/" $catid ."/";
$thumbnailpath $mosConfig_live_site $ad_paththumbs "/";
$thumbnailpath2 $mosConfig_live_site $ad_paththumbs "/" $catid ."/";


Строку
echo "onmouseout=\"return nd();\"\n><img src='$thumbnailpath$row1->imgthumbname' id=\"dt2\" alt=\"" $tle "\" /></a></div>\n";
на
echo "onmouseout=\"return nd();\"\n><img src='$thumbnailpath2$row1->imgthumbname' id=\"dt2\" alt=\"" $tle "\" /></a></div>\n";
строку
echo "<div align=\"center\"><a href=\n" sefRelToAbs("$dgurl&func=detail&catid=$catid&id=$row1->id") . "\">\n<img src='$thumbnailpath$row1->imgthumbname' id=\"dt2\" alt=\"" $tle "\" /><div>$tle</div></a></div>";
на
echo "<div align=\"center\"><a href=\n" sefRelToAbs("$dgurl&func=detail&catid=$catid&id=$row1->id") . "\">\n<img src='$thumbnailpath2$row1->imgthumbname' id=\"dt2\" alt=\"" $tle "\" /><div>$tle</div></a></div>";

находим
$query "select *, c.access from #__datsogallery as p  left join #__datsogallery_catg as c on c.cid=p.catid  where " . ($catid " ( p.catid in (" $catid ") )" '') . " and p.published = '1' and p.approved='1' and c.access<='" $my->gid "' || " . ($catid " ( c.parent in (" $catid ") )" '') . " and p.published = '1' and p.approved='1' and c.access<='" $my->gid "'  order by rand() limit 1";
и заменяем на
$query "select *, c.access, c.cid as cid from #__datsogallery as p  left join #__datsogallery_catg as c on c.cid=p.catid  where " . ($catid " ( p.catid in (" $catid ") )" '') . " and p.published = '1' and p.approved='1' and c.access<='" $my->gid "' || " . ($catid " ( c.parent in (" $catid ") )" '') . " and p.published = '1' and p.approved='1' and c.access<='" $my->gid "'  order by rand() limit 1";

Ниже идет вывод превьюшем
$output .= '<img src="' $thumbnailpath "/" $row2->imgthumbname '" style="' $ad_imgstyle '" title="' _DG_OPEN_CAT '" alt="" /></a></td>';
меняем на
$output .= '<img src="' $thumbnailpath $row2->cid "/" $row2->imgthumbname '" style="' $ad_imgstyle '" title="' _DG_OPEN_CAT '" alt="" /></a></td>';

Файл sub_viewdetails.php
находим строки
$imgsize filesize("$mosConfig_absolute_path$ad_pathoriginals/$imgoriginalname");
...
$size_pic = @getimagesize("$mosConfig_absolute_path$ad_pathoriginals/$imgoriginalname");

и меняем на
$imgsize filesize("$mosConfig_absolute_path$ad_pathoriginals/$catid/$imgoriginalname");
....
$size_pic = @getimagesize("$mosConfig_absolute_path$ad_pathoriginals/$catid/$imgoriginalname");


Удачных экспериментов и не забываем про резервные копии файлов
« Последнее редактирование: 11.08.2008, 21:48:03 от beliyadm »
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

PaLyCH

  • Давно я тут
  • 956
  • 146 / 19
  • Менеджер проектов
Петя,не закончил. Забыл про sub_viewspecial.php
*

beliyadm

  • Moderator
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Петя,не закончил. Забыл про sub_viewspecial.php
кому нужно будет - найдут сами, не найдут - тогда уже пусть спрашивают :)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

friend111

  • Захожу иногда
  • 63
  • 5 / 0
beliyadm полезное дополнение вы сделали для галереи, удобно будет искать нужные фото да и порядок наведется. Не могли бы вы здесь выложить исправленные файлы для 1.6, а то я пробовал что то не получилось, :dry: как говорится пока не специалист еще.
*

PaLyCH

  • Давно я тут
  • 956
  • 146 / 19
  • Менеджер проектов
Рекомендую True Gallery, в ней уже реализовано разделение по папкам
*

friend111

  • Захожу иногда
  • 63
  • 5 / 0
Просто Датсо  уже стоит, а True Gallery еще только на выходе. В дальнейшем обратим на нее внимание конечно, тем более совместный труд форумчан и будет нужна поддержка отечественному производителю. ::)
*

beliyadm

  • Moderator
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Не могли бы вы здесь выложить исправленные файлы для 1.6
приношу свои извинения, но готовый файлов для 1.6 у меня нет, ибо данный хак писался в предверии выхода TrueGallery и на нем стоит много других хаков (не все рабочие), писать сейчас заново для 1.6 к сожалению не смогу.
Просто Датсо  уже стоит, а True Gallery еще только на выходе.
тогда рекомендую дождаться стабильной версии True Gallery, бо до неё осталось совсем немного
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Raz0r

  • Захожу иногда
  • 260
  • 6 / 6
читал что уйдет времени не менее 3-х недель, когда можно приблизительно ждать релиза? Понятное дело что НЕ МЕНЕЕ означает, но хотелось бы потестить уже, судя по описанию - вещь стоящая
*

scaners

  • Захожу иногда
  • 131
  • 15 / 0
А те фотографии, которые уже есть, можно как то раскидать по папкам для категорий? Может есть какой запрос? А то в галерее уже больше 33000 изображений и работать с ними становится все труднее.
*

PaLyCH

  • Давно я тут
  • 956
  • 146 / 19
  • Менеджер проектов
Будет мигратор, который сам все перетащит по нужным папкам.
*

scaners

  • Захожу иногда
  • 131
  • 15 / 0
Будет мигратор, который сам все перетащит по нужным папкам.
Я так понимаю, вы подразумевали True Gallery?
*

PaLyCH

  • Давно я тут
  • 956
  • 146 / 19
  • Менеджер проектов
*

beliyadm

  • Moderator
  • 9758
  • 1664 / 66
  • Севастополь, Россия
А те фотографии, которые уже есть, можно как то раскидать по папкам для категорий? Может есть какой запрос? А то в галерее уже больше 33000 изображений и работать с ними становится все труднее.
можно, пример запроса можешь взять из конвертера - http://joomlaforum.ru/index.php/topic,43225.0.html
Но - 33000 изображений скрипт у тебя в данный момент физически не обработает.
Потому все что могу порекомендовать - подождать следующей версии конвертера, где этот момент будет учтен и по аналогии переписать для datso
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

scaners

  • Захожу иногда
  • 131
  • 15 / 0
Проблема только в том, что у меня в материалах идет привязка изображений к боту Датсо. А материалов более 14000. Если я мигрирую в True, то что делать с данным траблом? Перебивать все ручками ох как не хочется!
*

PaLyCH

  • Давно я тут
  • 956
  • 146 / 19
  • Менеджер проектов
Ну тогда оставвайся как есть. В твоем случае решения нет
*

beliyadm

  • Moderator
  • 9758
  • 1664 / 66
  • Севастополь, Россия
опять же решение есть - написать SQL запрос c функцией REPLACE, зацепив при этом еще и таблицу галереи и заменить пути в таблице #__content - если картинки вставлены напрямую ссылками.
В случае с ботом проще - поправить сам мамбот, пример аналогичного для TG будет
Но - эксперименты проводить только на локальном хосте, знания SQL и БД вообще обязательны, ибо объем большой, задача не такая уж простая.
Теоретически - все возможно сделать, но потребует некоторых трудозатрат, потому изначально задумался бы - смогу ли и нужно ли мне это :)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Полное изображение из категории с JS эффектом (1.8.1)

Автор beliyadm

Ответов: 20
Просмотров: 12339
Последний ответ 25.06.2015, 14:22:52
от beliyadm
категории - эффект аккордеон

Автор kira

Ответов: 2
Просмотров: 3612
Последний ответ 29.05.2012, 18:34:27
от act1ve
Описание категории при просмотре мини эскизов для 1.8.4

Автор Webprohozhiy

Ответов: 1
Просмотров: 2915
Последний ответ 01.10.2011, 20:27:58
от hlopusha16
Как присвоить категории индивидуальную, а не генерированную, картинку в DatsoGallery 1.6.2.

Автор pclux

Ответов: 1
Просмотров: 3486
Последний ответ 24.02.2011, 23:04:01
от Animatik
От мини-эскизов сразу в лайтбокс. Как сделать? DatsoPic

Автор kans

Ответов: 15
Просмотров: 15630
Последний ответ 27.02.2010, 22:19:48
от Peroon