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.

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

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]=| } } } }
  1. lib.tt_news_content.10 = TEXT
  2. lib.tt_news_content.10 {
  3.   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
  4.   split {
  5.     token = ,
  6.     cObjNum = 1
  7.     1 {
  8.       10 = TEXT
  9.       10.current = 1
  10.       10.noTrimWrap = | | |
  11.       10.case = upper
  12.       10.typolink {
  13.         parameter = 537
  14.         parameter.if.isFalse.cObject = TEXT
  15.         parameter.if.isFalse.cObject {
  16.           value = 1
  17.           if.equals.data = GPvar:tx_ttnews|alpha
  18.           if.value.current = 1
  19.         }
  20.         parameter.if.isTrue.numRows {
  21.           table = tt_news
  22.           select {
  23.             pidInList = 532
  24.             andWhere.current = 1
  25.             andWhere.wrap = title LIKE '|%'
  26.           }
  27.         }
  28.         useCacheHash = 1
  29.         additionalParams.current = 1
  30.         additionalParams.wrap = &tx_ttnews[alpha]=|
  31.       }
  32.     }
  33.   }
  34. }

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; }
  1.   /**
  2.    * Abpassen $selectConf
  3.    *
  4.    * @param object  this
  5.    * @param array    $selectConf : quety parameters in an array
  6.    * @return  array  $selectConf
  7.    */
  8.   function processSelectConfHook($pObj, $selectConf) {
  9.     if ($GLOBALS['TSFE']->id == 537) {
  10.       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'])) {
  11.         $selectConf['where'] = $selectConf['where'].' AND tt_news.title LIKE \''.$GLOBALS['TYPO3_DB']->quoteStr($pObj->piVars['alpha'], 'tt_news').'%\'';
  12.       }
  13.     }
  14.     return $selectConf;
  15.   }

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';
  1. /**
  2. * $selectConf erweitern für LIST Ansicht Merkzettel
  3. */
  4. $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['tt_news']['selectConfHook'][] = t3lib_extMgm::extPath('anpassungen_t3').'tt_news/class.tx_hooks.php:tx_hooks';
  5.  

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
  1. // Kommentar beginnt in einer extra Zeile
  2.  
  3. # 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
  1. // Kommentar geht über
  2. zwei Zeilen
  3.  
  4. # Kommentar geht über
  5. zwei Zeilen
  6.  
  7. TS # Kommentar beginnt nicht in einer extra Zeile
  8.  
  9. TS // Kommentar beginnt nicht in einer extra Zeile
  10.  
  11. # Nach dem Kommentar folgt eine TS-Anweisung 10 = COA
  12.  
  13.  
  14. // Nach dem Kommentar folgt eine TS-Anweisung 10 = COA
  15.  

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 */
  1. /*
  2. Schließende Zeichen in einer extra Zeile
  3. */
  4.  
  5. /* Schließende Zeichen in einer extra Zeile
  6. */

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 */
  1. /* Schließende Zeichen müssen in einer extra Zeile stehen */
  2.  
  3. /*
  4. Schließende Zeichen müssen in einer extra Zeile stehen */
  5.  
  6. TS /* Öffnene Zeichen müssen in einer extra Zeile stehen
  7. */
  8.  
  9.  

Sponsored by:

ideenwerft webhosting
ideenwerft caretaker