Register Browser
Armin Bartsch, Donnerstag, 21. Mai 2009
Ein einfacher Register-Browser mittels TypoScript
Ohne viel Aufwand einen Register-Browser mit der Option split erstellen. Miit Hilfe von if können die Zustände der Links bestimmt werden.
Beispiel
Die Anzeige der Navigation in diesem Beispiel begrent sich auf die Beiträge im Breich Lesezeichen der mit die EXT tt_news gepflegt wird. Das unten aufgeführte TypoScript ist entsprechend diesem Beispiel angepasst.
TypoScript
lib.tt_news_content.10 = TEXT
lib.tt_news_content.10 {
value = a,c,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,1,2,3,4,5,6,7,8,9
split {
token = ,
cObjNum = 1
1 {
10 = TEXT
10.current = 1
10.noTrimWrap = | | |
10.case = upper
10.typolink {
parameter = 537
parameter.if.isFalse.cObject = TEXT
parameter.if.isFalse.cObject {
value = 1
if.equals.data = GPvar:tx_ttnews|alpha
if.value.current = 1
}
parameter.if.isTrue.numRows {
table = tt_news
select {
pidInList = 532
andWhere.current = 1
andWhere.wrap = title LIKE '|%'
}
}
useCacheHash = 1
additionalParams.current = 1
additionalParams.wrap = &tx_ttnews[alpha]=|
}
}
}
}lib.tt_news_content.10 = TEXT
lib.tt_news_content.10 {
value = a,c,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,1,2,3,4,5,6,7,8,9
split {
token = ,
cObjNum = 1
1 {
10 = TEXT
10.current = 1
10.noTrimWrap = | | |
10.case = upper
10.typolink {
parameter = 537
parameter.if.isFalse.cObject = TEXT
parameter.if.isFalse.cObject {
value = 1
if.equals.data = GPvar:tx_ttnews|alpha
if.value.current = 1
}
parameter.if.isTrue.numRows {
table = tt_news
select {
pidInList = 532
andWhere.current = 1
andWhere.wrap = title LIKE '|%'
}
}
useCacheHash = 1
additionalParams.current = 1
additionalParams.wrap = &tx_ttnews[alpha]=|
}
}
}
}
Ergebnis Ansicht
Die Ansicht der Ergebnis-Seite ist eine LIST-Ansicht. Der Array $selectConf der die Query-Bildung bestimmt wird über einen HOOK ergänzt um die Abfrage entsprechend meinen Anforderungen anzupassen.
Als HOOK habe ich selectConfHook gewählt. Die Methode processSelectConfHook habe ich kurz gehalten, es erfolgt eine feste Abfrage auf die Page-uid wo der Register-Browser eingebunden ist.
/**
* Abpassen $selectConf
*
* @param object this
* @param array $selectConf : quety parameters in an array
* @return array $selectConf
*/
function processSelectConfHook($pObj, $selectConf) {
if ($GLOBALS['TSFE']->id == 537) {
if ($pObj->piVars['alpha'] && t3lib_div::inList('a,c,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,1,2,3,4,5,6,7,8,9', $pObj->piVars['alpha'])) {
$selectConf['where'] = $selectConf['where'].' AND tt_news.title LIKE \''.$GLOBALS['TYPO3_DB']->quoteStr($pObj->piVars['alpha'], 'tt_news').'%\'';
}
}
return $selectConf;
} /**
* Abpassen $selectConf
*
* @param object this
* @param array $selectConf : quety parameters in an array
* @return array $selectConf
*/
function processSelectConfHook($pObj, $selectConf) {
if ($GLOBALS['TSFE']->id == 537) {
if ($pObj->piVars['alpha'] && t3lib_div::inList('a,c,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,1,2,3,4,5,6,7,8,9', $pObj->piVars['alpha'])) {
$selectConf['where'] = $selectConf['where'].' AND tt_news.title LIKE \''.$GLOBALS['TYPO3_DB']->quoteStr($pObj->piVars['alpha'], 'tt_news').'%\'';
}
}
return $selectConf;
}
Dann nur noch der HOOK aufgerufen werden
/**
* $selectConf erweitern für LIST Ansicht Merkzettel
*/
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['tt_news']['selectConfHook'][] = t3lib_extMgm::extPath('anpassungen_t3').'tt_news/class.tx_hooks.php:tx_hooks';
/**
* $selectConf erweitern für LIST Ansicht Merkzettel
*/
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['tt_news']['selectConfHook'][] = t3lib_extMgm::extPath('anpassungen_t3').'tt_news/class.tx_hooks.php:tx_hooks';
Die Ansicht der Ergebnisseite kann man auch auf anderen Wegen erreichen, z.B. mit TypoScript über CONTENT und select.
Neben einen gut strukturierten TypoScript in einem Template ist es hilfreich mit "vernüftigen" Kommentaren die Lesbarkeit zu erhöhen.
TypoScript bietet die Möglichkeit von ein- und mehrzeiligen Kommentaren.
Einzeiliger Kommentar
Kurze Kommentare können mit den Zeichen # und // eingeleitet werden, ein schließendes Zeichen ist nicht nötig.
Der Kommentar muss immer in einer extra Zeile beginnen.
Richtige Schreibweise
// Kommentar beginnt in einer extra Zeile
# Kommentar beginnt in einer Zeile// Kommentar beginnt in einer extra Zeile
# Kommentar beginnt in einer Zeile
Falsche Schreibweise
// Kommentar geht über
zwei Zeilen
# Kommentar geht über
zwei Zeilen
TS # Kommentar beginnt nicht in einer extra Zeile
TS // Kommentar beginnt nicht in einer extra Zeile
# Nach dem Kommentar folgt eine TS-Anweisung 10 = COA
// Nach dem Kommentar folgt eine TS-Anweisung 10 = COA
// Kommentar geht über
zwei Zeilen
# Kommentar geht über
zwei Zeilen
TS # Kommentar beginnt nicht in einer extra Zeile
TS // Kommentar beginnt nicht in einer extra Zeile
# Nach dem Kommentar folgt eine TS-Anweisung 10 = COA
// Nach dem Kommentar folgt eine TS-Anweisung 10 = COA
Mehrzeiliger Kommentar
Ein mehrzeiliger Kommentar wird mit /* geöffnet und mit */ wieder geschlossen. Es ist unbedingt darauf zu achten, die öffnenden und schließenden Zeichen in einer extra Zeile stehen. Auch darf weder vor dem öffnenden oder nach dem schließenden Zeichen TypoScript stehen.
Richtige Schreibweise
/*
Schließende Zeichen in einer extra Zeile
*/
/* Schließende Zeichen in einer extra Zeile
*//*
Schließende Zeichen in einer extra Zeile
*/
/* Schließende Zeichen in einer extra Zeile
*/
Falsche Schreibweise
/* Schließende Zeichen müssen in einer extra Zeile stehen */
/*
Schließende Zeichen müssen in einer extra Zeile stehen */
TS /* Öffnene Zeichen müssen in einer extra Zeile stehen
*/
/* Schließende Zeichen müssen in einer extra Zeile stehen */
/*
Schließende Zeichen müssen in einer extra Zeile stehen */
TS /* Öffnene Zeichen müssen in einer extra Zeile stehen
*/