TYPO3 Template mit 960gs inklusive Typoscript zum Customizing

Di, 08.11.2011 - 18:34 -- admin

Eigentlich für den Themeforest Market habe ich ein Template für TYPO3 entwickelt, welches die dort üblichen Template- und Zusatzfeatues in TYPO3 mit zumeist Typoscript Boardmitteln abbilden kann. TYPO3 Templates als Tutorial und Ideeengeber findet man im Web so nicht, auch findet man bei Themeforest momentan Templates für viele CMS-Systeme leider nicht für TYPO3, ich hatte gehofft dieses scheint in irgendeiner Form eine "Marktlücke" zu sein, allerdings wohl nicht für die Jungs dort.

Leider wurde das von mir eingereichte Template bereits mehrmals Minuten nach Upload mit der Begründung es würde nichts besonderes sein abgelehnt (So for now, look to tweak and polish this template). Vergleicht man nun allerdings mal die dort üblichen Wordpress Templates, so sieht man schnell, dass die dort genutzten Shortcodes (meist HTML) zur Inhaltsverwaltung ziemlich steinzeitlich und umständlich gegenüber TYPO3 aussehen. Nach dem ersten erfolglosen einreichen habe ich noch einmal nachgebessert, jedoch ist mir nun die Zeit zu schade und ich wüsste auch nicht wo man das Design noch nachbessern könnte, wenn man die Templates mit den dort erhältlichen vergleicht. Obwohl ich noch genug Optimierung und Erweiterungspotenzial im Contentbereich sehe, könnt ihr gerne das Template / Typoscript für eure Zwecke nutzen bevor es im virtuellen Papierkorb landet.

Das ganze Template inklusive Typoscript, Page TSConfig und allen benötigten Dateien habe ich in einer TYPO3 Erweiterung zusammengelegt. Um alles recht einfach zu halten wird ein HTML Template mit Markern genutzt und sowohl auf TemplaVoila! als auch Fluidlayouts verzichtet und lieber die neuesten TYPO3 Funktionen genutzt z.b. TYPO3 4.6 JS/CSS Compression, backend_layouts. Zu sehen ist alles unter demo.espend.de/tgudy solang die TYPO3 Installation noch läuft.

Installation

Zur Installation sollte mindestens ein TYPO3 ab 4.5 genutzt werden. Die gesamte Seiten, wie sie in den Bildern zu sehen ist, steht als t3d bereit. Ein einfaches importieren dieser Datei reicht und man hat eine fertige Seite vor sich. Eine Blanko Seite steht ebenso als t3d bereit. Eine weitere Beschreibung kann man der im Download enthaltenen PDF entnehmen.

Features

  • Alle Einstellungen können über den TYPO3 Constants Editor geändert werden: diverse Schriftarten inkl Google Fonts, Farbe im Kopfbereich, Content Slider Effekt im Header, ...
  • unterschiedliche Layout Möglichkeiten für alle Inhaltselemente: Tabellen, Listen, Rahmen, Menüs, ...
  • Einfache CSS3 Animationen / Transitions / Transforms im Header, so dass Farbe und Spots im Kopf leicht die Farbe ändern
  • backend_layouts für Seiten-Layouts: 1-3 spaltig
  • Buttons mit Icons über den RTE Editor
  • Fuß- und Kopfbereich als normale Spalten; Inhalt vom Fuß wird in der Seitenstruktur vererbt (slide)
  • Rückfall Kopfbereich mit Titel, Subtitel und Icon über Page Resources
  • Dokumentation als PDF
  • tt_news für Nachrichten und multicolums für Grid / Spalten im Content
  • RTE Editor Typoscript Optimierungen integriert

Technische Daten

  • Layout basiert auf 960gs mit HTML Resets
  • jQuery: bxSlider, Fancybox, ToggleBoxen
  • vorkonfiguriertes: tt_news und multicolumn
  • alles als TYPO3 Extension zusammengefasst
  • Erweiterung war als Basis für weitere Templates mit gleichem Funktionsumpfang angedacht, deswegen
  • eigene CSS Anpassungen möglich, da Trennung zwischen üblichen TYPO3 und Customizing

Typoscript und Javascript Extras

  • Body Tags: PageID, Seitentyp, IsFrontpage, ...
  • Erweiterter Wrap für Contentelement: Typ, Frame, Layout
  • Slide für Fußbereich; Fallback für Header
  • Icons für Tabellen (z.B. Amplesymbole einfach mit + 0 -)
  • Anpassung multicolumn: gleiche höhe für Spalten mit Frames
  • tt_news HTML Template für SingleView, LatestView und ListView

Komplettes Typoscipt

Typoscript Template Konstanten

