Hallo Typo3-Experten,
will auch mal ein solcher werden 😉
Jetzt hab ich ein Problem, bei dem ich trotz längerer Recherchen im Internet und in diversen Fachbüchern nicht weiterkomme.
Folgendes Szenario: Ich habe eine Bildergalerie mit mehreren Kategorien (Ordnern) mittels chgallery (Dank an Georg Ringer) eingerichtet. Funktioniert wunderbar.
Nun möchte ich aus jedem Ordner der Galerie (z.Zt. 3 Ordner) das neueste Bild auf der Startseite anzeigen und in die richtige Kategorie (sprich den richtigen Ordner) verlinken. Mittels der chgallery ist das wohl nicht möglich, ich habe zumindest keine Lösung gefunden.
Daher bin ich einen anderen Weg gegangen: ein php-Script gibt mit mittels des Pfades auf die entsprechende Kategorie das neueste Bild zurück. Das habe ich mittels TS dann als userfunction eingebaut. Die Daten werden von dem Script auch sauber ausgegeben, also funktioniert die Parameter- und die Ergebnisübergabe richtig.
Was ich aber nicht hinbekomme, ist, den Rückgabewert meiner Funktion als Eingabe für das IMAGE.file Object einzusetzen.
Irgendwo unterläuft mir wohl ein Denkfehler. Hier mal (eine gekürzte Fassung) meines php-Scripts:
<?php
class user_getNewestImage {
var $cObj;
function dirList( $directory, $filetypes=array() ) {
$fname = "";
$mtime = $mtime_tmp = 0;
$results = array();
$dh = opendir($directory);
while ($file = readdir($dh)) {
if ((!is_dir($directory."/".$file)) && in_array(substr($file, -4,4), $filetypes)) {
$results[] = $file;
$mtime_tmp = filemtime($directory."/".$file);
if($mtime < $mtime_tmp) {
$mtime = $mtime_tmp;
$fname = $file;
}
}
}
closedir($dh);
return $fname;
}
function main( $content="", $conf=array() ) {
$filetypes = array(".jpg", ".gif", ".png");
$relPath = $conf["dir"];
$absPath = $_SERVER["DOCUMENT_ROOT"].$relPath;
$content = $relPath."/".$this->dirList($absPath, $filetypes);
return "<span>".$content."</span>\n";
}
}
?>
Und hier das dazugehörige TypoScript Snippet:
includeLibs.getNewestImage = fileadmin/getNewestImage.php
temp.imageFile = USER
temp.imageFile {
userFunc = user_getNewestImage->main
dir = fileadmin/Galerien/Aktuelles
}
temp.content = COA
temp.content {
10 = HTML
10.value = <div id="content"><div class="t"></div>
20 < styles.content.get
21 = TEXT
21 < temp.imageFile
21.stdWrap = <div class="imagewrap">|</div>
25 = HTML
25.value = <div class="tx-chgallery-pi1">
30 = IMAGE
30 {
file.cObject < temp.imageFile
file.width = 120
file.height= 90
wrap = <div class="single"><div class="img"><div class="align"><a href="/bildergalerie/galerie//1.html#c37">|</a></div></div></div>
} ...
Das 21. Objekt gibt mir das Bild inklusive Pfad sauber aus, der stdWrap wird aber nicht ausgeführt.
Das 30. Objekt wird erst garnicht angezeigt. Da hab ich schon alles mögliche probiert, bin aber leider zu keiner Lösung gekommen.
Ich bin für jeden Tip dankbar, lieber wäre mir eine verständliche Lösung des Problems oder aber die Aussage, dass es so nicht geht und ich einen anderen Weg suchen muss.
Vielen Dank schon mal fürs lesen ...
harvey