В общем, есть в репозитории такая галерея как Tiny Iamge gallery (tiny_gallery). Результат ее работы выглядит примерно так (фото из другого эктса)
Принцип работы по идее - загрузка в массив фоток и потом с помощью джаваскрипта по нажатию на превьюшках видим большую картинку.
Сразу скажу, что есть другой экстеншен (Simple Photo Gallery), который как бы "усовершенствует" работу Tiny Iamge gallery за счет того, что все картинки сразу не грузятся в массив, а подгружаются на страницу только после нажатия - но вот проблема в том, что при этой самой загрзки фоток обновляется вся страница - и каждый раз для пользователя (судя по себе) это слегка раздражает.
Вернемся к Tiny Iamge gallery. Основной файл class.tx_tinygallery_pi1.php содержит следующий код:
PHP код:
require_once(PATH_tslib."class.tslib_pibase.php");
class tx_tinygallery_pi1 extends tslib_pibase {
var $prefixId = "tx_tinygallery_pi1"; // Same as class name
var $scriptRelPath = "pi1/class.tx_tinygallery_pi1.php"; // Path to this script relative to the extension dir.
var $extKey = "tiny_gallery"; // The extension key.
function main($content,$conf) {
$this->conf = $conf;
#$this->pi_loadLL();
$images = explode(',', $this->cObj->data['image']);
$js = 'tx_tinygallery_'.$this->cObj->data['uid'] . ' = new Array(); '. "\n";
$bigimg = '';
$thumbs = '';
$i = 0;
foreach ($images as $img) {
if ($i == 0) {
$bigimg = $this->mkBigImg($img);
}
$js .= $this->mkJs($img, $i);
$thumbs .= $this->mkThumbs($img, $i);
$i++;
}
$content = '<script language="JavaScript" type="text/javascript">'.$js.'</script>';
$content .= $bigimg .'<br />'.$thumbs;
return $this->pi_wrapInBaseClass($content);
}
function mkBigImg($img) {
$imgconf = $this->conf['image.'];
$imgconf['params'] .= ' name="tx_tinygallery_big_'.$this->cObj->data['uid'].'" ';
$imgconf['file'] = "uploads/pics/".$img;
return $this->cObj->IMAGE($imgconf);
}
function mkThumbs($img, $i) {
$imgconf = $this->conf['thumb.'];
$imgconf['params'] .= ' onclick="document.images[\'tx_tinygallery_big_'.$this->cObj->data['uid'].'\'].src = tx_tinygallery_'.$this->cObj->data['uid'].'['.$i.'].src;" ';
$imgconf['file'] = "uploads/pics/".$img;
return $this->cObj->IMAGE($imgconf);
}
function mkJs($img, $i) {
$imgconf = $this->conf['image.'];
$imgconf['file'] = "uploads/pics/".$img;
$imgcode = $this->cObj->IMAGE($imgconf);
preg_match('/src="(.*?)"/', $imgcode, $match);
$imgurl = $match[1];
$js = 'tx_tinygallery_'.$this->cObj->data['uid']. '['.$i.'] = new Image(); '."\n";
$js .= 'tx_tinygallery_'.$this->cObj->data['uid']. '['.$i.'].src = \''.$imgurl.'\'; '."\n";
return $js;
}
}
if (defined("TYPO3_MODE") && $TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/tiny_gallery/pi1/class.tx_tinygallery_pi1.php"]) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/tiny_gallery/pi1/class.tx_tinygallery_pi1.php"]);
}
Есть тут строки типа, отвечающие за путь к файлу.
Код:
$imgconf['file'] = "uploads/pics/".$img;
То есть все картинки - превью и большие складываются в отдельную папку. Причем большие картинки ПО РАЗМЕРУ не изменяются, поэтому такое копирование смысла не имеет, как мне кажется))
Так вот я бы хотел сделать так, чтобы ссылки на большие картинки были где-то в fileadmin/pics/ - реально ли это реализовать? Пользователь загрузил фотки на фтп и они оттуда бы и обрабатывались...