plugin.tx_basictpl {
 
  # cat=plugin.tx_basictpl/enable/009; type=color; label= color: select color schema. use hex or dropbox
  page.color = purple	
 
  # cat=plugin.tx_basictpl/enable/010; type=file[png,jpg,gif]; label=Logo file: Use this file as image
  logo.path = 
 
  # cat=plugin.tx_basictpl/enable/011; type=int+; label=Logo image width: Image width for Logo
  logo.width = 250
 
  # cat=plugin.tx_basictpl/enable/012; type=file[png,jpg,gif]; label=Second logo file: Use this file as image
  sublogo.path = 
 
  # cat=plugin.tx_basictpl/enable/013; type=int+; label=Second logo width: Image width for Second logo
  sublogo.width = 250	
 
 
  # cat=plugin.tx_basictpl/enable/015; type=options[horizontal,vertical,fade]; change the effect of image slider
  page.fx = horizontal
 
  # cat=plugin.tx_basictpl/enable/016; type=options[english,german]; label= select default page language
  page.language = english	
 
  # cat=plugin.tx_basictpl/enable/016; type=options[verdana,droid,arial,georgia,helvetica,droid,times,ptsans,istok]; label= default font of page
  page.font = istok		
 
	# cat=plugin.tx_basictpl/enable/017; type=boolean; label= Enable background animation
	page.animate = 1	
 
  # cat=plugin.tx_basictpl/other/010; type=int+; label=2ColsSplit id
  grid.2ColsSplit = 5
 
  # cat=plugin.tx_basictpl/other/011; type=int+; label=2ColsRight id
  grid.2ColsRight = 4
 
  # cat=plugin.tx_basictpl/other/012; type=int+; label=3Cols id
  grid.3Cols = 3
 
  # cat=plugin.tx_basictpl/other/013; type=int+; label=2ColsLeft id
  grid.2ColsLeft = 2
 
  # cat=plugin.tx_basictpl/other/014; type=int+; label=1Col id
  grid.1Col = 1	
}
 
# scriptmerger configs
plugin.tx_scriptmerger.css.compress.enable = 0
plugin.tx_scriptmerger.javascript.compress.enable = 0
 
#typo3 4.5 lightbox feature
styles.content.imgtext.linkWrap {
  lightboxEnabled = 1
  lightboxRelAttribute = lightbox{field:uid}
  lightboxCssClass = lightbox
}
 
styles.content.imgtext.colPos0.maxW = 700
styles.content.imgtext.colPos1.maxW = 220
styles.content.imgtext.colPos2.maxW = 220
styles.content.imgtext.colPos3.maxW = 900
 
 
config.headerComment = Website based on tGudy template by Haehnchen (Espendiller, Daniel) on espend.de
 
plugin.tt_news.latestMaxW = 50
plugin.tt_news.latestMaxH = 50
 
styles.content.imgtext.maxWInText = 0
styles.content.imgtext.borderThick = 1

Typoscript Template Setup

plugin.tx_basictpl.page = PAGE
plugin.tx_basictpl.page.config {
  xhtml_cleaning = all
  xmlprologue = none
  doctype = xhtml_trans
  htmlTag_setParams = xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"
  language = en
  locale_all = en_US 
 
  disablePrefixComment = 1
  inlineStyle2TempFile = 1
 
  spamProtectEmailAddresses = 2
  spamProtectEmailAddresses_atSubst = @
 
  meaningfulTempFilePrefix = 50
 
  sendCacheHeaders = 1
 
  disableImgBorderAttr = 1
 
	index_enable = {$plugin.tx_basictpl.search.enable}
 
  // TYPO3 4.6 internal scriptmerger
  minifyCSS = 1
  minifyJS = 1
 
  concatenateCss = 1
  concatenateJs = 1  
}
 
plugin.tx_basictpl.page.shortcutIcon = {$path.template}/favicon.ico
plugin.tx_basictpl.page.includeJSlibs {
  jquery = EXT:basictpl/res/js/jquery/jquery.min.js
  jquery_fancybox = EXT:basictpl/res/js/jquery/fancybox/jquery.fancybox-1.3.4.pack.js
	jquery_easing = EXT:basictpl/res/js/jquery/jquery.easing.1.3.js
	jquery_slider = EXT:basictpl/res/js/jquery/jquery.bxSlider.min.js
}
 
plugin.tx_basictpl.page.includeCSS {
  file1 = EXT:basictpl/res/css/reset.css
  file2 = EXT:basictpl/res/css/text.css  
  file3 = EXT:basictpl/res/css/960.css
  file4 = EXT:basictpl/res/js/jquery/fancybox/jquery.fancybox-1.3.4.css
 
  file10 = EXT:basictpl/res/menu.css
  file11 = EXT:basictpl/res/css/typo3.css
	file12 = EXT:basictpl/res/elements.css
	file14 = EXT:basictpl/res/misc.css
 
  file20 = {$path.template}/style.css
}
 
