Zum Inhalt springen

Bilder von tt_news mit Title-Tag versehen

Erstellt am 23. Oktober 2007 · 3 Antworten · letzte Antwort am 23. Oktober 2007

Tags: Bilder, tt_news, Frage

SirRuddy ·

Hallo liebe Typo3-Gemeinde!

Ich kann unter den Relations von tt_news ja zum Bild einen Title- und ein Alt-Tag abspeichern. Nun möchte ich aber, dass standardmäßiges der Titel der News als Bildtitel bzw. Alt-Tag erscheint. Das muss sich doch relativ einfach lösen lassen. - Nur wie? Hat jemand mal einen Hinweis für mich?

Gruß
SirRuddy

jan.​wege ·

Hallo,

Wenn immer der Titel der News als Bildtitel bzw. Alt-Tag angezeigt werden soll, dann ersetze doch einfach die Bildtitel/Alt-Tag Marker im Template durch den Titel Marker.

Grüße!

SirRuddy ·

Im Prinzip 'ne gute Idee, aber im Template habe ich nur den Marker ###NEWS_IMAGE###, welcher den Title-Tag bereits beinhaltet. Das muss doch ehr so in Richtung...

plugin.tt_news.displayList.imageTitleTag < newsTitle

...gehen denke ich. imageTitleTag und newsTitle sind natürlich quatsch, aber ich hoffe das Zeigt was ich machen will 😉

Gruß
SirRuddy

jan.​wege ·

Hallo,

ah ok mein Fehler ;-)

Es gibt eine Art Hook in tt_news für den Fall. Und zwar in der Funktion getImageMarkers

if ($this->conf['imageMarkerFunc']) {
  $markerArray = $this->userProcess('imageMarkerFunc', array($markerArray, $lConf));
} else {
  $imageNum = isset($lConf['imageCount']) ? $lConf['imageCount']:1;
  $imageNum = t3lib_div::intInRange($imageNum, 0, 100);
  $theImgCode = '';
...
...

Du kannst also im TS deine eigene Funktion angeben, welche die Image-Marker füllt.

Beispiel dazu findest Du unter ext/tt_news/res/example_imageMarkerFunc.php

Die Funktion könnte in etwa so aussehen:

function user_imageMarkerFunc($paramArray,$conf){

	$markerArray = $paramArray[0];
	$lConf = $paramArray[1];
  $pObj = &$conf['parentObj']; // make a reference to the parent-object
	$row = $pObj->local_cObj->data;
	
	$imageNum = isset($lConf['imageCount']) ? $lConf['imageCount']:1;
	$imageNum = t3lib_div::intInRange($imageNum, 0, 100);
	$theImgCode = '';
	$imgs = t3lib_div::trimExplode(',', $row['image'], 1);
        ////////////////////////////////////////////////////////////////
        // hier werden die Arrays gesetzt. Da Du ja nur einen Titel hast
        // der ja für jedes Bild (falls vorhanden) benutzt werden soll
        // können die Arrays ja wegfallen und wir setzen den Titel 
        // direkt weiter unten
        ////////////////////////////////////////////////////////////////
	//$imgsCaptions = explode(chr(10), $row['imagecaption']);
	//$imgsAltTexts = explode(chr(10), $row['imagealttext']);
	//$imgsTitleTexts = explode(chr(10), $row['imagetitletext']);
	reset($imgs);

	$cc = 0;
	// remove first img from the image array in single view if the TSvar firstImageIsPreview is set
	if (count($imgs) > 1 && $pObj->config['firstImageIsPreview'] && $textRenderObj == 'displaySingle') {
		array_shift($imgs);
		//array_shift($imgsCaptions);
		//array_shift($imgsAltTexts);
		//array_shift($imgsTitleTexts);
	}
	// get img array parts for single view pages
	if ($pObj->piVars[$pObj->config['singleViewPointerName']]) {
		$spage = $pObj->piVars[$pObj->config['singleViewPointerName']];
		$astart = $imageNum*$spage;
		$imgs = array_slice($imgs,$astart,$imageNum);
//		$imgsCaptions = array_slice($imgsCaptions,$astart,$imageNum);
//		$imgsAltTexts = array_slice($imgsAltTexts,$astart,$imageNum);
//		$imgsTitleTexts = array_slice($imgsTitleTexts,$astart,$imageNum);
	}

	while (list(, $val) = each($imgs)) {
		if ($cc == $imageNum) break;
		if ($val) {

			$lConf['image.']['altText'] = $row['title']; // evtl. noch Wrap oder Kodierung hinzufügen
			$lConf['image.']['titleText'] = $row['title']; // evtl noch Wrap oder Kodierung hinzufügen
			$lConf['image.']['file'] = 'uploads/pics/' . $val;
		}
		$theImgCode .= $pObj->local_cObj->IMAGE($lConf['image.']) . $pObj->local_cObj->stdWrap($row['title'], $lConf['caption_stdWrap.']); // evtl Wrap ändern 
		$cc++;
	}
	$markerArray['###NEWS_IMAGE###'] = '';
	if ($cc) {
		$markerArray['###NEWS_IMAGE###'] = $pObj->local_cObj->wrap(trim($theImgCode), $lConf['imageWrapIfAny']);
	} else {
		$markerArray['###NEWS_IMAGE###'] = $pObj->local_cObj->stdWrap($markerArray['###NEWS_IMAGE###'],$lConf['image.']['noImage_stdWrap.']);
	}
		

	return $markerArray;

}

Ich hab die jetzt nur mal eben q&d umgeschrieben. Probier es doch einfach mal aus. Aber als Beispiel sollt es ausreichen.

Ansonsten müsstest Du selber mal schauen und Dich an die Beispiele in der Datei von tt_news halten. Oder vieleicht findest Du zum Stichwort "imageMarkerFunc" weitere Infos.

Grüße!