[TYPO3-german] "Wenn in der linken Spalte ein Inhaltselement istbenutze das Template2.thml"

Tim Lochmüller tl at bkn-media.de
Wed May 17 08:30:23 CEST 2006


> Wie kann ich eine Bedingung machen die prüft ob auf
> einer Seite ein Inhaltselement in der z.B. linken Spalte
> ist, und wenn ja, dann soll das Template überschrieben
> werden der eine spezielle Zelle hat um den Inhalt
> anzuzeigen.

Hi,

für dieses Problem habe ich auf meiner neusten Seite eine gute Lösung gefunden. Mein Div - Layout hat direkt alle 4 Spalten mit div´s und blendet alle mittels display: none aus, außer center.

Diese Funktion:

function user_getCssFile(){
   $return = '';
   $CONTENT['right'] = false;
   $CONTENT['left'] = false;
   $CONTENT['center'] = true;
   
   // rechts
   $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*','tt_content', '`hidden`=0 AND `deleted`=0 AND `colPos`=2 AND `pid`='.$GLOBALS['TSFE']->id.' LIMIT 1');
   $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
   if(sizeof($row) > 5)
      $CONTENT['right'] = true;

   // Links
   $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*','tt_content', '`hidden`=0 AND `deleted`=0 AND `colPos`=1 AND `pid`='.$GLOBALS['TSFE']->id.' LIMIT 1');
   $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
   if(sizeof($row) > 5)
      $CONTENT['left'] = true;
   
   if($CONTENT['center'] AND $CONTENT['left'] AND !$CONTENT['right'])
      $return .= "\n".'<link rel="stylesheet" type="text/css" href="fileadmin/template/zusatz_zwei_left.css" />';
   elseif($CONTENT['center'] AND !$CONTENT['left'] AND $CONTENT['right'])
      $return .= "\n".'<link rel="stylesheet" type="text/css" href="fileadmin/template/zusatz_zwei_right.css" />';
   elseif($CONTENT['center'] AND $CONTENT['left'] AND $CONTENT['right'])
      $return .= "\n".'<link rel="stylesheet" type="text/css" href="fileadmin/template/zusatz_drei.css" />';
   else
      $return .= "\n".'<link rel="stylesheet" type="text/css" href="fileadmin/template/zusatz_eine.css" />';
   
   // Links
   $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('layout','pages', '`uid`='.$GLOBALS['TSFE']->id.' LIMIT 1');
   $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
   if($row['layout'] == '1' AND ($CONTENT['left'] OR $CONTENT['right'])){
      if($CONTENT['left'])
         $return .= "\n".'<link rel="stylesheet" type="text/css" href="fileadmin/template/zusatz_style_left.css" />';
      if($CONTENT['right'])
         $return .= "\n".'<link rel="stylesheet" type="text/css" href="fileadmin/template/zusatz_style_right.css" />';
   } // if

   if($row['layout'] == '2' AND ($CONTENT['left'] OR $CONTENT['right'])){
      if($CONTENT['left'])
         $return .= "\n".'<link rel="stylesheet" type="text/css" href="fileadmin/template/zusatz_style_left_grey.css" />';
      if($CONTENT['right'])
         $return .= "\n".'<link rel="stylesheet" type="text/css" href="fileadmin/template/zusatz_style_right_grey.css" />';
   } // if
   
   // Border
   $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*','tt_content', '`hidden`=0 AND `deleted`=0 AND `colPos`=3 AND `pid`='.$GLOBALS['TSFE']->id.' LIMIT 1');
   $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
   if(sizeof($row) > 5)
      $return .= "\n".'<link rel="stylesheet" type="text/css" href="fileadmin/template/zusatz_border.css" />';
      
   return $return;
} // function

Habe ich in einer function.php geschrieben und mittels include_once in der localconf geladen.

In den passenden CSS Dateien werden passend die div-boxen wieder angezeigt wenn diese gefüllt sind.

Schön an dieser Lösung ist z.B.

Wenn nur Center gefüllt Spalte 100%
Wenn Link und Center dann 25% - 75%
Wenn Center Rechts dann 75% - 25%

Somit braucht der normale User nicht mehr viel einstellen weil alles automatisch geht.

Hoffe das war verständlich

Beste,
Tim
------------------------
http://typo3.fruit-lab.de <- Typo3 Suchmaschinenoptimierung




More information about the TYPO3-german mailing list