plugin.tx_basictpl.page.includeJS {
  file10 = EXT:basictpl/res/js/page.js  
}
 
plugin.tx_basictpl.page.meta.DESCRIPTION.ifEmpty = {$meta.description}
plugin.tx_basictpl.page.config.headerComment = Website based on tGudy template by Haehnchen (Espendiller, Daniel) on themeforest.net - espend.de
 
plugin.tx_basictpl.page.config.noPageTitle = 1
plugin.tx_basictpl.page.headerData.10 = TEXT
plugin.tx_basictpl.page.headerData.10 {
  field = title
  noTrimWrap = |<title>| - {$meta.title}</title>|
}
 
 
[globalVar = GP:tx_ttnews > 0]
# seitentitel für tt_news singleViews
plugin.tx_basictpl.page.headerData.10 {
  stdWrap.data = GPvar:tx_ttnews|tt_news
  stdWrap.wrap = {DB:tt_news:|:title}
  insertData = 1
}
[global]
 
plugin.tx_basictpl.logo.img = IMAGE
plugin.tx_basictpl.logo.img {
 
  file = {$plugin.tx_basictpl.logo.path}
  file.width= {$plugin.tx_basictpl.logo.width}
 
  imageLinkWrap = 1
  imageLinkWrap.enable = 1
  imageLinkWrap.typolink {
 
    parameter.data = leveluid:0
    title = {$meta.title}
    forceAbsoluteUrl = 1
  }
   altText = {$meta.title}
}
 
plugin.tx_basictpl.sublogo.img = IMAGE
plugin.tx_basictpl.sublogo.img {
 
  file = {$plugin.tx_basictpl.sublogo.path}
  file.width= {$plugin.tx_basictpl.sublogo.width}
 
  altText = {$meta.title}
}
 
plugin.tx_basictpl.breadcrumb = COA
plugin.tx_basictpl.breadcrumb.10 = HMENU
plugin.tx_basictpl.breadcrumb.10.special = rootline
plugin.tx_basictpl.breadcrumb.10.special.range = 0 | -1
plugin.tx_basictpl.breadcrumb.10.1 = TMENU
plugin.tx_basictpl.breadcrumb.10.1 {
  noBlur = 1
  NO.linkWrap = | &raquo; ||*|| &raquo; ||*||
  CUR = 1
  CUR.ATagParams = class=active
  #CUR.doNotLinkIt = 1
}
 
[globalVar = GP:tx_ttnews|tt_news > 0]
plugin.tx_basictpl.breadcrumb.20 = RECORDS
plugin.tx_basictpl.breadcrumb.20 {
  tables = tt_news
  source.data = GPvar: tx_ttnews | tt_news
  conf.tt_news = TEXT
  conf.tt_news.field = title
  conf.tt_news.noTrimWrap= | &raquo; ||
  conf.tt_news.typolink {
 
    parameter = {page:uid}
    parameter.insertData = 1
    useCacheHash = 1
 
 
    addQueryString = 1
    addQueryString.method = GET
 
    # remove the page id from the parameters so it is not inserted twice
    addQueryString.exclude = id
 
    ATagParams = class=active
 
 
  }
 
}
[global]
 
 
 
tt_content.image.20.1.altText.field = altText // imagecaption // header
tt_content.image.20.1.titleText.field = titleText // imagecaption // header
 
plugin.tt_news.displaySingle.image.imageLinkWrap {
  JSwindow = 0
  directImageLink = 1
  linkParams.ATagParams {
    dataWrap = class="lightbox" rel="lightbox{field:uid}" title="{field:imagecaption//title}"
  }
 
  height = {$styles.content.imgtext.linkWrap.height}m
  width = {$styles.content.imgtext.linkWrap.width}m
}
 
tt_content.stdWrap.innerWrap.cObject.default.15.postCObject = TEXT
tt_content.stdWrap.innerWrap.cObject.default.15.postCObject {
  value = csc-content csc-layout-{field:layout} csc-frame-{field:section_frame}
  noTrimWrap = | |
  insertData  = 1
}
 
tt_content.stdWrap.innerWrap.cObject.default.15.postCObject.append = CASE
tt_content.stdWrap.innerWrap.cObject.default.15.postCObject.append {
  key.field = CType
 
  default = TEXT
  default.data = field:CType
  default.noTrimWrap = | csc-type-||
 
  list < .default
  list.data = field:list_type
 
  required = 1
}
 
plugin.tx_basictpl.content.wraptext = CASE
plugin.tx_basictpl.content.wraptext {
  key.field = section_frame
  default=|
  100 = TEXT
  100.value = <div class="box-content">|</div>
 
  101 < .100
}
 
