Typo3 - TS Templates: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
 
(7 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:
 
Es gibt einige Grundsätzliche Einstellungen die immer wieder gemacht werden müssen. Hier finden sich einige davon. Einige weiterführende Einstellungen finden sich in [[Typo3 - Tipps und Tricks]]
 
Es gibt einige Grundsätzliche Einstellungen die immer wieder gemacht werden müssen. Hier finden sich einige davon. Einige weiterführende Einstellungen finden sich in [[Typo3 - Tipps und Tricks]]
  
 +
=== XHTML ===
 +
# DOCTYPE auf XHTML Transitional umstellen
 +
config.doctype = xhtml_trans
 +
# XML-Prolog aus
 +
config.xmlprologue = none
 +
# Standard XHTML Filter aktivieren (Tags werden kleingeschrieben, ...)
 +
config.xhtml_cleaning = all
 +
# HTML Atribute setzen
 +
config.htmlTag_setParams = xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"
  
 
== Spracheinstellungen ==
 
== Spracheinstellungen ==
Zeile 74: Zeile 83:
 
== Inline CSS loswerden ==
 
== Inline CSS loswerden ==
 
Bei vielen Extensions und bei CSS Styled ImgText liegt das CSS Inline. Besser wäre ist es das CSS komplett in eigene Dateien auszulagern.
 
Bei vielen Extensions und bei CSS Styled ImgText liegt das CSS Inline. Besser wäre ist es das CSS komplett in eigene Dateien auszulagern.
 +
 +
== CSS per random laden ==
 +
 +
im typoscritp template:
 +
<pre>
 +
# Configuring the Auto-Parser for main template:
 +
 +
plugin.tx_automaketemplate_pi1 {
 +
    # Read the template file:
 +
  content = FILE
 +
  content.file = fileadmin/template/rasterpage-startseite-css.html
 +
 +
    # Here we define which elements in the HTML that
 +
    # should be wrapped in subpart-comments:
 +
  elements {
 +
    BODY.all = 1
 +
    BODY.all.subpartMarker = DOCUMENT_BODY
 +
 +
    HEAD.all = 1
 +
    HEAD.all.subpartMarker = DOCUMENT_HEADER
 +
    HEAD.rmTagSections = title
 +
   
 +
    TD.all = 1
 +
    DIV.all = 1
 +
  }
 +
 +
    # Prefix all relative paths with this value:
 +
  relPathPrefix = fileadmin/template/
 +
}
 +
</pre>
 +
 +
//----------------------------  random css  ---------------------------------
 +
 +
<pre>
 +
temp.cssrandom =  PHP_SCRIPT
 +
temp.cssrandom.file = fileadmin/template/random_css.php
 +
 +
 +
# Main TEMPLATE cObject for the HEAD
 +
temp.headTemplate = TEMPLATE
 +
temp.headTemplate {
 +
    # Feeding the content from the Auto-parser to the TEMPLATE cObject:
 +
  template =< plugin.tx_automaketemplate_pi1
 +
    # Select only the content between the <head>-tags
 +
  workOnSubpart = DOCUMENT_HEADER
 +
 +
/*
 +
/ html templates need a marker named <!--###cssrandom### begin -->random css<!--###cssrandom### end --> in the head
 +
*/
 +
 +
  subparts.cssrandom < temp.cssrandom
 +
}
 +
</pre>
 +
 +
im html-template:
 +
 +
<pre>
 +
<html xmlns="http://www.w3.org/1999/xhtml">
 +
<head>
 +
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 +
<title>DER TITEL</title>
 +
 +
<!--###cssrandom### begin -->random css<!--###cssrandom### end -->
 +
 +
</head>
 +
</pre>
 +
 +
und das ist das random_css.php
 +
 +
<pre>
 +
<?php
 +
/***********************
 +
*  Copyright notice
 +
*  GPL
 +
*  @author fabian thommen job@fabtho.net
 +
*/
 +
 +
$relPathPrefix='fileadmin/template/';
 +
$css = array('eins.css','zwei.css','drei.css','vier.css');
 +
$randomzahl = rand(0, count($css)-1);
 +
$content = '<link href="'.$relPathPrefix.'css/'.$css[$randomzahl].'" rel="stylesheet" type="text/css" />';
 +
if (headers_sent()) {
 +
  exit;
 +
}
 +
?>
 +
</pre>
  
 
== JavaScript in externe Datei auslagern ==
 
== JavaScript in externe Datei auslagern ==
Zeile 99: Zeile 194:
 
</pre>
 
</pre>
 
(TypoWizard.com 9.1.2006)
 
(TypoWizard.com 9.1.2006)
 +
 +
 +
=== Senkrechter Strich bei Wrap ===
 +
 +
 +
Um bei einem Wrap (zum Beispiel im Menü) zwischen jedem Eintrag einen senkrechten Strich | darzustellen, ist folgende Eingabe möglich:
 +
<pre>
 +
<nowiki>tt_content.menu.20.2.1.NO.linkWrap = | &#124;&nbsp;|*||*| |</nowiki>
 +
</pre>
 +
 +
== Benutzer Funktionen (userFunc) ==
 +
 +
Beispiele (Quelle: http://typo3.umloud.dk/index.php?id=359 22.5.2006)
 +
 +
<pre>
 +
 +
<?php
 +
 +
 +
 +
 +
class user_UserFunc{
 +
 +
 +
 +
 +
 +
    /*
 +
 +
    * Function: getRandomRecordIds()
 +
 +
    *
 +
 +
    * Returns a random comma seperated list of IDs
 +
 +
    *
 +
 +
    * Parameters:
 +
 +
    *
 +
 +
    *    table    -    The table to get the record IDs from
 +
 +
    *    pid - The Page ID of the page where the records are located
 +
 +
    *    max - The number of IDs to return
 +
 +
    *
 +
 +
    * Example:
 +
 +
    *
 +
 +
    *    includeLibs.functions = fileadmin/scripts/UserFunc.inc
 +
 +
    *   
 +
 +
    *    lib.randomRecords = COA_INT
 +
 +
    *    lib.randomRecords {
 +
 +
    *      10 = TEXT
 +
 +
    *      10.wrap = <div id="randomRecords">|</div>
 +
 +
    *      10.preUserFunc = user_UserFunc->getRandomRecordIds
 +
 +
    *      10.preUserFunc.pid = {$lib.randomRecords.pid}
 +
 +
    *      10.preUserFunc.table = {$lib.randomRecords.table}
 +
 +
    *      10.preUserFunc.max = {$lib.randomRecords.max}
 +
 +
    *      10.split.token = ,
 +
 +
    *      10.split.cObjNum = 1
 +
 +
    *      10.split.1 {
 +
 +
    *        10 = RECORDS
 +
 +
    *        10.dontCheckPid = 1
 +
 +
    *        10.tables = {$lib.randomRecords.table}
 +
 +
    *        10.source.current = 1
 +
 +
    *        10.conf.{$lib.randomRecords.table} = COA
 +
 +
    *        10.conf.{$lib.randomRecords.table} {
 +
 +
    *          10 = IMAGE
 +
 +
    *          10.file.import = uploads/tx_bannerimages/
 +
 +
    *          10.file.import.data = field:image
 +
 +
    *          10.file.import.listNum = 0
 +
 +
    *          10.stdWrap.typolink.parameter.data = field:url
 +
 +
    *          10.stdWrap.typolink.wrap = <span>|</span>
 +
 +
    *        }
 +
 +
    *      }
 +
 +
    *    }
 +
 +
    *
 +
 +
    */
 +
 +
    function getRandomRecordIds($content,$conf){
 +
 +
        $lCObj = t3lib_div::makeInstance("tslib_cObj");
 +
 +
 +
 +
        $table = $conf['table'];
 +
 +
        $pid = $conf['pid'];
 +
 +
        $max = $conf['max'];
 +
 +
 +
 +
        $query = 'SELECT * FROM '.$table.' WHERE pid='.$pid.$lCObj->enableFields($table).' ORDER BY RAND() LIMIT 0,'.$max;
 +
 +
        $res = mysql(TYPO3_db,$query);
 +
 +
 +
 +
        $ar = array();
 +
 +
        while($row = mysql_fetch_assoc($res)){
 +
 +
            $ar[] = $row['uid'];
 +
 +
        }
 +
 +
        return implode(",",$ar);
 +
 +
    }
 +
 +
 +
 +
 +
 +
    /*
 +
 +
    * Function: getCurrentFEuser()
 +
 +
    *
 +
 +
    * Return a field from fe_users table
 +
 +
    *
 +
 +
    * Parameters:
 +
 +
    *
 +
 +
    *    field    -    The feusers field to get.
 +
 +
    *
 +
 +
    *    The marker ###USER### is replaced with the returned value
 +
 +
    *
 +
 +
    * Example:
 +
 +
    *
 +
 +
    *    includeLibs.functions = fileadmin/scripts/UserFunc.inc
 +
 +
    *
 +
 +
    *    10 = TEXT
 +
 +
    *    10.value = Your name is: ###USER###
 +
 +
    *    10.postUserFunc = user_UserFunc->getCurrentFEuser
 +
 +
    *    10.postUserFunc.field = name
 +
 +
    *
 +
 +
    */
 +
 +
    function getCurrentFeuser($content,$conf){
 +
 +
        $field = $conf['field'];
 +
 +
        $fedata = $GLOBALS["TSFE"]->fe_user->user[$field];
 +
 +
        return ($fedata ) ? str_replace("###USER###",$fedata , $content) : $content;
 +
 +
    }
 +
 +
 +
 +
 +
 +
    /*
 +
 +
    * Function: getRandomItem()
 +
 +
    *
 +
 +
    * Return a random item from a comma seperated list of items
 +
 +
    *
 +
 +
    * Parameters:
 +
 +
    *
 +
 +
    *    <none>
 +
 +
    *
 +
 +
    * Example:
 +
 +
    *
 +
 +
    *    includeLibs.functions = fileadmin/scripts/UserFunc.inc
 +
 +
    *
 +
 +
    *    10 = COA_INT
 +
 +
    *    10 {
 +
 +
    *      10 =IMAGE
 +
 +
    *      10.file.import = uploads/media/
 +
 +
    *      10.file.import.cObject = TEXT
 +
 +
    *      10.file.import.cObject.field = media
 +
 +
    *      10.file.import.cObject.postUserFunc = user_UserFunc->getRandomItems
 +
 +
    *      10.file.import.listNum = 0
 +
 +
    *    }
 +
 +
    *
 +
 +
    */
 +
 +
    function getRandomItem($content,$conf) {
 +
 +
        if ($content) {
 +
 +
                $item = explode(",",$content);
 +
 +
                return $item[rand(0,count($item)-1)];
 +
 +
        }
 +
 +
    }
 +
 +
 +
 +
 +
 +
    function getRandomItems($content,$conf) {
 +
 +
        if ($content) {
 +
 +
            srand((float) microtime() * 10000000);
 +
 +
            $max = $conf['max'];
 +
 +
            $max = ($max>0) ? $max : 1;
 +
 +
            $item = explode(",",$content);
 +
 +
            $rkeys = array_rand($item,$max);
 +
 +
            for ( $i=0;$i<$max;$i++) {
 +
 +
                $ar[] = $item[$rkeys[$i]];
 +
 +
            }
 +
 +
            return implode(",",$ar);
 +
 +
        }
 +
 +
    }
 +
 +
}
 +
 +
 +
?>
 +
 +
</pre>

Aktuelle Version vom 22. Mai 2006, 11:26 Uhr

Typo3 - TypoScript Grundeinstellungen[Bearbeiten]

Es gibt einige Grundsätzliche Einstellungen die immer wieder gemacht werden müssen. Hier finden sich einige davon. Einige weiterführende Einstellungen finden sich in Typo3 - Tipps und Tricks

XHTML[Bearbeiten]

# DOCTYPE auf XHTML Transitional umstellen 
config.doctype = xhtml_trans
# XML-Prolog aus
config.xmlprologue = none
# Standard XHTML Filter aktivieren (Tags werden kleingeschrieben, ...)
config.xhtml_cleaning = all
# HTML Atribute setzen
config.htmlTag_setParams = xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"

Spracheinstellungen[Bearbeiten]

HTML-Template einbinden[Bearbeiten]

siehe auch: Typo3 - HTML-Templates Beispiel (das page Objekt muß natürlich vorher definiert werden):

Im TS Template Setup:

 page.10 = TEMPLATE
 page.10{
   template = FILE
   template.file = fileadmin/templates/main.html
 
   ### Subparts ansprechen ###
   workOnSubpart = DOCUMENT_BODY
 
   # Rootline (Pathway) einfügen ###
   subparts.ROOTLINE < temp.rootline_html
   
   # Hauptinhalt
   subparts.CONTENT < layoutWrap
   subparts.CONTENT.wrap = <div class="content"> | </div>   
   
   #Inhalt rechts
   subparts.CONTENT_RIGHT < styles.content.getRight
   subparts.CONTENT_RIGHT.wrap = <div class="content"> | </div>
  
   # Rand bzw. Header
   subparts.HEADER < styles.content.getBorder
   subparts.HEADER <div class="header"> | </div>
   # subparts.HEADER < temp.flashHeader
  
   ### Hauptnavigation ###
   subparts.NAVI_LINKS < temp.navi_gLayer
  
   ### rechte Navi ###
   subparts.NAVI_RECHTS <temp.naviGRight
    
 }

Einstellungen für das Page Objekt[Bearbeiten]

statische Seiten Simulieren[Bearbeiten]

Einstellungen für das Admin Panel[Bearbeiten]

Spamschutz für Email Adressen[Bearbeiten]

Einstellungen für Bilder[Bearbeiten]

Größe (maximal, minimal, Popups, Skalierung, Bildunterschriften...)

Link to Top[Bearbeiten]

Darstellung von Tabellen[Bearbeiten]

Betrifft hauptsächlich das static Template content(default)

clear.gif und Absätze loswerden[Bearbeiten]

content(default)

externe Links[Bearbeiten]

_self oder _blank, aussehen... styles.content.links.extTarget (bei css_styled_content)

Listenpunkte und Aufzählungen[Bearbeiten]

Layoutauswahl[Bearbeiten]

Inline CSS loswerden[Bearbeiten]

Bei vielen Extensions und bei CSS Styled ImgText liegt das CSS Inline. Besser wäre ist es das CSS komplett in eigene Dateien auszulagern.

CSS per random laden[Bearbeiten]

im typoscritp template:

# Configuring the Auto-Parser for main template:

plugin.tx_automaketemplate_pi1 {
    # Read the template file:
  content = FILE
  content.file = fileadmin/template/rasterpage-startseite-css.html
 
    # Here we define which elements in the HTML that 
    # should be wrapped in subpart-comments:
  elements {
    BODY.all = 1
    BODY.all.subpartMarker = DOCUMENT_BODY
 
    HEAD.all = 1
    HEAD.all.subpartMarker = DOCUMENT_HEADER
    HEAD.rmTagSections = title
    
    TD.all = 1
    DIV.all = 1
  }
 
    # Prefix all relative paths with this value:
  relPathPrefix = fileadmin/template/
}

//---------------------------- random css ---------------------------------

temp.cssrandom =  PHP_SCRIPT
temp.cssrandom.file = fileadmin/template/random_css.php

 
# Main TEMPLATE cObject for the HEAD
temp.headTemplate = TEMPLATE
temp.headTemplate {
    # Feeding the content from the Auto-parser to the TEMPLATE cObject:
  template =< plugin.tx_automaketemplate_pi1
    # Select only the content between the <head>-tags
   workOnSubpart = DOCUMENT_HEADER

/*
/ html templates need a marker named <!--###cssrandom### begin -->random css<!--###cssrandom### end --> in the head
 */

   subparts.cssrandom < temp.cssrandom
}

im html-template:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>DER TITEL</title>

<!--###cssrandom### begin -->random css<!--###cssrandom### end -->

</head>

und das ist das random_css.php

<?php
/***********************
*  Copyright notice
*  GPL
*  @author fabian thommen job@fabtho.net
*/

$relPathPrefix='fileadmin/template/';
$css = array('eins.css','zwei.css','drei.css','vier.css');
$randomzahl = rand(0, count($css)-1);
$content = '<link href="'.$relPathPrefix.'css/'.$css[$randomzahl].'" rel="stylesheet" type="text/css" />';
if (headers_sent()) {
  exit;
}
?>

JavaScript in externe Datei auslagern[Bearbeiten]

Z.B. der kleine JavaScript Schnipsel für das Blur im IE auslagern. Wie bindet man externes JavaScript ein.

Ausgabe einer Spalte Wrappen[Bearbeiten]

Beispiel:

 #Inhalt rechts
 subparts.CONTENT_RIGHT < styles.content.getRight
 #Ganze Spalte Wrappen
 subparts.CONTENT_RIGHT.wrap = <div class="content_right"> | </div>
 #Einzelnes Element Wrappen 
 subparts.CONTENT_RIGHT.renderObj.stdWrap.wrap=<div class="bordered">|</div>

Ausgabe einer Spalte Wrappen wenn nicht leer[Bearbeiten]

Hier wird das content element nur mit einem div gewrapt wenn es nicht leer ist

temp.rightContent < styles.content.getRight
temp.rightContent.stdWrap {
  wrap = <div id="right-main"> | </div>
  if.isTrue.numRows < styles.content.getRight
}

(TypoWizard.com 9.1.2006)


Senkrechter Strich bei Wrap[Bearbeiten]

Um bei einem Wrap (zum Beispiel im Menü) zwischen jedem Eintrag einen senkrechten Strich | darzustellen, ist folgende Eingabe möglich:

 tt_content.menu.20.2.1.NO.linkWrap = | | |*||*| |

Benutzer Funktionen (userFunc)[Bearbeiten]

Beispiele (Quelle: http://typo3.umloud.dk/index.php?id=359 22.5.2006)


<?php




class user_UserFunc{





    /*

     * Function: getRandomRecordIds()

     *

     * Returns a random comma seperated list of IDs

     *

     * Parameters:

     *

     *    table    -    The table to get the record IDs from

     *    pid - The Page ID of the page where the records are located

     *    max - The number of IDs to return

     *

     * Example:

     *

     *    includeLibs.functions = fileadmin/scripts/UserFunc.inc

     *    

     *    lib.randomRecords = COA_INT

     *    lib.randomRecords {

     *      10 = TEXT

     *      10.wrap = <div id="randomRecords">|</div>

     *      10.preUserFunc = user_UserFunc->getRandomRecordIds

     *      10.preUserFunc.pid = {$lib.randomRecords.pid}

     *      10.preUserFunc.table = {$lib.randomRecords.table}

     *      10.preUserFunc.max = {$lib.randomRecords.max}

     *      10.split.token = ,

     *      10.split.cObjNum = 1

     *      10.split.1 {

     *        10 = RECORDS

     *        10.dontCheckPid = 1

     *        10.tables = {$lib.randomRecords.table}

     *        10.source.current = 1

     *        10.conf.{$lib.randomRecords.table} = COA

     *        10.conf.{$lib.randomRecords.table} {

     *          10 = IMAGE

     *          10.file.import = uploads/tx_bannerimages/

     *          10.file.import.data = field:image

     *          10.file.import.listNum = 0

     *          10.stdWrap.typolink.parameter.data = field:url

     *          10.stdWrap.typolink.wrap = <span>|</span>

     *        }

     *      }

     *    }

     *

     */

    function getRandomRecordIds($content,$conf){

        $lCObj = t3lib_div::makeInstance("tslib_cObj");



        $table = $conf['table'];

        $pid = $conf['pid'];

        $max = $conf['max'];



        $query = 'SELECT * FROM '.$table.' WHERE pid='.$pid.$lCObj->enableFields($table).' ORDER BY RAND() LIMIT 0,'.$max;

        $res = mysql(TYPO3_db,$query);



        $ar = array();

        while($row = mysql_fetch_assoc($res)){

            $ar[] = $row['uid'];

        }

        return implode(",",$ar);

    }





    /*

     * Function: getCurrentFEuser()

     *

     * Return a field from fe_users table

     *

     * Parameters:

     *

     *    field    -    The feusers field to get.

     *

     *    The marker ###USER### is replaced with the returned value

     *

     * Example:

     *

     *    includeLibs.functions = fileadmin/scripts/UserFunc.inc

     *

     *    10 = TEXT

     *    10.value = Your name is: ###USER###

     *    10.postUserFunc = user_UserFunc->getCurrentFEuser

     *    10.postUserFunc.field = name

     *

     */

    function getCurrentFeuser($content,$conf){

        $field = $conf['field'];

        $fedata = $GLOBALS["TSFE"]->fe_user->user[$field];

        return ($fedata ) ? str_replace("###USER###",$fedata , $content) : $content;

    }





    /*

     * Function: getRandomItem()

     *

     * Return a random item from a comma seperated list of items

     *

     * Parameters:

     *

     *    <none>

     *

     * Example:

     *

     *    includeLibs.functions = fileadmin/scripts/UserFunc.inc

     *

     *    10 = COA_INT

     *    10 {

     *      10 =IMAGE

     *      10.file.import = uploads/media/

     *      10.file.import.cObject = TEXT

     *      10.file.import.cObject.field = media

     *      10.file.import.cObject.postUserFunc = user_UserFunc->getRandomItems

     *      10.file.import.listNum = 0

     *    }

     *

     */

    function getRandomItem($content,$conf) {

        if ($content) {

                $item = explode(",",$content);

                return $item[rand(0,count($item)-1)];

        }

    }





    function getRandomItems($content,$conf) {

        if ($content) {

            srand((float) microtime() * 10000000);

            $max = $conf['max'];

            $max = ($max>0) ? $max : 1;

            $item = explode(",",$content);

            $rkeys = array_rand($item,$max);

            for ( $i=0;$i<$max;$i++) { 

                $ar[] = $item[$rkeys[$i]];

            }

            return implode(",",$ar);

        }

    }

}


?>