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
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
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 🙂
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 😉
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