tt_content.image.20.stdWrap.wrap.cObject < plugin.tx_basictpl.content.wraptext
tt_content.text.20.stdWrap.wrap.cObject < plugin.tx_basictpl.content.wraptext
tt_content.table.20.stdWrap.wrap.cObject < plugin.tx_basictpl.content.wraptext
tt_content.bullets.20.dataWrap.wrap.cObject < plugin.tx_basictpl.content.wraptext
 
#resize any image depend on colPos; this value is divided by 2 on css_styled_content
tt_content.image.20.maxW.cObject = CASE
tt_content.image.20.maxW.cObject {
  key.field = colPos
 
  default = TEXT
  default.value = {$styles.content.image.maxW}  
 
  0 = TEXT
  0.value = {$styles.content.imgtext.colPos0.maxW}
 
  1 = TEXT
  1.value = {$styles.content.imgtext.colPos1.maxW}
 
  2 = TEXT
  2.value = {$styles.content.imgtext.colPos2.maxW}
 
  3 = TEXT
  3.value = {$styles.content.imgtext.colPos3.maxW}
}
 
# we cant set maxImageWidth with CASE so wrap them in objects
# maxImageWidth: is used on "Image Only" to generate rows and cols
plugin.tx_basictpl.content.main = COA
plugin.tx_basictpl.content.main {
  5 = LOAD_REGISTER
 
  5.maxImageWidth = {$styles.content.imgtext.colPos0.maxW}
  5.contentWidth = {$styles.content.imgtext.colPos0.maxW}
 
 
  10 < styles.content.get
  15 = RESTORE_REGISTER
}
 
 
 
plugin.tx_basictpl.content.left = COA
plugin.tx_basictpl.content.left {
  5 = LOAD_REGISTER
 
  5.maxImageWidth = {$styles.content.imgtext.colPos1.maxW}
  5.contentWidth = {$styles.content.imgtext.colPos1.maxW}
 
  10 < styles.content.getLeft
  10.slide = -1
 
  15 = RESTORE_REGISTER
}
 
plugin.tx_basictpl.content.right = COA
plugin.tx_basictpl.content.right {
  5 = LOAD_REGISTER
 
  5.maxImageWidth = {$styles.content.imgtext.colPos2.maxW}
  5.contentWidth = {$styles.content.imgtext.colPos2.maxW}
 
  10 < styles.content.getRight
  10.slide = -1
 
  15 = RESTORE_REGISTER
}
 
plugin.tx_basictpl.content.border = COA
plugin.tx_basictpl.content.border {
  5 = LOAD_REGISTER
 
  5.maxImageWidth = {$styles.content.imgtext.colPos3.maxW}
  5.contentWidth = {$styles.content.imgtext.colPos3.maxW}
 
  10 < styles.content.getBorder
  15 = RESTORE_REGISTER
}
 
tt_content.stdWrap.innerWrap.cObject {
  100 < tt_content.stdWrap.innerWrap.cObject.default
  100.15.value := appendString( toggle-box)
 
  101 < tt_content.stdWrap.innerWrap.cObject.default
  101.15.value := appendString( toggle-box toggle-box-open)  
}
 
plugin.tx_basictpl.lib.menu.footer = COA
plugin.tx_basictpl.lib.menu.footer {
  10 = TEXT
  10.value = {$meta.title}
 
  15 = TEXT
  15.noTrimWrap = | - ||
 
 
  20 = HMENU
  20 {
    special = directory
    special.value = {$plugin.tx_basictpl.menu.footer.pid}
    wrap = <ul class="menu"> | </ul>
    1 = TMENU
    1 {
      noBlur = 1
      NO.allStdWrap.insertData = 1
      NO.allWrap = <li> | </li>
      NO.ATagBeforeWrap = 1
    }
 
  }
}
 
 
plugin.tx_basictpl.lib.media.singleImage = IMAGE
plugin.tx_basictpl.lib.media.singleImage {
  file = {$path.template}/img/pic-default.jpg
  file.width = 960c
  file.height = 270c
  file.import = uploads/media/
  file.import.data = levelmedia: -1, slide
  file.import.listNum = 0
  file.import.override.field = media
}
 
plugin.tx_basictpl.lib.menu.simple = HMENU
plugin.tx_basictpl.lib.menu.simple {
  1 = TMENU
  1 {
    noBlur = 1
    expAll=1
    wrap = <ul id="menu" class="nav1">|</ul>
    NO.wrapItemAndSub = <li> | </li>
    ACT = 1
    ACT.wrapItemAndSub = <li class="active"> | </li>
 
    IFSUB=1
    IFSUB{
      wrapItemAndSub = <li class="menuparent">|</li>
    }
 
    ACTIFSUB = 1
    ACTIFSUB {
      wrapItemAndSub = <li class="menuparent active">|</li>
    }
 
 
   }
 
  2 < .1
  2.wrap = <ul>|</ul>
 
  3 < .2
 
}
 
