Возникла необходимость, сделал, не грех и задокументировать.
Суть - при создании категории в всех трех каталогах для изображений (мини, средние и полные эскизы) создается подкаталог с именем - идентификатором 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->cid, 0755);
mkdir($mosConfig_absolute_path.'/'.$ad_pathimages.'/'.$row->cid, 0755);
mkdir($mosConfig_absolute_path.'/'.$ad_paththumbs.'/'.$row->cid, 0755);после в этом же файлес начале 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");Удачных экспериментов и не забываем про резервные копии файлов