[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