plugin.tx_basictpl.lib.grids = TEMPLATE
plugin.tx_basictpl.lib.grids {
  template = FILE
  template.file = EXT:basictpl/res/template.html
  workOnSubpart.cObject = CASE
  workOnSubpart.cObject {
    key.data = levelfield:-1, backend_layout_next_level, slide
    key.override.field = backend_layout
    default = TEXT
    default.value = 2_COLS_RIGHT
 
    {$plugin.tx_basictpl.grid.1Col} = TEXT
    {$plugin.tx_basictpl.grid.1Col}.value = NO_COLS
 
    {$plugin.tx_basictpl.grid.2ColsLeft} = TEXT
    {$plugin.tx_basictpl.grid.2ColsLeft}.value = 2_COLS_LEFT
 
    {$plugin.tx_basictpl.grid.3Cols} = TEXT
    {$plugin.tx_basictpl.grid.3Cols}.value = 3_COLS
 
    {$plugin.tx_basictpl.grid.2ColsRight} = TEXT
    {$plugin.tx_basictpl.grid.2ColsRight}.value = 2_COLS_RIGHT
 
    {$plugin.tx_basictpl.grid.2ColsSplit} = TEXT
    {$plugin.tx_basictpl.grid.2ColsSplit}.value = 2_COLS_SPLIT     
  }
 
  subparts.CONTENT < plugin.tx_basictpl.content.main
  subparts.SIDEBAR-RIGHT < plugin.tx_basictpl.content.right
  subparts.SIDEBAR-LEFT < plugin.tx_basictpl.content.left  
}
 
 
plugin.tx_basictpl.lib.body = TEXT
plugin.tx_basictpl.lib.body.noTrimWrap = |<body class="|">|
plugin.tx_basictpl.lib.body.insertData = 1
plugin.tx_basictpl.lib.body.value := addToList(page-{field:uid})
 
 
[treeLevel = 0]
plugin.tx_basictpl.lib.body.value := addToList(front)
[else]
plugin.tx_basictpl.lib.body.value := addToList(not-front)
[global]
 
[globalVar = GP:tx_ttnews|tt_news > 0]
plugin.tx_basictpl.lib.body.value := addToList(tt-news-page)
[global]
 
[globalVar = LIT:1 = {$plugin.tx_basictpl.page.animate}]
plugin.tx_basictpl.lib.body.value := addToList(bg-animate-enabled)
[global]
 
plugin.tx_basictpl.lib.body.value := addToList({$plugin.tx_basictpl.page.font})
 
[globalVar = LIT:german = {$plugin.tx_basictpl.page.language}]
plugin.tx_basictpl.page.config.language = de
plugin.tx_basictpl.page.config.locale_all = de_DE@euro
[global]
 
plugin.tt_news.templateFile = EXT:basictpl/res/templates/tt_news/tt_news_v3_template.html
 
plugin.tt_news {
  displaySingle {
    date_stdWrap.strftime= %A %e. %B %Y
    time_stdWrap.strftime= %H:%M
  }
 
  displayList {
    date_stdWrap.strftime= %A %e. %B %Y
    time_stdWrap.strftime= %H:%M
  }
 
  displayLatest {
    date_stdWrap.strftime= %A %e. %B %Y
    time_stdWrap.strftime= %H:%M
  }
 
}
 
plugin.tt_news.displayLatest.image.noImage_stdWrap {
    cObject = IMAGE
    cObject {
      wrap =
      file = GIFBUILDER
      file {
        XY = {$plugin.tt_news.latestMaxW},{$plugin.tt_news.latestMaxH}
        backColor = #010101
 
        10 = TEXT
        10 {
          text = No image
          fontSize = 14
          niceText = 1
          fontColor = #000000
          offset = {$plugin.tt_news.latestMaxW}/2-30, {$plugin.tt_news.latestMaxH}/2+4
        }
      }
    }
  }
 
plugin.tt_news._LOCAL_LANG.de.more = weiterlesen
plugin.tt_news._LOCAL_LANG.en.more = read more
 
# for search
plugin.tt_news.allowCaching=1
plugin.tx_indexedsearch.rules_stdWrap.wrap = <span class="standardtext"> | </span>
 
plugin.tx_indexedsearch {
  templateFile = EXT:basictpl/res/templates/indexed_search/indexed_search.tmpl
  show.advancedSearchLink = 0
}
 
#Buttonlink
includeLibs.userFunc= EXT:basictpl/lib/typolink.php
tt_content.text.20.parseFunc.tags.link {
  postUserFunc= user_userFunc->addSpan
  postUserFunc{
    class = button
    ATagTitle.field = title
  }
}
 
plugin.tx_basictpl.page.bodyTagCObject < plugin.tx_basictpl.lib.body
plugin.tx_basictpl.page.bodyTagCObject.value := replaceString(,| )
 
