Zum Inhalt springen

Hook => Aktuellster Datensatz mit Liste daneben und ACT/CUR - Simulation

Erstellt am 26. April 2007 · 7 Antworten · letzte Antwort am 2. Januar 2010

Tags: Frage

ralphle ·

Hallo liebe Liste,
ich brauche einen Denkanstoss wie ich etwas realiseren kann:
Ich habe eine Detailseite für die News, daneben habe ich eine "Latest" - Liste, die mir alle News in Listenform anzeigt, chronologisch geordnet.
Die einzelen News in der Liste kann man anklicken wobei in der Mitte dann die Detailansicht der News steht.

Mein Problem:
Wie kann ich in der Liste die aktuelle, angeklickte News hervorheben, also praktisch in der News-latest-Liste ein CUR simulieren?

Hat mir jemand einen Denkanstoß? Ich steh auf dem Schlauch und weiß nicht wie ich's anpacken kann?

Danke und Grüße Ralph

just2b ·

Hallo Ralph,

eine eigene Extension, den Hook extraItemMarkerProcessor nützen und dort die Id aus der Url auslesen und den passenden Datensatz mit einem div wrappen und dann per CSS hervorheben.

wenn man weiß was man tut in 20min gemacht

georg

ralphle ·

wenn man weiss was man tut... Genau darum gehts. :o

Erst mal danke für die schnelle Antwort.

Verstehe ich richtig: Ich nehme die ID der NEWS aus der Seiten-URL und vergleiche diese mit den IDs in der Liste. Dort wo diese gleich sind schreibe ich meine CSS-Klasse rein.

Das mit dem »Hook« ist mir neu. Dann werde ich mal die Core API befragen. Hast Du mir noch'n guten Link-Tip, ein Tutorial für den »Hook«?
Tausend Dank und Grüße, Ralph

ralphle ·

Hier meine Lösung:

  • Eigene Extension mit dem Kickstarter erstellen

  • Die erstellte Extension findet man in: typo3conf/ext/meineExtension/

Eine class.meineExtension_klasse in der vom Kickstarter erstellten PHP-Datei erstellen

  • Eine Funktion in der Klassendatei definieren

    Eine ext_localconf.php - Datei erstellen.

    Da rein schreibt man den HOOK-Aufruf:

$TYPO3_CONF_VARS['EXTCONF']['tt_news']['extraItemMarkerHook'][] = 'EXT:meineExtension/sv1/class.tx_meineExtension.php:meineExtension_klasse';

In die Klassendatei in die Klasse kommt die Funktion:

function extraItemMarkerProcessor(&$markerArray, &$row, &$lConf, &$pObj) { 
		$CURwrap = '<div class="news-item-box news-current">';
		$NOwrap = '<div class="news-item-box">';
		$ENDwrap = '</div>';
		
		//
			// ID der Aktuellen News in der Seiten URL
			$SINGLEnewsID_array = isset($_GET['tx_ttnews']);
// Wenn keine Variable in der Seiten URL steht wird die Variable mit -1 gefüllt
			if (!$SINGLEnewsID_array) {
				$SINGLEnewsID = -1;
			} else {
				foreach($_GET['tx_ttnews'] as $key => $value) {
					if ($key == 'tt_news') {
       			 		$SINGLEnewsID = $value;
					}
			}
			}
			// ID der Aktuellen News in der Liste
			$newsID = $row['uid'];
			// Ausgabe der Variablen - Wenn die URL Varuiable gleich  wie die Listen ID ist
			if ($newsID == $SINGLEnewsID) {
				$markerArray['###CURNEWSWRAP###'] = $CURwrap;
			} else if ($GLOBALS['TSFE']->register['newscounter'] == 1 && $SINGLEnewsID == -1)
//Auf der Einstiegsseite wird der erste aktuelle Beitrag mit der CURRENT - Tag ausgezeichnet
 {
				$markerArray['###CURNEWSWRAP###'] = $CURwrap;
			} else {
				$markerArray['###CURNEWSWRAP###'] = $NOwrap;
				
			}
// Steuervariable, so dass nur der erste Eintrag ausgezeichnet wird
			$GLOBALS['TSFE']->register['newscounter']++;
			
		// DIV wird wieder geschlossen	
		$markerArray['###CURNEWSWRAPEND###'] = $ENDwrap;
		return $markerArray;
	
		}
		
	}

In die Templatedatei des Newsaufrufs (LIST oder LATEST )die neuen Marker einfügen.

Die Extension installieren.

Fertig.(Debuggen und anpassen)

just2b ·

Hallo,

ja so ca hab ich mir das vorgestellt 😉

Ich pass mal den Titel an, schiebs in die Extension-Kategorie und verpass dem ganzen ein HowTo.

Vielen Dank fürs posten!
georg