Изучаю Typo3, делаю тестовый сайт. Стоит задача: на всех страницах выдать в строку (или однострочную таблицу) 5 маленьких картинок в случайном порядке из десятка имеющихся, при нажатии стандартно показать большую картинку в окне.
После долгих разбирательств сумел заставить Typo3 (4.2.0) выдавать все картинки, указанные как контент типа image на отдельной (вне меню) странице. Но - как заставить выдать не всё, а только 5 из всех 10-15 имеющихся в случайном порядке?
Полный затык! Уже 3 дня топчусь на месте. Помогите, плиз!
Хотел туда присобачить свой скрипт на PHP (взятый из другого, не-typo3 проекта), чтобы уже готовую таблицу с линками расщепить на элементы и выдать 5 случайных из них обратно... так не смог понять куда его воткнуть чтобы получить уже построенную таблицу в $this->getCurrentVal() из примера. Закомментированный вариант не работает.
Может я вообще чешу правое ухо левой рукой, и где-то есть готовое решение или похожий пример? Как вообще влезть внутрь tt_content.image.20, и надо ли туда влезать? Может PHP_SCRIPT_EXT поможет?
Вот часть Setup:
PHP код:
workOnSubpart = DOCUMENT
marks {
IMAGES = COA_INT
IMAGES {
// 10=PHP_SCRIPT_INT
// 10 {
// files = fileadmin/script.inc
10 = CONTENT
10 {
table = tt_content
select {
// id of page with images = 17
pidInList = 17
}
renderObj < tt_content.image.20
renderObj.maxW = 900
renderObj.maxWInText = 900
renderObj.spaceBelowAbove = 0
renderObj.colSpace = 0
renderObj.rowSpace = 0
renderObj.borderThick = 0
renderObj.textMargin = 0
renderObj.renderMethod = table
// renderObj.noStyle = 1
}
// end of CONTENT
// }
}
// end of IMAGES
// ...
}
// end of marks
Скрипт берущий 3 случайные картинки (не доработан; но даже не получал getCurrentVal() !):
PHP код:
<?
$mycontent = $this->getCurrentVal();
debug($mycontent);
echo $mycontent;
////$list=explode('td',$mycontent);
$list = array("x","y","z","a","b");
$maxpic = 3;
$listcount = count($list);
$i = 0;
$pic = array();
// srand((double)microtime()*1000000);
while ($i < $maxpic) {
$random = rand(1,$listcount);
echo $random;
// test all prev:
$j = 0;
while ($j < $i) {
if ($random == $pic[$j]) {
// found the same - change and repeat!
$random = rand(1,$listcount);
echo $random;
$j = 0;
}
else {
$j++;
}
}
$pic[$i] = $random;
// echo '<TD><img src="images/'.$list[$random-1].'.jpg"></td>';
$content .= $list[$i];
$i++;
}
$content = '<!--'.$content.'-->';
?>
P.S. Теоретически можно ещё написать свой скрипт с нуля, то есть самому обратиться в базу на SQL, получить список имён картинок, взять 5 случайных и самому сформировать вокруг них требуемые линки с JavaScript и таблицу. Но ведь это уже в Typo3 уже где-то есть; мне достаточно добавить мой скрипт между получением массива картинок и их обёртыванием; можно ли это сделать и как именно? Что именно, какие структуры должен сформировать отдельный скрипт, чтобы указанный мной renderObj обработал их так же, как исходный список картинок?