plugin.tx_basictpl.page.10 = TEMPLATE
plugin.tx_basictpl.page.10.template = FILE
plugin.tx_basictpl.page.10.template.file = EXT:basictpl/res/template.html
plugin.tx_basictpl.page.10.workOnSubpart = DOCUMENT_BODY
 
# overwrites
plugin.tx_basictpl.breadcrumb.10.1.NO.linkWrap >
plugin.tx_basictpl.breadcrumb.20.conf.tt_news.noTrimWrap >
 
 
plugin.tx_basictpl.logo.favicon < plugin.tx_basictpl.logo.img
plugin.tx_basictpl.logo.favicon.file.height = 20m
 
plugin.tx_gbh_lib.content.headercase = COA
plugin.tx_gbh_lib.content.headercase.10 < styles.content.get
plugin.tx_gbh_lib.content.headercase.10.select.where = colPos = 3
 
plugin.tx_gbh_lib.content.headercase.10.stdWrap.wrap = <div id="header-content" class="clearfix"><div id="header-content-wrapper" class="grid_16"><div class="frame"><div id="slider" class="{$plugin.tx_basictpl.page.fx}">|</div></div></div></div>
plugin.tx_gbh_lib.content.headercase.10.stdWrap.required = 1 
 
 
plugin.tx_basictpl.headeralt = TEMPLATE
plugin.tx_basictpl.headeralt.template = FILE
plugin.tx_basictpl.headeralt.template.file = EXT:basictpl/res/template.html
plugin.tx_basictpl.headeralt.workOnSubpart = ALTHEADER
 
 
plugin.tx_basictpl.headeralt.marks.TITLE = TEXT
plugin.tx_basictpl.headeralt.marks.TITLE.field = title
 
plugin.tx_basictpl.headeralt.marks.SUBTITLE = TEXT
plugin.tx_basictpl.headeralt.marks.SUBTITLE.field = subtitle
 
 
plugin.tx_basictpl.headeralt.marks.IMAGE = IMAGE
plugin.tx_basictpl.headeralt.marks.IMAGE.file {
  import =  uploads/media/
  import.field = media
  import.listNum = 0
  height = 38m
}
 
 
plugin.tx_gbh_lib.content.headercase.stdWrap {
	ifEmpty.cObject < plugin.tx_basictpl.headeralt
}
 
 
plugin.tx_gbh_lib.content.footer = COA
plugin.tx_gbh_lib.content.footer {
  5 = LOAD_REGISTER
 
  5.maxImageWidth = {$styles.content.imgtext.colPos4.maxW}
  5.contentWidth = {$styles.content.imgtext.colPos4.maxW}	
 
  10 < styles.content.get
  10.select.where = colPos = 4
  10.slide = -1
  15 = RESTORE_REGISTER
}
 
plugin.tx_gbh_lib.content.header = COA
plugin.tx_gbh_lib.content.header {
  5 = LOAD_REGISTER
 
  #5.maxImageWidth = {$styles.content.imgtext.colPos3.maxW}
  #5.contentWidth = {$styles.content.imgtext.colPos3.maxW}
	#5.maxWInText = {$styles.content.imgtext.colPos3.maxW}
 
  10 < plugin.tx_gbh_lib.content.headercase
 
  15 = RESTORE_REGISTER
}
 
plugin.tx_gbh_lib.ttcontent.textpic < tt_content.textpic.20
tt_content.textpic.20 = CASE
tt_content.textpic.20 {
  key.field=colPos
  default < plugin.tx_gbh_lib.ttcontent.textpic
  default.maxW = 490
  default.maxWInText = 700
 
	3 < .default
  3.maxW = {$styles.content.imgtext.colPos3.maxW}
  3.maxWInText = {$styles.content.imgtext.colPos3.maxW}
 
	2 < .default
  2.maxW = {$styles.content.imgtext.colPos2.maxW}
  2.maxWInText = {$styles.content.imgtext.colPos2.maxW}  
 
	1 < .default
  1.maxW = {$styles.content.imgtext.colPos2.maxW}
  1.maxWInText = {$styles.content.imgtext.colPos2.maxW}    
} 
 
plugin.tx_basictpl.page.10.subparts {
  LOGO < plugin.tx_basictpl.logo.img
  SUBLOGO < plugin.tx_basictpl.sublogo.img
 
  HMENU < plugin.tx_basictpl.lib.menu.simple
  BREADCRUMB < plugin.tx_basictpl.breadcrumb
 
	FAV < plugin.tx_basictpl.logo.favicon
 
	HEADERCONTENT < plugin.tx_gbh_lib.content.header
	FOOTER < plugin.tx_gbh_lib.content.footer 
	#temp.footer
 
  CONTENT < plugin.tx_basictpl.lib.grids
  #FOOTER < plugin.tx_basictpl.lib.menu.footer  
}
[globalVar = LIT: = {$plugin.tx_basictpl.page.color}]
 
