Zum Inhalt springen

wenn colPos = 2 nicht leer, dann

Erstellt am 29. März 2006 · 5 Antworten · letzte Antwort am 17. August 2009

Tags: Frage

axo ·

ein herzliches hallo ans forum,
und bitte nicht schlagen, falls die antwort zur frage zu einfach ist.
ich suche bereits seit geraumer zeit nach folgender lösung für eine kundin:

sie hat ein paar seiten, die ziemlich lange texte (5-10 scroll-seiten) enthält. jetzt will sie die möglichkeit haben, die ersten beiden seiten, sozusagen als 'teaser', in die 'normal'-spalte einpflegen, und unten dran einen 'weiter' - link haben, der bei interesse weitere inhalte aus der 'rechts'-spalte anzeigt, falls vorhanden.

mit php würde ich das trivialerweise so lösen:

$content = $contentElementsFromColpos0; // immer colPos=0 anzeigen.
if(!empty( $contentElementsFromColpos2)  ) {
  if ( isset($_REQUEST['weiter']) ) {
    $content .= $contentElementsFromColpos2; // zusätzlichen inhalt anzeigen.
  } else {
     $content .= " weiter ... "; // link zu weiter.
  }
} else {
   // do nothing
}

... aber das geht doch sicher auch mit typoScript alleine, oder?

grüße
axo

Michaelh74 ·

Hi axo,

so auf die Schnelle, fällt mir folgende Lösung ein:

Du legst für die besagten Seiten jeweils eine Unterseite an. Läßt auf der Hauptseite immer die Einträge der Spalte Normal anzeigen. Für die Unterseite erstellst Du ein extension Template in dem dann die Ausgabe der Spalte Normal + der Spalte Rechts definiert ist. Der weiter Link würde dann in diesem Fall immer von der Hauptseite auf die Unterseite verweisen.

So weit ich mich erinnern kann, gibt es auch ne Extension, die Seiteninhale automatisch auf mehrere Seiten verteilt. Das wär auch ne Lösung.

Viel Glück!
Michael

axo ·

hmmm... derzeit löst es meine kundin eh so ähnlich - sie erzeugt einfach eine neue seite - eine ebene drunter - versteckt diese im menü (not in menu) und verweist dann darauf. die lösung mit den neuen seiten gefällt mir irgendwie nicht. vor allem weil es relativ umständlich ist, immer eine neue seite anzulegen, und außerdem weil sich die anzahl an seiten vervielfacht. irgendwie muss es doch mit TypoScript gehen... tt_news macht das doch auch irgendwie, allerdings machen die das, soweit ich sehe, mit ".crop", und das kann ich wohl nicht bringen 😉 ...

da ich letztens gesehen habe, dass die ausgabe von eigenen php-skripten trotzdem im cache landet, tendiere ich inzwischen zur PHP_SCRIPT lösung... dazu müsste ich nur noch herausfinden, wie man eine GET-variable registriert. naja, heute bin ich zu müde dazu... mal gucken, was der morgige tag bringt 🙂

axo ·

hi,

das ganze ist doch ziemlich einfach, wenn man die lösung dann sieht 😉

config.linkVars = weiter
config.weiter = 0
# ... ein paar hundert zeilen weiter dann...
[global]
  seite.10.marks.MAIN_CONTENT.select.where = colPos = 0
[globalVar = GP:weiter= 1]
  seite.10.marks.MAIN_CONTENT.select.where = colPos IN (0,2) 
[end]

... jetzt fehlt nur noch das mini-php-skript, das nachguckt, ob sich unter colPos = 1 inhalt versteckt und dementsprechend einen weiter-link generiert oder nicht.
mal gucken, ob ich's ohne zusätzliche db-queries hinbekomme 😉

axo ·

so, und der vollständigkeit halber der komplette code, für die, die's interessiert:

<?php
/**
 * @desc 
 * checks whether the user has left some additional content
 * in the 'left' or 'right' content column, and if so, 
 * generates a link to it. 
 * @author axo < axo (at) axolander (dot) de>
 * @since 02.04.2006
 * @access public
 *
*/
$queryParams = array(
  'selectFields' => 'COUNT(*) as num',
  'where' => $conf['where'],  
);
		
$content = "<pre>" . print_r($this, true) . "</pre>";
$content = '';
$numberOfRows = 10;
list($numberOfRows) = $GLOBALS['TYPO3_DB'] -> sql_fetch_row($this -> exec_getQuery('tt_content',$queryParams));

if ($numberOfRows > 0) {
	if (t3lib_div::_GP($conf['GPVarName'])) {
 		$param = array( );
 		$text = $conf['back'];
 	} else {
 		$param = array($conf['GPVarName'] => 1);
 		$text = $conf['continue'];
 	} 		
 	$content = '<p style="text-align:right;">'.$this ->  getTypoLink($text, $GLOBALS['TSFE'] -> id, $param) . '</p>';
} else {
	$content = '';
}
?>
## Config
axoConfig.normal = colPos = 0
axoConfig.weiter = colPos IN (0,1,2)
axoConfig.weiterExists = colPos IN (1,2)

## SETUP 
config.linkVars = weiter
config.weiter = 0
 ...
seite = PAGE
 ...
seite.10.marks {
   ... 
  CONTENT = CONTENT
  CONTENT {
    table = tt_content
    select.orderBy = colPos ASC, sorting
    select.where = {$axoConfig.normal}
  }
   ...
  WEITER = PHP_SCRIPT 
  WEITER {
    file = fileadmin/test_weiter.php
    where = {$axoConfig.weiterExists}
    continue = weiter
    back = zurück
    GPVarName = weiter
  }        
}
 ... 
[global]
  seite.10.marks.CONTENT.select.where = {$axoConfig.normal}
[globalVar = GP:continue = 1]
config.linkVars >
 seite.10.marks.CONTENT.select.where = {$axoConfig.weiter}
[end]
 ...

... nicht besonders elegant, aber erledigt.

grüße
axo