[else]
plugin.tx_basictpl.page.CSS_inlineStyle (
#background {
  background-color: {$plugin.tx_basictpl.page.color};
}
)
 
 
[globalVar = LIT:droid = {$plugin.tx_basictpl.page.font}]
 plugin.tx_basictpl.page.headerData.100 = TEXT
 plugin.tx_basictpl.page.headerData.100.value = <link href='http://fonts.googleapis.com/css?family=Droid+Sans:400,700' rel='stylesheet' type='text/css'>
[global]
 
[globalVar = LIT:ptsans = {$plugin.tx_basictpl.page.font}]
 plugin.tx_basictpl.page.headerData.100 = TEXT
 plugin.tx_basictpl.page.headerData.100.value = <link href='http://fonts.googleapis.com/css?family=PT+Sans:400,700' rel='stylesheet' type='text/css'>
[global]
 
[globalVar = LIT:istok = {$plugin.tx_basictpl.page.font}]
 plugin.tx_basictpl.page.headerData.100 = TEXT
 plugin.tx_basictpl.page.headerData.100.value = <link href='http://fonts.googleapis.com/css?family=Istok+Web:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
[global]
 
 
 
#devel
[globalVar = TSFE : beUserLogin> 0]
config.no_cache = 1
plugin.tx_scriptmerger.css.enable = 0
plugin.tx_scriptmerger.javascript.enable = 0
[global]
 
admPanel {
  enable.edit=1
  module.edit.forceDisplayFieldIcons=1
  hide=1
  override.tsdebug.forceTemplateParsing = 1
}

Typoscript Page TSConfig

#default on: click to enlarge
TCAdefaults.tt_content.image_zoom = 1
 
#frames
TCEFORM.tt_content.section_frame.removeItems = 1,5,6,10,11,12,20,21,66
TCEFORM.tt_content.section_frame {
  addItems.50 = Frame Background
  addItems.51 = Frame Borders Round
  addItems.52 = Frame Gradient
  addItems.53 = Frame Shadow
 
  addItems.61 = Frame-Column Background
 
  addItems.100 = Togglebox Closed
  addItems.101 = Togglebox Open
}
 
#tt_news clear cache (add page id with news; commas can use)
#put 'options.clearCache.all = 1' in user/group tsconfig to allow
#TCEMAIN.clearCacheCmd = 49
 
RTE.default {
 
  # Markup options (htmlArea RTE only)
  enableWordClean = 1
  removeTrailingBR = 1
  removeComments = 1
  #removeTags = center, font, o:p, sdfield, u
  removeTagsAndContents = link, meta, script, style, title
 
  proc.entryHTMLparser_db.removeTags := removeFromList(u)
  removeTags := removeFromList(u)  
 
  # Hide infrequently used paragraph types in the paragraph type selector (formatblock button)
  hidePStyleItems = h5,h6,pre,address,div
 
  #showButtons = *
  showButtons:=addToList(underline, left, center, right, justifyfull, fontsize, textcolor, bgcolor, textindicator, copy, cut, paste, pastetoggle, pastebehaviour, pasteastext)
 
  showButtons:=removeFromList(textstyle, table, textindicator, showhelp)
 
  proc.entryHTMLparser_db.removeTags := removeFromList(u)
 
	buttons.pastetoggle.setActiveOnRteOpen = 1
}
 
 
RTE.default {
  classesAnchor:=addToList(button default)  
  classesAnchor:=addToList(button info)
  classesAnchor:=addToList(button download)
  classesAnchor:=addToList(button telephone)
  classesAnchor:=addToList(button mail)
  classesAnchor:=addToList(button home)
  classesAnchor:=addToList(button stats)  
  classesAnchor:=addToList(button link)
  classesAnchor:=addToList(button world)  
}
 
 
 
RTE.classesAnchor {
  page_button_default.class = button default
  page_button_default.type = page
 
  page_button_info.class = button info
  page_button_info.type = page
 
  page_button_home.class = button home
  page_button_home.type = page
 
  page_button_download.class = button download
  page_button_download.type = page
  page_button_download.titleText = Download
 
  page_button_telephone.class = button telephone
  page_button_telephone.type = page
 
  page_button_mail.class = button mail
  page_button_mail.type = page
 
  page_button_world.class = button world
  page_button_world.type = page  
 
  page_button_link.class = button link
  page_button_link.type = page   
 
  page_button_stats.class = button stats
  page_button_stats.type = page  
 
  mail_button_default.class = button default
  mail_button_default.type = mail
 
  mail_button_info.class = button info
  mail_button_info.type = mail
 
  mail_button_home.class = button home
  mail_button_home.type = mail
 
  mail_button_download.class = button download
  mail_button_download.type = mail
  mail_button_download.titleText = Download
 
  mail_button_telephone.class = button telephone
  mail_button_telephone.type = mail
 
  mail_buttonmail.class = button mail
  mail_buttonmail.type = mail
 
  mail_button_world.class = button world
  mail_button_world.type = mail  
 
  mail_button_link.class = button link
  mail_button_link.type = mail   
 
  mail_button_stats.class = button stats
  mail_button_stats.type = mail    
 
  url_button_default.class = button default
  url_button_default.type = url
 
  url_button_info.class = button info
  url_button_info.type = url
 
  url_button_home.class = button home
  url_button_home.type = url
 
  url_button_download.class = button download
  url_button_download.type = url
  url_button_download.titleText = Download
 
  url_button_telephone.class = button telephone
  url_button_telephone.type = url
 
  url_buttonmail.class = button mail
  url_buttonmail.type = url 
 
  url_button_world.class = button world
  url_button_world.type = url  
 
  url_button_link.class = button link
  url_button_link.type = url   
 
  url_button_stats.class = button stats
  url_button_stats.type = url    
 
  file_button_default.class = button default
  file_button_default.type = file
 
  file_button_info.class = button info
  file_button_info.type = file
 
  file_button_home.class = button home
  file_button_home.type = file
 
  file_button_download.class = button download
  file_button_download.type = file
  file_button_download.titleText = Download
 
  file_button_telephone.class = button telephone
  file_button_telephone.type = file
 
  file_buttonmail.class = button mail
  file_buttonmail.type = file   
 
  file_button_world.class = button world
  file_button_world.type = file  
 
  file_button_link.class = button link
  file_button_link.type = file   
 
  file_button_stats.class = button stats
  file_button_stats.type = file  
 
}
 
 
TCEFORM.tt_content.layout.addItems {
  21 = List Layout 1
  22 = List Layout 2
  23 = List Layout 3
  24 = List Layout 4
  25 = List Layout 5
  26 = List Layout 6
 
  41 = Box Default
  42 = Box Error
  43 = Boy Tick
  44 = Box Info
  45 = Box Warning
 
  51 = Table Layout 1
  52 = Table Layout 2
  53 = Table Layout 3
 
  61 = Submenu Layout 1
  62 = Submenu Layout 2
  63 = Submenu Layout 3
  64 = Submenu Layout 4
  65 = Submenu Layout 5 
 
  71 = Table-Compare 1
  72 = Table-Compare 2
  73 = Table-Compare 3
 
  81 = Header / Splitter 1
  82 = Header / Splitter 2
  83 = Header / Splitter 3
  84 = Header / Splitter 4
 
 
  91 = Postit 1
  92 = Postit 2
  93 = Postit 3
  94 = Postit 4
  95 = Postit 5
  96 = Postit 6
  97 = Postit 7	
}
 
tx_multicolumn.config.advancedLayouts.makeEqualElementBoxHeight.includeFiles >

Disqus - noscript

nice work 
also a good looking template layout 
super Arbeit ... und sowas kriegst du nicht verkauft ?

leider nicht; also lieber die finger von themeforest lassen.
Die bestimmen übrigens die preise selber und nehmen sich 50% der einnahmen.
He, der Preview sieht gut aus, wenns funktioniert kannst du mir gerne dein Paypal account Mailadresse zusenden... :-)
ich kann dir sagen das die Template sehr gut funktioniert. Verwende es mit meiner Webseite.
Einfach zu installieren und nicht zu kompliziert. Das Css 960 Grid System in Kombination mit der Multicolumn Extension funktioniert sehr gut. 

Hallo noch mal, ich mache ernst. Das Ding funktioniert Klasse. Kann überhaupt nicht verstehen warum es bei Themeforest nicht genommen wird. Da habe ich für 35$ schon richtigen Müll gekauft. Sende mir bitte Deine e- mail Adresse weil den Themforest Basis Preis sehr gerne an Dich zahlen werde. Das Theme ist gut gemacht. Ich finde es inspirierend,mit tollen Optionen. Gibt es bei dir eine booking option für unser developer Netzwerk? Würde mich freuen Jazzie :-)
wie gerade schon per mail genannnt...
per Paypal kann man mich unter daniel@espendiller.net erreichen. :)
Hallo,
gerade über die Seite gestoßen. Ich war auf der Suche nach typo3 + slider und bin nicht fündig geworden. Mir gefällt das template sehr sehr gut. Allerdings fehlt m.E. wirklich noch ein ganz klein wenig Schliff. Das Menü könnte noch ein klein wenig schicker sein - der kastige Hintergrund der Untermenüpunkte wirkt etwas überholt
Und allgemein bei der Auswahl der Schrift könnte noch eine etwas gefälligere verwendet werden. Vielleicht liegt es auch nur an der harten schwarzen Farbe...
Hoffe ich habe ermuntert und nicht entmutigt! ;-)
viel erfolg!