iFF... Version: 6.x
Transcrição
iFF... Version: 6.x
Entwicklertemplate für die YAML Nutzung in TYPO3 Basis-Extension: iFF... Version: 6.x Neuigkeiten: • Durch einen neuen Namen und damit verbundene neue Konstanten wird deutlich gemacht und sichergestellt dass es kein einfaches Upgrade vom Entwicklertemplate 1.x und 2.x geben wird (was aber auch keine Notwendigkeit ist). • Das Entwicklertemplate basiert auf TYPO3 6.1.x (mit erscheinen der 6.2 LTS wird dies dann eingebunden) und auf der aktuellen Version von YAML 4.1.0 • Es wird grundsätzlich auf CSS3 aufgebaut (für den IE ist das PIE Framework integriert) • Alle notwendigen Daten sind direkt in der Extension enthalten und können so ins fileadmin kopiert werden (später gibt es dafür ein Backendmodul). • Auf mehrere Fremdextensions wurde verzichtet und die entsprechende Funktionalität mit Standard Typoscript aufgebaut. • Man kann das komplette Template und die Konstanten auch ohne Fremdsprachen betreiben (es gibt Zusatztemplates für die erste, 2 weitere, und noch 3 weitere Fremdsprachen). • Es gibt eine neue Dateistruktur um Multidomainprojekte innerhalb einer Installation sauber zu trennen (dafür bitte den TYPO3 Standardordner user_upload NICHT nutzen.. • Es gibt nur 1einziges Fluidtemplate für die Ausgabe aller Templatevarianten und ein LESS Stylesheet für das zentrale Laden aller weiteren Dateien. Es gibt eine feste Namensvorgabe für die modification Stylesheets und Patchfiles. • Es wird OHNE Templavoila gearbeitet (eine Ergänzung ist nicht geplant), dafür mit den neuen Gridlayouts für das Backend und beliebige Contentelemente. Damit werden Spaltenelemente, Accordion, Tabs aufgebaut. • Das TYPO3 Standardformular mit der neuen Extension forms wurde so konfiguriert das der Code entsprechend dem YAML Formularbaukasten erzeugt wird (alternativ ein formhandler Beispielformular). • YAML Zusatzelemente werden in der Extension mit zur Verfügung gestellt. • etc. ...viele weitere Anpassungen wie eine aktuelle RTE Konfiguration für TYPO3 6.1 und auch eine weitere RTE-Konfiguration in der alle Möglichkeiten freigeschaltet sind. Grundsätzliches: Aber trotzdem möchte ich noch betonen, das Entwicklertemplate ist kein "Click & Ready" Webseitenbaukasten, es dient dazu strukturiert mit TYPO3, YAML und CSS zu arbeiten. Ohne CSS und TypoScript Kenntnisse wird es einem schwer fallen damit richtig zu arbeiten. Aber es wird einem durch TypoScript und CSS-Beispiele und ab und an ein Blick in die Dokumentation von YAML, doch deutlich vereinfacht mit diesem komplexen Thema umzugehen. Wenn ich noch eine Empfehlung abgeben darf, ich persönlich arbeite im Backend von TYPO3 aufgrund der Geschwindigkeit am liebsten mit dem Google Chrome und für die Frontendkontrolle mit dem um die AddOns Firebug und TYPO3 Workbench erweiterten Mozilla Firefox. Euer Texteditor sollte mit .ts Dateien umgehen können (am besten mit TypoScript highlighting) und sauberes utf8 speichern. Bei mir hat sich da der PSPad mit der Erweiterung SweeTS sehr bewährt. Dateistruktur: Im fileadmin wird für jedes Projekt was innerhalb dieser TYPO3 Installation gepflegt wird ein eigener Projektordner angelegt (hierauf kann man zwar verzichten, sollte das aber eigentlich nur dann tun, wenn wirklich die zukünftige Wahrscheinlichkeit, das man mehrere Projekte in dieser Installation pflegt, gegen Null geht). In einem solchen Fall dann einfach den gesamten Inhalt des project Ordners direkt in fileadmin kopieren und als projectDir nachher fileadmin/ setzen (ohne dann einen eigenen Projektordner zu haben). In allen anderen Fällen wäre die Projektvorbereitung wie folgt: 1. den project Ordner aus der Extension typo3conf/ext/iff/Resources/ in fileadmin kopieren und sinnvoll umbenennen (zukünftig wird dies beides über ein BE-Modul auf Klick möglich sein) 2. den darin enthaltenen Layoutordner project/template_data/layout/ ebenfalls sinnvoll umbenennen (das Umbenennen ist aus dem Grunde unerlässlich, wenn man später sich noch einmal die Ursprungsordner per KlickCopy holt, damit nicht die eigene Arbeit gelöscht wird) (vielleicht etwas in der Art wie: relauch2013special) 3. In der Datei project/template_data/layout/config/project/pageTSconfig.ts (ich nehme übrigens in allen Pfadbeschreibungen die originalen Ordnernamen, da ich Ihre Modifikationen ja nicht kennen kann) dann bitte die nötigen Pfadkonstanten anpassen, und, da es leider nicht anders geht auch die vorhandenen vollen Pfadangaben (in der Auslieferung der Extension ist das alles auf den Pfad typo3conf/ext/iff/Resources/project/... gesetzt, im Komplettpaket liegen die Dateien zwar schon unter fileadmin/project/ vorhanden, genutzt werden trotzdem die Daten im Extensionverzeichniss, ALSO BITTE ÄNDERN, siehe unten ! Es existiert dann folgende Dateistruktur im fileadmin: project content_data alle Daten die von Redakteuren gepflegt werden (individuelle Unterordner) NICHT user_upload nutzen (keine Multiprojektfähigkeit) dummyContent wie der Name schon sagt (nach LIVE Schaltung löschen) template_data alles rund um das Template selber _flags einige Flaggen _fonts einige Schriften _additional JS, PIE, sonstige nicht layoutspezifischen Dinge _frameworks yaml_410 vom Layout genutztes Framework (Name >>> Pfad-Angaben) (hier der yaml core in der aktuellen 4.1 Version) xxx mögliches weiteres Framework (wie z.B. Twitter-bootstrap, 960 oder blueprint) (bei Bedarf sind weitere _basis oder layout Ordner beliebig erweiterbar) layout das eigentliche Layoutverzeichniss archiv einfach nur ein Archivordner (PSD und andere Dateien...) config basic basic TS zum Zeitpunkt der Installation (könnte anstelle des stat. Templates genutzt werden) project layoutspezifische Typoscript Konfigurationsdateien (HIER die Pfad-Angaben in der pageTSconfig.ts) page css zentrales css des Layouts (beliebig erweiterbar) navigation diverse Navigationen screen Screen Ausgabe des Layouts print Print Ausgabe des Layouts (folgt später) patches Patches für den IE sonstiges z.B. modifizierte jquery Themes html fluid das fluid template für alle Versionen autoparser für reine html Alternativen ohne fluid (folgt später) images alle Bilddaten zum layout (individuelle Unterordner – vorhandene bitte nicht ändern) extensions alles für die lokale Anpassung von Extensions (individuelle Unterordner - extensionkey) (darin nochmal individuelle Unterordner – css images etc.) scripts zum Layout gehörige Scripte (individuelle Unterordner) Die grünen Ordnernamen sind über Konstanten definiert und damit variabel. Die roten Ordnernamen sind fest vorgegeben (in Pfaden vorhanden) also nicht ändern !!! Installieren des Kompletpakets: Mit dem Scriptistaller (nur für Linuxserver geeignet) Hier gibt es 2 verschiedene Möglichkeiten, entweder in ein leeres DocRoot Verzeichniss oder es existiert schon eine leere TYPO3 Version (empfehlen würde ich den ersten Weg). 1.) NEU-Installation ... Vorbedingung: es existiert eine leere utf8-general Datenbank. Aus dem Paket iFF_6.x.x-instaler.zip die Datei iFF_6.x.x_complete_instaler.php in das Verzeichniss für Ihre Installation kopieren. Die PHP-Datei editieren und folgende Zeilen entsprechend der aktuellen Versionen anpassen und speichern (ohne späteres Upgrade natürlich nur eine TYPO3 Version aus dem gleichen Zweig – derzeit 6.1.x): define('TYPO3VERSION','6.1.1'); define('IFFVERSION','6.1.0'); und im Browser über die passende URL aufrufen. Wenn der Scriptinstaller die nötigen Rechte auf dem Server hat (shell_exec – wget – tar – mv – rmdir -rm – ln – find – touch), dann werden jetzt alle nötigen Dateien von der TYPO3 Seite und von imageFORMAT gezogen (wenn nicht, dann haben Sie leider Pech gehabt). Nach einiger Zeit finden Sie am Ende der langen Liste einen Link zum TYPO3 1-2-3 Installer. Den anklicken und den drei Installations-Schritten folgen: • • • MySQL Zugangsdaten eingeben. Ihre Datenbank wählen. iFF Paket importieren Anschließend in das Install Tool wechseln und dort als erstes das Passwort ändern. Prüfen sie nun ob das InstallTool auf der Basisseite Fehler meldet. Ebenso sollten sie jetzt prüfen ob der Pfad und die Art des installierten Grafiktools (IM – GM) stimmt, also das die Bilderzeugung klappt. Den Titel dieser Installation sollten sie jetzt auch vergeben und den Encryptionkey ändern. Abschließend können Sie das Install Tool verlassen. (Weiter bei "Beginn mit dem ...") 2.) TYPO3 ist schon vorhanden ... In dem Fall nutzen Sie die Datei: iFF_6.x.x_barebone_instaler.php – Die TYPO3 Sources werden in dem Fall nicht neu geladen und es wird eine Sicherheitskopie der localconfConfiguration.php erstellt (hier finden Sie die Zugangsdaten zur bestehenden Datenbank wenn diese genutzt werden soll). Ansonsten würde ich auch in diesem Fall empfehlen mit einer leeren Datenbank zu beginnen (ist einfacher und problemloser als sich mit Inhalten einer bestehenden rumzuplagen). Die Sicherheitskopie der localconfConfiguration.php anschließend mit der neuen abgleichen, ob vorher etwaige Serverspezifischen Einträge dort vorhanden waren, wie z.B. Grafiktools etc. Und entsprechend übertragen. Anschließend weiter wie oben mit dem 123Installer (http://domain.com/typo3/install)... Manuell Die Datei iFF_6.x.x-complete.tgz auf dem Webserver im docroot der Domain entpacken (hierzu ist ein shell Zugang über SSH nötig), oder die Datei iFF_6.x.x-complete.zip lokal entpacken und den Inhalt per FTP hochladen (Einstellung des FTP Clients auf binary). Beginn mit dem installierten Komplettpaket: Unter der Vorraussetzung dass jetzt im fileadmin die Ordner project und layout (der Unterordner in template_data) umbenannt sind (ich belasse sie hier im weiteren aber bei dem Original), und dass die entsprechenden Konstanten in der Datei .../config/project/pageTSconfig.ts geändert sind, müssen jetzt noch folgende Pfade angepasst werden: • Seiteneigenschaften der Rootseite auf der Karteikarte Ressourcen im Tsconfig <INCLUDE_TYPOSCRIPT: source="FILE: fileadmin/project/template_data/layout/config/project/pageTSc onfig.ts"> • im Setupfeld des 10_basic Templates <INCLUDE_TYPOSCRIPT: source="FILE: fileadmin/project/template_data/layout/config/project/setup.ts"> • im Konstantenfeld des 10_basic Templates <INCLUDE_TYPOSCRIPT: source="FILE: fileadmin/project/template_data/layout/config/project/constants.ts"> • wenn entsprechende Dateien bestehen (ist aber in der Grundsituation des Templates nicht gegeben) auch noch im userTSconfig Feld der Benutzer/Benutzergruppen Nach dem Löschen des Cache (falls er auch schon während der Entwicklung aktiviert ist ... ich habe aus diesem Grund im Setup des Roottemplates am Anfang die Zeile config.no_cache = 1 eingebaut, dieses ist nur für die Entwicklung, vor der Live Nutzung bitte auskommentieren) werden nun alle Daten aus dem fileadmin/project/template_data/layout/... gezogen. Einbindung von TypoScript Basistemplates: Das iFF statische Template sollte nach den statischen Templates der Extensions eingebunden werden, weil es einige Konstanten und Einstellungen gibt die die Grundeinstellungen von Extensions überschreiben sollen. Aus dem Grunde sind im SysOrdner für das Layout, ich nenne ihn myLayout (zwingend ist es zwar nicht, aber dieser sollte aus Gründen der Übersichtlichkeit auch möglichst umbenannt werden) auch mehrere Templatedatensätze vorhanden. 1. ein Startlayout (von mir meist 00_myLayout_loader genannt, kann problemlos, und sollte aber gerne auch sinnvoll umbenannt werden) – dieses wird von der Rootseite aus eingebunden und lädt alle weiteren Layouts nach. 2. das Basislayout von iFF (von mir 10_basic genannt) mit den statischen Templates aller Extensions und als letztes das von iFF sowie im Constants und Setup Feld dann die INCLUDE Befehle für die projectabhängigen Konstanten und das Typoscript Setup. 3. und beliebige weitere Templates wenn man Typoscript Anweisungen nicht in den Projektfiles haben will, sondern in der Datenbank. Namensgebung der "Backend Layouts" Diese Namensgebung der vorhandenen Layouts nach dem Muster MCS ist zwingend. • M = Menüspalte • C = Contentspalte (Hauptinhalt) • S = Seitenspalte Für neu angelegte BE-Layouts können natürlich eigene Namen (ohne Leer- und Sonderzeichen, dies ist nicht getestet) genutzt werden, aber es ist folgendes zu bedenken: Die Namen der BE-Layouts werden automatisch mit in die Namen der zu ladenden CSS Dateien eingebaut, genauso wie der in der Konstante iFF.conf.layoutStyle gesetze LayoutStyle. Wenn man also mit den std Style arbeitet (die Reihenfolge im Quelltext ist dann MSC, ich persönlich würde empfehlen so zu arbeiten, weil YAML da die größte Flexibilität bietet), und z.B. nur ein CM Layout nutzt (also nur die Contentspalte links und rechts das Menü), dann werden automatisch folgende CSS Dateien eingebunden: mod-std-CM.css und für den IE patch-std-CM.css Für den Fall des seo Style (sorry für diese Namensgebung, ich persönlich sehe das zwar anders, aber es gibt viele die aus SEO-Gründen den Hauptinhalt im Quelltext vorne haben wollen, also eine Reihenfolge CSM) würden dann folgende CSS Dateien eingebunden werden: mod-seo-CM.css und für den IE patch-seo-CM.css ... wie gesagt, ich biete hier die Möglichkeit, kann die Gründe für die Nutzung dieses layoutStyles aber selbst nicht recht teilen (auch aufgrund von eigenen Testreihen ... diese Einstellung teilt übrigens auch der YAML Entwickler Dirk Jesse). Für den Einsatz in responsive Webseiten kann die seo einstellung dagen wirklich Sinn machen, da dadurch bei kleinen Bildschirmen die Seitenspalten erst NACH dem Hauptinhalt erscheinen (ein wichtiges Menü sollte sich dann aber dort nicht befinden) Wiederverwendbarkeit von Layouts Um ein erstelltes Layout mehrfach zu nutzen, sollte man dafür sorgen dass das gesammte grundsätzliche TypoScript in Dateien abgelegt ist (im entsprechenden Layout Ordner). Spezielle Seitenspezifische Anpassungen die nicht wieder verwendet werden sollen können ruhig in den Templatedatensätzen der Datenbank verbleiben. Ähnliches gilt für die CSS Anweisungen die an eine Seiten-UID gekoppelt sind, diese würde ich in eine Extra Datei auslagern die nach einem Transfer dann entsprechend angepasst oder gelöscht wird. Pfade sollten niemals direkt angegeben werden, sondern immer mit Hilfe der dafür vorgesehenden Konstanten. {$projectDir}{$templateDir}{$layoutDir}... Ebenfalls ist es wichtig wenn zusätzliche Extensions zum Einsatz kommen, das dieses dokumentiert ist, damit am Zielsystem die entsprechenden Extensions installiert werden können. ... Unter diesen Vorraussetzungen braucht man eigentlich nur ein .t3d des SysOrnders myLayout (oder wie immer man ihn genannt hat – ich nehme dafür gerne Nummern) erstellen (ohne die Standard BE-Layouts) und im Layoutordner speichern. Dann diesen Layoutordner packen und auf das Zielsystem (natürlich mit einem funktionierend installierten iFF) transferieren. Dort die Datei in template_data entpacken. Den Projektnamen anpassen in den Konstanten der Datei config/project/pageTSconfig.ts Das .t3d im Sysordner "TemplateStorage" extrahieren. Und letztlich, wie schon bei der Installation, jetzt nur mit den neuen Pfadangaben: • Seiteneigenschaften der Rootseite auf der Karteikarte Ressourcen im Tsconfig <INCLUDE_TYPOSCRIPT: source="FILE: fileadmin/project/template_data/layout/config/project/pageTSconfig.ts"> • im Setupfeld des 10_basic_loader Templates <INCLUDE_TYPOSCRIPT: source="FILE: fileadmin/project/template_data/layout/config/project/setup.ts"> • im Konstantenfeld des 10_basic_loader Templates <INCLUDE_TYPOSCRIPT: source="FILE: fileadmin/project/template_data/layout/config/project/constants.ts"> • wenn entsprechende Dateien bestehen (ist aber in der Grundsituation des Templates nicht gegeben) auch noch im userTSconfig Feld der Benutzer/Benutzergruppen Stile im RTE nutzen Neben den schon vorher bekanten Block- und Textstilen (es gibt ein/zwei die mit HTML5 nicht so richtig wollen) gibt es im RTE nun auch die YAML Buttons. Die Textstile wirken sich nur auf Links aus, und sind wie folgt zu setzen: • Erst den Text schreiben • Text markieren und Verlinkung setzen • Cursor im Link plazieren • Textstil ym-button wählen • und nochmal Textstil ym-XXX wählen (für einen besonderen Typ) speichern und im FE prüfen (im RTE selber wird nur ein Link angezeigt) Wenn man den ym-button weglässt, dann wird ein designter Link ausgegeben. Als Blockstil kann man die Buttons und Auszeichnungen auch verwenden (habe ich aber nicht weiter getestet). Die HTML5 Auszeichnungen im RTE sind wie folgt zu bedienen. • Als erstes den kompletten Text schreiben. • Alles markieren und Article wählen • Unterabschnitte Markieren und Header/Behälter/Aside/Footer setzen • Im Quelltext wird nun <article> <header> <section> <aside> <footer> ausgegeben. • !!! Ein Styling ist hierfür NICHT implementiert !!! Weitere Themen: Bitte mir weitere Unterbereiche mitteilen die in diese Doku mit einfließen sollen. Dazu mir einfach fehlende Überschriften mailen ([email protected]) oder auch komplette Texte wenn mich jemand unterstützen will... Ich werde das Manual übrigens noch mit einigen Screenshots auffüllen, aber meine vorbereiteten Bilder sind mir leider "abhanden gekommen"... Konstanten (mit ihren Default Werten): feste Konstanten PAGE_TARGET = _self styles.content.imgtext.captionSplit = 1 styles.content.imgtext.imageTextSplit = 1 styles.content.loginform.pid = 14 content.pageFrameObj = [browser = msie] iFF.conf.doctypesw_cond = 1 [else] iFF.conf.doctypesw_cond = 0 [end] iFF.conf.url.protocol = http [globalString = IENV:TYPO3_SSL=1] iFF.conf.url.protocol = https [global] plugin.tt_news { pid_list = 27 singlePid = 8 } plugin.tx_news { view.layoutRootPath = {$iFF.projectDir}{$iFF.templateDir}{$iFF.layoutDir}extensions/news/Layouts/ view.partialRootPath = {$iFF.projectDir}{$iFF.templateDir}{$iFF.layoutDir}extensions/news/Partials/ view.templateRootPath = {$iFF.projectDir}{$iFF.templateDir}{$iFF.layoutDir}extensions/news/Templates/ } plugin.tq_seo.metaTags { keywords = meine Keywords description = meine Description copyright = mein Copyright email = author = Mein name publisher = language = {$if_yaml.lang.std.isoCode} distribution = rating = revisit = 7 geoPositionLatitude = geoPositionLongitude = geoRegion = geoPlacename = picsLabel = useLastUpdate = 1 useDetectLanguage = 1 useCanonical = 1 useExpire = 1 p3pCP = p3pPolicyUrl = linkGeneration = 1 } plugin.perfectlightbox { libraryToUse = jquery includeJSLibrarys = 0 } plugin.tx_scriptmerger { css { addContentInDocument = 0 minify.ignore = \.min\. compress.ignore = \.gz\. merge.ignore = } javascript { parseBody = 0 addBeforeBody = 0 doNotRemoveInDocInBody = 1 addContentInDocument = 0 minify.useJSMinPlus = 1 minify.ignore = \?,\.min\. compress.ignore = \?,\.gz\. merge.ignore = \? } } variablel über Konstanteneditor zu setzen (es kann noch einige Konstanten geben die nur in der Vorversion genutzt wurden, also jetzt in iFF überflüssig sind, sorry...) IFF.BASICS iFF.layoutHtmlName = Filename HTML layout type=string iFF.layoutCssName = Filename central CSS stylesheet type=string iFF.layoutPatchName = Filename IE patchfile type=string iFF.conf.overrideCssFromTemplateHead = 0 override CSS from Template Head type=options[No=0,Yes=manCSS] iFF.conf.specialTypeSite = 1 specialTypeSite, maybe Full Page Layout type=boolean iFF.conf.specialTypeSiteWrapBegin = <div class="ym-wrapper"><div class="ym-wbox"> special wrap in main areas: will be wrapped when specialTypeSite is set to "yes" ... must be set in 2 parts type=string iFF.conf.specialTypeSiteWrapEnd = </div></div> special wrap in main areas: will be wrapped when specialTypeSite is set to "yes" ... must be set in 2 parts type=string iFF.conf.docTypeToUse = html5 Doctype to use:Be careful and change this setting only if you know, what you are doing. Otherwise your pages might NOT be valid. type=options[HTML5=html5,XHTML 1.0 Transitional=xhtml_trans,XHTML 1.0 Frameset=xhtml_frames,XHTML 1.0 Strict=xhtml_strict,XHTML 1.1=xhtml_11,XHTML 2=xhtml_2,NO doctype at all=none] iFF.conf.autoHideIfEmpty = 1 AutoHide main areas if empty type=boolean iFF.conf.templatingEngine = fluid Templating Engine: first, only fluid is working type=options[Manuell=0,Autoparser=autoparser,Fluid=fluid,Templavoila=templavoila] iFF.conf.layoutStyle = std Layout Style:Choose one of the "std" or "seo" layouts. type=options[noLayoutStyle=0,seo_Layout=seo,std_Layout=std] iFF.conf.switchMenuAndSideContent = 0 switchMenuAndSideContent:not recomended ... in a std layout the normal menuposition is col1, here this switches to col2... in the seo Style the normal menu position is col3, here this switches to col2... maybey there are some iritating labels !!! type=boolean iFF.conf.pageCID = ABC customID:this is a custom clas for the body tag type=string iFF.conf.url.simStatDocOn = 0 Use simulateStaticDocuments?:If you are NOT using realURL, you can use simulateStaticDocuments instead. You CANNOT use this in conjunction with realURL. If enabled, the next 3 option are important for simulateStaticDocuments and must be either left at its default values or set to values that fit your needs. No extension is required, everything is included in TYPO3 already. IMPORTANT: Apache-module mod_rewrite must be installed on your webserver and you need a file named .htaccess in the root of your webserver. type=boolean iFF.conf.url.simStatDocAddTitle = 40 Add pagetitle:If not zero, TYPO3 generates urls with the title in, limited to the first x number of chars. If set to zero (0) this feature is turned off. type=int+ iFF.conf.url.simStatDocPenc = md5 Encode additional parameters:Allows you to also encode additional parameters into the simulated filename. If you don't understand this, just leave the default setting. type=options[base64,md5] iFF.conf.url.simStatDocPencOnlyP = cHash, tx_ttnews[backPid], tx_ttnews[tt_news], tx_ttnews[pS], tx_ttnews[pL], tx_ttnews[arc], tx_ttnews[cat], tx_ttnews[pointer], tx_ttnews[swords] List of variables:A list of variables that may be a part of the md5/base64 encoded part of a simulate_static_document virtual filename. type=string iFF.conf.url.realUrlOn = 0 Use realurl?:Enable this feature only, if you have installed the TYPO3 extension realurl. IMPORTANT: You have to configure realurl by means of its documentation. Read it! If you enable this feature, simulateStaticDocuments is switched off automatically, no matter what you set there. The option tx_realurl_enable = 1, which is required by realurl, is set automatically, if this feature is enabled. Do not forget to set Base URL also. type=boolean iFF.conf.url.coolUriOn = 0 Use cooluri?:Enable this feature only, if you have installed the TYPO3 extension cooluri. IMPORTANT: You have to configure cooluri by means of its documentation. Read it! If you enable this feature, simulateStaticDocuments is switched off automatically, no matter what you set there. The option tx_cooluri_enable = 1, which is required by cooluri, is set automatically, if this feature is enabled. Do not forget to set Base URL also. type=boolean iFF.conf.url.userBaseUrl = / Base URL:DEPRECIATED - use iFF.conf.url.userBaseHost instead. When using, then use it including protocol and the trailing slash '/'). type=string iFF.conf.url.userBaseHost = www.changeme.tld Base URL:YOU MUST CHANGE this default-setting to YOUR domain. Use the same format as the defaultsetting (without protocol and the trailing slash). type=string iFF.conf.url.userBaseHostSSL = www.changeme.tld Base URL SSL: Use the same format as the default-setting (without protocol and the trailing slash). type=string iFF.conf.url.userBaseHostAlt = www.changeme.tld Base URL alternativ: Use the same format as the default-setting (without protocol and the trailing slash). type=string iFF.conf.url.userBaseHostAltSSL = www.changeme.tld Base URL alternativ SSL: Use the same format as the default-setting (without protocol and the trailing slash). type=string iFF.conf.url.userPrefixLocalAnchors = all Prefix local anchors:If realurl or cooluri is used and this feature is set to one of the keywords, the content will have all local anchors in links prefixed with the path of the script. Basically this means that <a href="#"> will be transformed to <a href="path/path/script?params#">. This procedure is necessary if Base URL is set. (all = the content is always processed before it may be stored in cache. cached = only if the page is put into the cache. output = only the output code just before it's echoed out.) type=options[all,cached,output] iFF.conf.userAdmPanelOn = 0 Admin-Panel, enable:If set, the admin panel appears in the bottom of pages. NOTE: In addition the panel must be enabled for non-admin users as well, if you want this, using the TSconfig for the non-admin user! See adminguide documentation. type=boolean iFF.conf.userIndexingOn = 0 Indexing at all, enable:Enables cached pages to be indexed. Must be enabled to get indexed_search to work. type=boolean iFF.conf.userIndexExternalsOn = 0 Indexing external documents:If set, external media linked to on the pages is indexed as well. Certain software must to be installed on your webserver to use this feature. See indexed_serach documentation. type=boolean iFF.conf.userIndexMetaTagsOn = 0 Indexing metatags:If set, all words contained in the metatags will be also be indexed. Should be turned on only in special circumstances. type=boolean iFF.conf.userXhtmlCleaning = all XHTML cleaning:Tries to clean up the output to make it XHTML compliant and a bit more. (all = the content is always processed before it may be stored in cache. cached = only if the page is put into the cache. output = only the output code just before it's echoed out.) type=options[all,cached,output] iFF.conf.userHtmlTagDir = ltr Text direction:Sets text direction for whole document (useful for display of Arabic, Hebrew pages). Basically the value becomes the attribute value of "dir" for the <html> tag. (ltr = Left-To-Right, rtl = Right-To-Left) type=options[ltr,rtl] iFF.conf.userDisablePrefixComment = 1 Prefix comments off? This is for debugging your TypoScript Code. If switched On, HTML comments are added like <!-- Output of lib.header.20 [begin] --> and <!-- Output of lib.header.20 [end] --> to find the output of an element easier in HTML source. The COA-Elements must be prepared to do this. Turn off for production environments! type=boolean iFF.conf.devFillerLinkOn = 0 FillerLinks for development:If switched On, automatic filler links will be added... type=boolean iFF.conf.accessKeysAndDfnOff = 1 Access Keys Off?:Switch off alle access keys used in menus. type=boolean iFF.conf.accessKeyHelpOff = 1 Access Key Help Off?:If access keys are switched on, they can be shown after the pagetitle (e.g. (ALT-E)) if this feature is enabled. type=boolean iFF.conf.pieFix.switchOff = 1 PIE-CSS-fix, switchOff:For use CSS3 functions shadow, border-radius, transparent png, etc... type=boolean iFF.conf.pieFix.path = typo3conf/ext/tyaml/res/std_project/extra_data/scripts/PIE/PIE.htc PIE-CSS-fix, path: type=string iFF.conf.headerComment = developer template Header Comment:Your own copyright notice... type=string iFF.conf.seo.MouseOverOrder = subtitle // abstract // description SEO - MouseOver order: options[deaktiviert=0, abstract // description // subtitle , abstract // subtitle // description , subtitle // abstract // description] iFF.conf.spamProtect.switchOff = 0 SpamProtect, switch offf: type=boolean iFF.conf.spamProtect.level = 5 SpamProtect level type=options[1,2,3,4,5,6,7,8,9] iFF.conf.spamProtect.atSubst = @ SpamProtect atSubst String:Substitute the @ with theese string... type=string iFF.conf.spamProtect.lastDotSubst = . SpamProtect lastDotSubst String:Substitute the last . with theese string... type=string iFF.conf.spamProtect.additional.switchOff = 1 SpamProtect additional switchOff: type=boolean iFF.conf.spamProtect.additional.marker = -noSpam SpamProtect additional String:You can define your own string (hidden in mails)... type=string IFF.LANGUAGE iFF.lang.templateUsesLanguages = 0 Languages to use:If set to empty, ''ALL'' languages found in table sys_language will be used. Provide a comma separated list (e.g. 2,5,8) to use languages with corresponding UIDs only. type=string iFF.lang.std.UID = 0 LANG(std) UID : UID of your default language (usually ALWAYS 0) type=string iFF.lang.std.isoCode = en LANG(std) ISO-Code : ISO-Code of the standard language. ISO code like en, dk, de, no, it, and so on. type=string iFF.lang.std.locale = en_EN LANG(std) Locale-Setting : Locale-Settingof the standard language. This is a bit tricky, because it depends on your webserver. Try different settings if dates and times are not shown correctly. On Windows-servers use the literals e.g. "german", on Linux-servers try to use the codes (e.g. de_DE*) according to the language you use. To find out which locales are installed on your Linux-Server, type 'locale -a' in a shell. Possible values are e.g. german, english (for Windows) or de_DE, de_DE@euro, de_DE.iso88591, de_DE.iso885915@euro, de_DE.utf8, en_US, en_US.iso88591, en_US.iso885915, en_US.utf8 (for Linux). type=string Zu allen iFF.lang.std. Konstanten (hier und in anderen Bereichen) gibt es in den Zusatzbasistemplates (iFF-lang-1 ... iFF-lang-23 ... iFF-lang-456) die entsprechenden Versionen für die Fremdsprachen: • • • • • • 1st 2nd 3rd 4th 5th 6th IFF.AREA iFF.area.tops.switchOff = 1 TOPS, switchOff: type=boolean iFF.area.tops.outerWrap = <div id="tops"> | </div> ... wrap around :Tops area, wrap around type=wrap iFF.area.tops.innerWrap = <div class="inner"> | </div> ... innerWrap : Tops area, innerWrap type=wrap iFF.area.header.switchOff = 0 HEADER, switchOff: type=boolean iFF.area.header.outerWrap = <header id="header"> | </header> ... wrap around : Header area, wrap around type=wrap iFF.area.header.innerWrap = <div class="inner"> | </div> ... innerWrap : Header area, innerWrap type=wrap iFF.area.nav_main.switchOff = 0 NAV-MAIN, switchOff: type=boolean iFF.area.nav_main.outerWrap = <nav id="nav_main"> | </nav> ... wrap around : Nav-Main area, wrap around type=wrap iFF.area.nav_main.innerWrap = <div class="inner"> | </div> ... innerWrap : Nav-Main area, innerWrap type=wrap iFF.area.teaser.switchOff = 0 TEASER, switchOff: type=boolean iFF.area.teaser.outerWrap = <div id="teaser">|</div> .. wrap around : Teaser area, wrap around: type=wrap iFF.area.teaser.innerWrap = | ... innerWrap : Teaser area, innerWrap: type=wrap iFF.area.main (not used) iFF.area.functions.switchOff = 0 FUNCTIONS, switchOff: type=boolean iFF.area.functions.outerWrap = <div id="functions"> | </div> ... wrap around : Functions area, wrap around: type=wrap iFF.area.functions.innerWrap = <div class="inner"> | </div> ... innerWrap : Functions area, innerWrap: type=wrap iFF.area.extended.switchOff = 0 EXTENDED, switchOff: type=boolean iFF.area.extended.outerWrap = <div id="extended"> | </div> ... wrap around : Extended area, wrap around: type=wrap iFF.area.extended.innerWrap = <div class="inner"> | </div> ... innerWrap : Extended area, innerWrap: type=wrap iFF.area.footer.switchOff = 0 FOOTER, switchOff: type=boolean iFF.area.footer.outerWrap = <footer id="footer"> | </footer> ... wrap around : Footer area, wrap around: type=wrap iFF.area.footer.innerWrap = <div class="inner"> | </div> ... innerWrap : Footer area, innerWrap: type=wrap iFF.area.ads.switchOff = 1 ADS, switchOff: type=boolean iFF.area.ads.outerWrap = <div id="adstest"> | </div> ... wrap around : Ads area, wrap around: type=wrap iFF.area.ads.innerWrap = | ... innerWrap : Ads area, innerWrap: type=wrap IFF.NAVIGATION iFF.nav.linkWrap = | LinkWrap all navigations: type=wrap iFF.nav.menuClass = menu Standard menu class for wrapping div: type=string skiplink navigation iFF.nav.skip.jsIsInTemplate = 0 Skiplink, JS is in Template: Use this checkbox if the javascript for the skiplinks is in the template. type=boolean iFF.nav.skip.jsEndOfBodyFile = core/js/yaml-focusfix.js Skiplink, JS file based on framework dir. type=string iFF.nav.skip.toMainNavID = nav_main Skiplink to navigation ID: type=string iFF.nav.skip.toSubNavID = nav_sub Skiplink to navigation ID: type=string iFF.nav.skip.toContentID = main Skiplink to content ID:(for c1, c2, c3 layouts this will be overwritten)) type=string iFF.lang.std.nav.skip.toNavText = Jump to navigation (press enter) Skiplink to navigation text (std) type=string iFF.lang.std.nav.skip.toContentText = Jump to content (press enter) Skiplink to content text (std) type=string nav_top navigation iFF.nav.top.switchOff = 0 Header-Navigation, switchOff: type=boolean iFF.nav.top.wrap = <div id="nav_top" class="ym-hlist"> | </div> Header-Navigation, wrap around: type=wrap iFF.nav.top.type = list Header-Navigation, Type: type=options[entryLevel= ,special-list=list,special-directory=directory] iFF.nav.top.entryListDirValue = 1,6,4 Header-Navigation, Menu IDs:If selected Type "list": Which pages must appear in the Header-Navigation (comma-separated list of UIDs e.g. 1,2,3)? ... If selected Type "directory": The childpages of this ID are shown (use only one ID) ... or in entry menu use the entrylevel type=string iFF.nav.top.menuClass = UL menu class for nav_top: type=string language-navigation iFF.nav.language.switchOff = 1 Language-Navigation, switchOff: type=boolean rootline-navigation iFF.nav.rootline.switchOff = 0 Rootline (click path), switchOff:If the rootline-menu is turned on (default), make sure the next 4 options are also correctly set. type=boolean iFF.nav.rootline.allWrap = <div id="nav_rootline" class="ym-hlist"> | </div> Rootline wrap:Wrap around the rootline navigation: type=wrap iFF.nav.rootline.linkWrap = | / |*| | / |*| | Rootline (click path), wrap:Wrap around each single rootline-element: type=string iFF.lang.std.nav.rootline.clickPathPrefix = You are here: Rootline (click path)(std):This Text prepends the clickpath-menu (standard language): type=string selectorbox-navigation iFF.nav.selectorBox.switchOff = 1 Selectorbox-Nav, switchOff: type=boolean iFF.nav.selectorBox.showOnPage = TSFE:id=1 Selectorbox-Nav, showOnPage:If you need to add pages, DO NOT just enter page-IDs here, but use this syntax: TSFE:id=2,TSFE:id=5 to display the menu on pages with ID 2 and 5. Don't forget the comma to separate each one. type=string iFF.nav.selectorBox.allWrap = <div id="nav_updated"> | </div> Selectorbox-Nav, wrap around:The wrap around the Dropdown-Box of the JavaScript-Menu: type=wrap iFF.lang.std.nav.selectorBox.label = Last updated pages: Selectorbox-Nav (std):Headline of the JavaScript-Menu (standard language): type=string main-navigation 1 iFF.nav.main.1st.switchOff = 0 Main-Nav 1st tab-nav, switchOff:IMPORTANT: If you switch off the tab-navigation, you should set the subMenu EntryLevel to 0 - otherwise the FIRST level of your pagetree ist NOT shown, because the tab-naviation doesn't exist anymore. type=boolean iFF.nav.main.1st.allWrap = <div id="nav_main_1" class="ym-hlist"> | </div> Main-Nav 1st tab-nav, wrap around: type=wrap iFF.nav.main.1st.type = 0 Main-Nav 1st tab-nav, Type: type=options[entryLevel=0,special-list=list,special-directory=directory] iFF.nav.main.1st.entryListDirValue = 0 Main-Nav 1st tab-nav, Menu IDs:If selected Type "list": Which pages must appear in the Header-Navigation (comma-separated list of UIDs e.g. 1,2,3)? ... If selected Type "directory": The childpages of this ID are shown (use only one ID) ... type=string iFF.nav.main.1st.excludeList = Main-Nav 1st tab-nav, excludeList :Enter a comma-separated list of page-IDs here, to be excluded from tabnavigation. type=string iFF.nav.main.1st.tabNav.headerWrap = | Main-Nav 1st tab-nav, headerWrap:The wrap around the headline of the mainmenu (if needed): type=wrap iFF.nav.main.1st.menuClass = UL menu class for nav_main_1: type=string main-navigation 2 iFF.nav.main.2nd.switchOff = 1 Main-Nav 2nd tab-nav, switchOff:By default it is OFF. type=boolean iFF.nav.main.2nd.allWrap = <div id="nav_main_2" class="ym-hlist">|</div> Main-Nav 2nd tab-nav, wrap around: type=wrap iFF.nav.main.2nd.type = 0 Main-Nav 2nd tab-nav, Type: type=options[entryLevel=0,special-list=list,special-directory=directory] iFF.nav.main.2nd.entryListDirValue = 1 Main-Nav 2nd tab-nav, Menu IDs:If selected Type "list": Which pages must appear in the Header-Navigation (comma-separated list of UIDs e.g. 1,2,3)? ... If selected Type "directory": The childpages of this ID are shown (use only one ID) ... type=string iFF.nav.main.2nd.excludeList = Main-Nav 2nd tab-nav, excludeList:Enter a comma-separated list of page-IDs here, to be excluded from tabnavigation. type=string iFF.nav.main.2nd.tabNav.headerWrap = | Main-Nav 2nd tab-nav, headerWrap:The wrap around the headline of the mainmenu (if needed): type=wrap iFF.nav.main.2nd.useForJsMenu = 0 Main-Nav 2nd tab-nav, using for JS menu: type=boolean iFF.nav.main.2nd.jsMenuClass = flyout Main-Nav 2nd tab-nav, JS menu Class:for wrapping div type=string iFF.nav.main.2nd.menuClass = UL menu class for nav_main_2: type=string sub-navigation iFF.nav.sub.switchOff = 0 Sub-Nav, switchOff:NOTICE: If you turn off the submenu, all other options concerning it are ignored, of course. type=boolean iFF.nav.sub.allWrap = <div id="nav_sub" class="ym-vlist">|</div> Sub-Nav, wrap around: type=wrap iFF.nav.sub.type = 0 Sub-Nav, Type: type=options[entryLevel=0,special-list=list,special-directory=directory] iFF.nav.sub.entryListDirValue = 1 Sub-Nav, Menu IDs:If selected Type "list": Which pages must appear in the Header-Navigation (commaseparated list of UIDs e.g. 1,2,3)? ... If selected Type "directory": The childpages of this ID are shown (use only one ID) ... If selected Type "entryLevel": Then use the level to show navigation type=string iFF.nav.sub.expandToggle = 0 Sub-Nav, expand levels:By default only subpages of the current page are shown. Expand ALL and you see all subpages type=boolean iFF.nav.sub.excludeList = Sub-Nav, excludeList:Enter a comma-separated list of page-IDs here, to be excluded from sub navigation. type=string iFF.nav.sub.headlineOff = 0 Sub-Nav, switchOff headline:Maybe your design requires this. type=boolean iFF.nav.sub.headlineLink = 1 Sub-Nav, make headline as link:is deaktivatet for first level type=boolean iFF.nav.sub.headlineWrap = <h6 class="ym-vlist">|</h6> Sub-Nav, headlineWrap: type=wrap iFF.nav.sub.menuClass = UL menu class for nav_sub: type=string footer-navigation iFF.nav.footer.switchOff = 1 Footer-Nav, switchOff: type=boolean iFF.nav.footer.wrap = <div id="nav_footer" class="ym-hlist"> | </div> Footer-Nav, wrap around: type=wrap iFF.nav.footer.type = 0 Footer-Navigation, Type: type=options[entryLevel=0,special-list=list,special-directory=directory] iFF.nav.footer.entryListDirValue = 1,4 Footer-Navigation, Menu IDs:If selected Type "list": Which pages must appear in the Header-Navigation (commaseparated list of UIDs e.g. 1,2,3)? ... If selected Type "directory": The childpages of this ID are shown (use only one ID) type=string iFF.nav.footer.menuClass = UL menu class for nav_footer type=string IFF.CONTENT felogin iFF.content.felogin.template = extensions/felogin/template.html FElogin Template:path is based on layout directory type=string headerimage-bg iFF.content.header.image.bg.switchOff = 0 Header BG-image, switchOff:NOTICE: The header images must be stored within the page you want to display them. They are inherited to all pages below. By default the two images are stored in "Rootpage" only, hence they are inherited to ALL pages. type=boolean iFF.content.header.image.bg.listNum = 0 Header BG-image, listNum: type=int+ iFF.content.header.image.bg.override = 0 Header BG-image, override page ressources: type=boolean iFF.content.header.image.bg.overrideFile = images/dummy-layout/bg_header.gif Header BG-image, override: path and filename based on layout directory: type=string iFF.content.header.image.bg.data = no-repeat scroll top left transparent Header BG-image, additional data: Params in background tag ... no-repeat top left transparent scroll: type=string headerimage-1st iFF.content.header.image.1st.switchOff = 0 Header 1st-image, switchOff:NOTICE: The header images must be stored within the page you want to display them. They are inherited to all pages below. By default the two images are stored in "Rootpage" only, hence they are inherited to ALL pages. type=boolean iFF.content.header.image.1st.allWrap = <div id="logo">|</div> Header 1st-image, wrap around: type=wrap iFF.content.header.image.1st.listNum = 2 Header 1st-image, listNum: type=int+ iFF.content.header.image.1st.override = 1 Header 1st-image, override page ressources: type=boolean iFF.content.header.image.1st.overrideFile = images/dummy-layout/logo.png Header 1st-image, override: path and filename based on layout directory: type=string iFF.content.header.image.1st.linkOn = 1 Header 1st-image, make a link: type=boolean iFF.content.header.image.1st.linkUID = 1 Header 1st-image, link UID: type=int+ headerimage-2nd iFF.content.header.image.2nd.switchOff = 0 Header 2nd-image, switchOff:NOTICE: The header images must be stored within the page you want to display them. They are inherited to all pages below. By default the two images are stored in "Rootpage" only, hence they are inherited to ALL pages. type=boolean iFF.content.header.image.2nd.allWrap = <div id="banner">|</div> Header 2nd-image, wrap around: type=wrap iFF.content.header.image.2nd.listNum = 1 Header 2nd-image, listNum: type=int+ iFF.content.header.image.2nd.override = 1 Header 2nd-image, override page ressources: type=boolean iFF.content.header.image.2nd.overrideFile = images/dummy-layout/banner.jpg Header 2nd-image, override: path and filename based on layout directory: type=string iFF.content.header.image.2nd.linkOn = 0 Header 2nd-image, make a link: type=boolean iFF.content.header.image.2nd.linkUID = 1 Header 2nd-image, link UID: type=int+ headerslide iFF.content.header.slide.switchOff = 1 Headerslide, switchOff: type=boolean iFF.content.header.slide.allWrap = <div id="headerslide">|</div> Headerslide, wrap around: type=wrap iFF.content.header.slide.imagewidth = 1200 Headerslide, imagewidth: type=int+ iFF.content.header.slide.imageheight = 130 Headerslide, imageheight: type=int+ iFF.content.header.slide.transitionDuration = 2000 Headerslide, transitionDuration: type=int+ iFF.content.header.slide.displayDuration = 8000 Headerslide, displayDuration: type=int+ searchbox iFF.content.searchbox.switchOff = 0 Searchbox, boxSwitchOff:If the searchbox should be displayed, make sure the next 1 to 8 options (depending on how much languages you use) are also correctly set. type=boolean iFF.content.searchbox.pagePID = 5 Searchbox searchpage PID:UID of the page containing the Indexed-Search-Plugin - REQUIRED if searchbox is in use: type=int+ iFF.content.searchbox.allWrap = <div id="searchbox">|</div> Searchbox, wrap around: type=wrap iFF.lang.std.content.searchbox.text = Searchword... Searchbox text in inputfield:(Standard Language) type=string iFF.content.searchbox.button.switchOff = 0 Searchbox Button SwitchOff:If the button should be displayed, make sure the next 1 to 8 options (depending on how much languages you use) are also correctly set. type=boolean iFF.content.searchbox.button.style = textButton Searchbox Button Style:textButton or imageButton type=options[textButton,imageButton] iFF.content.searchbox.button.icon = images/icons/searchboxbutton.gif Searchbox Button icon:when using imageButton - path based on layout directory type=string iFF.lang.std.content.searchbox.button.text = OK Searchbox Button text:(Standard Language) type=string tipafriend iFF.content.tipafriend.switchOff = 0 TipAFriend, switchOff: type=boolean iFF.lang.std.content.tipafriend.title = Seite weiterempfehlen TipAFriend, link title: type=string iFF.content.tipafriend.icon = images/icons/icon_versenden.gif TipAFriend, link icon: type=string iFF.lang.std.content.tipafriend.subject = Seitenempfehlung TipAFriend, subject: type=string iFF.lang.std.content.tipafriend.body = Diese Seite finde ich empfehlenswert: TipAFriend, body: type=string printpage iFF.content.printpage.switchOff = 0 Printview, switchOff:If turned on (default), a printbutton is placed in the function area type=boolean iFF.lang.std.content.printpage.link.title = zur Druckansicht Printview, link title: type=string iFF.content.printpage.link.icon = images/icons/icon_drucken.gif Printview, link icon: type=string iFF.lang.std.content.printpage.print.title = Seite drucken Printview, print title: type=string iFF.content.printpage.print.icon = images/icons/icon_print.gif Printview, print icon: type=string iFF.lang.std.content.printpage.noprint.title = Druckvorschau schliessen Printview, no-print title: type=string iFF.content.printpage.noprint.icon = images/icons/icon_noprint.gif Printview, no-print icon: type=string dateAndTime iFF.content.dateAndTime.switchOff = 0 Date/Time, switchOff:If turned on (default), the next options provide the language-specific settings. type=boolean iFF.lang.std.content.dateAndTime.format = %A, %Y-%m-%d Date/Time(std):Formatting date and time for standard-language (see http://th2.php.net/strftime for possible strings formatting the date and time): type=string CSC stdHeader DateFormat iFF.lang.std.content.cscDateFormat = y/m/d CSCstdheader Date-Format(std):Formatting date for standard-language type=string linkToTop iFF.lang.std.content.linkTextToTop = To top Link to top Text(std):Text for "Link-To-Top" (small Icon): type=string iFF.lang.std.content.linkImageToTop = images/icons/top.gif Link to top Image(std):Image for "Link-To-Top" (small Icon):based on layout directory type=string footerlicence iFF.content.footer_licence.switchOff = 0 Footer_licence, switchOff:You turn off the footer_licence with type=boolean iFF.content.footer_licence.wrap = <div class="licence"> | </div> Footer_licence, wrap around: type=wrap iFF.lang.std.content.footer.licence = This layout is based on © <a href="http://www.yaml.de/en/" target="_blank">YAML</a> | TYPO3 Template © <a href="http://www.image-format.eu/" target="_blank">image[FORMAT]</a> for the <a href="http://if-20.com/" target="_blank">iF20 project</a>. Footer licence Links(std):HTML-Code for the footer (standard language). type=string IFF.HEADLINES iFF.content.replace.H1.switchOn = 0 H1 - replace with image?:This is done with Phark-Method image-replacement technique. See http://meiert.com/de/publications/articles/20050513/#toc-phark for details. The text you entered in header-field is used for the image. type=boolean iFF.content.replace.H1.imageColor = #776655 H1 - fontcolor:If replaced with an image, choose font color here. type=color iFF.content.replace.H1.bgTransparency = 0 H1 - background transparency:Set color of top-left pixel to transparent. type=boolean iFF.content.replace.H1.bgColor = #ffffff H1 - background color:If replaced with an image, choose background color here or set a transparent background. type=color iFF.content.replace.H1.niceText = 0 H1 - use niceText option?:Depending on the font you use, this renders ugly sometimes. Just turn it off if the result is not good. type=boolean iFF.content.replace.H1.fontSize = 24 H1 - fontsize:Fontsize in pixels. Also used for vertical offset. You need to adjust h1.G height-attribute also, in your content.css file, if you change this setting. type=int+ iFF.content.replace.H1.imageFont = fonts/Share-Regular.ttf H1 - fontfile:Make sure the path (based on extra_data) and filename is set correctly here. type=string same for H2 – H6 in EXTENSIONS ttnews iFF.lang.std.content.ttnews.listDateFormat = %A, %Y-%m-%d ttnews list-Date-Format(std):Formatting date for standard-language type=string iFF.lang.std.content.ttnews.latestDateFormat = %Y-%m-%d ttnews latest-Date-Format(std):Formatting date for standard-language type=string iFF.lang.std.content.ttnews.singleDateFormat = %A, %Y-%m-%d ttnews single-Date-Format(std):Formatting date for standard-language type=string iFF.lang.std.content.ttnews.singleAgeWrap = Minutes | Hours | Days | Years ttnews single-Age-Wrap(std):Formatting date for standard-language type=string iFF.lang.std.content.ttnews.timeFormat = %H:%M ttnews Time-Format(std):Formatting date for standard-language type=string iFF.lang.std.content.ttnews.fullDateTimeFormat = %Y-%m-%d %H:%M ttnews full-Date-Time-Format(std):Formatting date for standard-language type=string iFF.lang.std.content.ttnews.archivTitleFormat = %B - %Y ttnews Archiv-Title-Format(std):Formatting date for standard-language type=string plugin.tx_news.view.cssPath = {$iFF.projectDir}{$iFF.templateDir}{$iFF.layoutDir}extensions/news/Css/ Path to template CSS (FE) type=string tq_seo plugin.tq_seo.metaTags.description = Meta Description std lang: Short description of your webpage. type=string plugin.tq_seo.metaTags.keywords = Meta Keywords std lang: Comma separated list of keywords. type=string scriptmerger plugin.tx_scriptmerger.css.enable = 1 scriptmerger css processing type=boolean plugin.tx_scriptmerger.css.minify.enable = 1 scriptmerger css minify type=boolean plugin.tx_scriptmerger.css.compress.enable = 1 scriptmerger css compress: not tested ! type=boolean plugin.tx_scriptmerger.css.merge.enable = 1 scriptmerger css merge type=boolean plugin.tx_scriptmerger.javascript.enable = 1 scriptmerger js processing type=boolean plugin.tx_scriptmerger.javascript.minify.enable = 1 scriptmerger js minify type=boolean plugin.tx_scriptmerger.javascript.compress.enable = 1 scriptmerger js compress: not tested ! type=boolean plugin.tx_scriptmerger.javascript.merge.enable = 1 scriptmerger js merge type=boolean TypoScript Setup: iFF_S_basic_10_config.ts constants { iFF_VERSION = 6.1.0 } ### TYPO3 config array config { baseURL = {$iFF.conf.url.userBaseUrl} absRefPrefix = {$iFF.conf.url.userBaseUrl} } [globalString = IENV:HTTP_HOST={$iFF.conf.url.userBaseHost}] config { baseURL = {$iFF.conf.url.protocol}://{$iFF.conf.url.userBaseHost}/ absRefPrefix = {$iFF.conf.url.protocol}://{$iFF.conf.url.userBaseHost}/ } [globalString = IENV:HTTP_HOST={$iFF.conf.url.userBaseHost}] && [globalString = IENV:TYPO3_SSL=1] config { baseURL = {$iFF.conf.url.protocol}://{$iFF.conf.url.userBaseHostSSL}/ absRefPrefix = {$iFF.conf.url.protocol}://{$iFF.conf.url.userBaseHostSSL}/ } [globalString = IENV:HTTP_HOST={$iFF.conf.url.userBaseHostAlt}] config { baseURL = {$iFF.conf.url.protocol}://{$iFF.conf.url.userBaseHostAlt}/ absRefPrefix = {$iFF.conf.url.protocol}://{$iFF.conf.url.userBaseHostAlt}/ } [globalString = IENV:HTTP_HOST={$iFF.conf.url.userBaseHostAlt}] && [globalString = IENV:TYPO3_SSL=1] config { baseURL = {$iFF.conf.url.protocol}://{$iFF.conf.url.userBaseHostAltSSL}/ absRefPrefix = {$iFF.conf.url.protocol}://{$iFF.conf.url.userBaseHostAltSSL}/ } [global] config { renderCharset = utf-8 metaCharset = utf-8 disableCharsetHeader = 0 enableContentLengthHeader = 1 sendCacheHeaders = 1 removeDefaultJS = external inlineStyle2TempFile = 1 debug = 0 sword_standAlone = 0 sword_noMixedCase = 0 intTarget = _self extTarget = _blank noScaleUp = 1 no_cache = 0 content_from_pid_allowOutsideDomain = 1 noPageTitle = 0 pageTitleFirst = 1 headerComment ( {$iFF.conf.headerComment} based on: iFF-Framework, YAML for TYPO3 °.°.° http://www.image-format.eu/iff °.°.° copyright Ralf-Rene Schroeder - image[FORMAT] ) admPanel = {$iFF.conf.userAdmPanelOn} doctype = {$iFF.conf.docTypeToUse} doctypeSwitch = {$iFF.conf.doctypesw_cond} htmlTag_dir = {$iFF.conf.userHtmlTagDir} index_enable = {$iFF.conf.userIndexingOn} index_externals = {$iFF.conf.userIndexExternalsOn} index_metatags = {$iFF.conf.userIndexMetaTagsOn} xhtml_cleaning = {$iFF.conf.userXhtmlCleaning} disablePrefixComment = {$iFF.conf.userDisablePrefixComment} } ### spamProtect config { spamProtectEmailAddresses = {$iFF.conf.spamProtect.level} spamProtectEmailAddresses_atSubst = {$iFF.conf.spamProtect.atSubst} spamProtectEmailAddresses_lastDotSubst = {$iFF.conf.spamProtect.lastDotSubst} } [globalVar = LIT:1 > {$iFF.conf.spamProtect.additional.switchOff}] config { spamProtectEmailAddresses_atSubst = <span class="mailprotect">{$iFF.conf.spamProtect.additional.marker}</span><span>{$iFF.conf.spamProtect.atS ubst}</span> spamProtectEmailAddresses_lastDotSubst = <span class="mailprotect">{$iFF.conf.spamProtect.additional.marker}</span><span>{$iFF.conf.spamProtect.las tDotSubst}</span> } [global] [globalVar = LIT:1 = {$iFF.conf.spamProtect.switchOff}] config { spamProtectEmailAddresses = 0 spamProtectEmailAddresses_atSubst > spamProtectEmailAddresses_lastDotSubst > } [global] ### simulateStaticDocuments config.simulateStaticDocuments = 0 [globalVar = LIT:1 = {$iFF.conf.url.simStatDocOn}]&&[globalVar = LIT:1 > {$iFF.conf.url.realUrlOn}]&&[globalVar = LIT:1 > {$iFF.conf.url.coolUriOn}] config { simulateStaticDocuments = 1 simulateStaticDocuments_addTitle = {$iFF.conf.url.simStatDocAddTitle} simulateStaticDocuments_pEnc = {$iFF.conf.url.simStatDocPenc} simulateStaticDocuments_pEnc_onlyP = {$iFF.conf.url.simStatDocPencOnlyP} } [global] ### realURL [globalVar = LIT:1 = {$iFF.conf.url.realUrlOn}] config { tx_realurl_enable = 1 prefixLocalAnchors = {$iFF.conf.url.userPrefixLocalAnchors} } [global] ### cooluri [globalVar = LIT:1 = {$iFF.conf.url.coolUriOn}] config { tx_cooluri_enable = 1 redirectOldLinksToNew = 1 prefixLocalAnchors = {$iFF.conf.url.userPrefixLocalAnchors} } [global] ### Language settings config { linkVars = L(0) uniqueLinkVars = 1 sys_language_mode = content_fallback sys_language_overlay = hideNonTranslated sys_language_uid = {$iFF.lang.std.UID} language = {$iFF.lang.std.isoCode} locale_all = {$iFF.lang.std.locale} htmlTag_langKey = {$iFF.lang.std.isoCode} } iFF_S_basic_20_headerData.ts ### registerConf lib.registerConf = COA lib.registerConf { 1 = LOAD_REGISTER 1 { usedBeLayoutNr { cObject = TEXT cObject { data = levelfield:-1, backend_layout_next_level, slide override.field = backend_layout } } usedBeLayoutName { cObject = TEXT cObject { wrap = {$iFF.conf.layoutStyle}- | data = DB : backend_layout : {register:usedBeLayoutNr} : title data.insertData = 1 } } usedFeLayoutNr { cObject = TEXT cObject { value = override.if.isTrue.field = layout override.field = layout override.wrap = - | } } } ### (selectedTO) not yet used in the moment 10 = COA 10 { 10 = HMENU 10 { special = rootline special.range = 0|-2 1 = TMENU 1.NO { doNotLinkIt = 1 stdWrap.cObject = LOAD_REGISTER stdWrap.cObject { selectedTO.data = register:selectedTO selectedTO.override.field = tx_templavoila_to selectedTO.override.override.field = tx_templavoila_next_to } } } 20 = LOAD_REGISTER 20 { selectedTO.data = register:selectedTO selectedTO.override.field = tx_templavoila_to } } 10 > } iFF_S_basic_30_content.ts ### Changes RTE lib.parseFunc_RTE { nonTypoTagStdWrap.encapsLines { # remove 'class=bodytext' in P-tags addAttributes.P.class = # tags that must not be wrapped encapsTagList := addToList(dl, dt, dd) encapsTagList := addToList(table) } # allow tags allowTags := addToList(dl,dt,dd) allowTags := addToList(table, thead,tbody,tfooter,tr,th,td) # avoid unwanted p-elements in th/td on the way to FE externalBlocks.table.HTMLtableCells.default > externalBlocks.table.HTMLtableCells.default.stdWrap.parseFunc =< lib.parseFunc # allow own tableclasses externalBlocks.table.stdWrap.HTMLparser.tags.table.fixAttrib.class.always = 0 externalBlocks.table.stdWrap.HTMLparser.tags.table.fixAttrib.class.list := addToList(contenttable, csc-frame-frame1, csc-frame-frame2, float-left, float-right) } ### Link to Top tt_content.stdWrap.innerWrap.cObject.10.default.30.20.override.cObject = TEXT tt_content.stdWrap.innerWrap.cObject.10.default.30.20.override.cObject { value = {LLL:EXT:css_styled_content/pi1/locallang.xml:label.toTop} innerWrap = <img src="{$iFF.projectDir}{$iFF.templateDir}{$iFF.layoutDir}images/ {$iFF.lang.std.content.linkImageToTop}" alt="" title=" | " /> wrap = <a href="#usedMainContent"> | </a> outerWrap = <p class="csc-anchor csc-linkToTop"> | </p> } ### Replace Hx Tags with graphics if user choosed this option [globalVar = LIT:1 = {$iFF.content.replace.H1.switchOn}] lib.stdheader.10.1 > lib.stdheader.10 { 1 = IMG_RESOURCE 1 { file = GIFBUILDER file { XY = [10.w]+10,[10.h]+10 backColor = {$iFF.content.replace.H1.bgColor} transparentBackground = {$iFF.content.replace.H1.bgTransparency} format = png 10 = TEXT 10 { text.field = header fontSize = {$iFF.content.replace.H1.fontSize} fontFile = {$iFF.projectDir}{$iFF.extraDir}fonts/{$iFF.content.replace.H1.imageFont} fontColor = {$iFF.content.replace.H1.imageColor} offset = 0,{$iFF.content.replace.H1.fontSize} niceText = {$iFF.content.replace.H1.niceText} } } stdWrap { prepend = TEXT prepend { dataWrap = <h1 class="G" style= } innerWrap.cObject = COA innerWrap.cObject { 10 = TEXT 10.value = "background: {$iFF.content.replace.H1.bgColor} url(|) no-repeat;"> } append = TEXT append { current = 1 wrap = |</h1> } } } } [global] [globalVar = LIT:1 = {$iFF.content.replace.H2.switchOn}] lib.stdheader.10.2 > lib.stdheader.10 { 2 = IMG_RESOURCE 2 { file = GIFBUILDER file { XY = [10.w]+10,[10.h]+10 backColor = {$iFF.content.replace.H2.bgColor} transparentBackground = {$iFF.content.replace.H2.bgTransparency} format = png 10 = TEXT 10 { text.field = header fontSize = {$iFF.content.replace.H2.fontSize} fontFile = {$iFF.projectDir}{$iFF.extraDir}fonts/{$iFF.content.replace.H2.imageFont} fontColor = {$iFF.content.replace.H2.imageColor} offset = 0,{$iFF.content.replace.H2.fontSize} niceText = {$iFF.content.replace.H2.niceText} } } stdWrap { prepend = TEXT prepend { dataWrap = <h2 class="G" style= } innerWrap.cObject = COA innerWrap.cObject { 10 = TEXT 10.value = "background: {$iFF.content.replace.H2.bgColor} url(|) no-repeat;"> } append = TEXT append { current = 1 wrap = |</h2> } } } } [global] [globalVar = LIT:1 = {$iFF.content.replace.H3.switchOn}] lib.stdheader.10.3 > lib.stdheader.10 { 3 = IMG_RESOURCE 3 { file = GIFBUILDER file { XY = [10.w]+10,[10.h]+10 backColor = {$iFF.content.replace.H3.bgColor} transparentBackground = {$iFF.content.replace.H3.bgTransparency} format = png 10 = TEXT 10 { text.field = header fontSize = {$iFF.content.replace.H3.fontSize} fontFile = {$iFF.projectDir}{$iFF.extraDir}fonts/{$iFF.content.replace.H3.imageFont} fontColor = {$iFF.content.replace.H3.imageColor} offset = 0,{$iFF.content.replace.H3.fontSize} niceText = {$iFF.content.replace.H3.niceText} } } stdWrap { prepend = TEXT prepend { dataWrap = <h3 class="G" style= } innerWrap.cObject = COA innerWrap.cObject { 10 = TEXT 10.value = "background: {$iFF.content.replace.H3.bgColor} url(|) no-repeat;"> } append = TEXT append { current = 1 wrap = |</h3> } } } } [global] [globalVar = LIT:1 = {$iFF.content.replace.H4.switchOn}] lib.stdheader.10.4 > lib.stdheader.10 { 4 = IMG_RESOURCE 4 { file = GIFBUILDER file { XY = [10.w]+10,[10.h]+10 backColor = {$iFF.content.replace.H4.bgColor} transparentBackground = {$iFF.content.replace.H4.bgTransparency} format = png 10 = TEXT 10 { text.field = header fontSize = {$iFF.content.replace.H4.fontSize} fontFile = {$iFF.projectDir}{$iFF.extraDir}fonts/{$iFF.content.replace.H4.imageFont} fontColor = {$iFF.content.replace.H4.imageColor} offset = 0,{$iFF.content.replace.H4.fontSize} niceText = {$iFF.content.replace.H4.niceText} } } stdWrap { prepend = TEXT prepend { dataWrap = <h4 class="G" style= } innerWrap.cObject = COA innerWrap.cObject { 10 = TEXT 10.value = "background: {$iFF.content.replace.H4.bgColor} url(|) no-repeat;"> } append = TEXT append { current = 1 wrap = |</h4> } } } } [global] [globalVar = LIT:1 = {$iFF.content.replace.H5.switchOn}] lib.stdheader.10.5 > lib.stdheader.10 { 5 = IMG_RESOURCE 5 { file = GIFBUILDER file { XY = [10.w]+10,[10.h]+10 backColor = {$iFF.content.replace.H5.bgColor} transparentBackground = {$iFF.content.replace.H5.bgTransparency} format = png 10 = TEXT 10 { text.field = header fontSize = {$iFF.content.replace.H5.fontSize} fontFile = {$iFF.projectDir}{$iFF.extraDir}fonts/{$iFF.content.replace.H5.imageFont} fontColor = {$iFF.content.replace.H5.imageColor} offset = 0,{$iFF.content.replace.H5.fontSize} niceText = {$iFF.content.replace.H5.niceText} } } stdWrap { prepend = TEXT prepend { dataWrap = <h5 class="G" style= } innerWrap.cObject = COA innerWrap.cObject { 10 = TEXT 10.value = "background: {$iFF.content.replace.H5.bgColor} url(|) no-repeat;"> } append = TEXT append { current = 1 wrap = |</h5> } } } } [global] iFF_S_basic_30_content.ts plugin.tx_felogin_pi1.templateFile = {$iFF.projectDir}{$iFF.templateDir}{$iFF.layoutDir} {$iFF.content.felogin.template} ### apimacmade (there was a wrongtyping "hasWebToolKit <> hasWebToolkit") plugin.tx_apimacmade_pi1 { hasWebToolkit { base64 = {$plugin.tx_apimacmade_pi1.hasWebToolKit.base64} crc32 = {$plugin.tx_apimacmade_pi1.hasWebToolKit.crc32} md5 = {$plugin.tx_apimacmade_pi1.hasWebToolKit.md5} sha1 = {$plugin.tx_apimacmade_pi1.hasWebToolKit.sha1} sha256 = {$plugin.tx_apimacmade_pi1.hasWebToolKit.sha256} url = {$plugin.tx_apimacmade_pi1.hasWebToolKit.url} utf8 = {$plugin.tx_apimacmade_pi1.hasWebToolKit.utf8} } } ### tq_seo metatags plugin.tq_seo.metaTags { language = {$iFF.lang.std.isoCode} description = {$plugin.tq_seo.metaTags.description} keywords = {$plugin.tq_seo.metaTags.keywords} } config.titleTagFunction = user_tqseo_pagetitle->main page { headerData.84113002 = USER headerData.84113002 { userFunc = user_tqseo_metatags->main } headerData.84113003 = USER_INT headerData.84113003 { userFunc = user_tqseo_http->main } 84113002 = USER 84113002 { userFunc = user_tqseo_pagefooter->main } } ### tt_news plugin.tt_news { usePagesRelations = 1 usePiBasePagebrowser = 1 excludeAlreadyDisplayedNews = 0 dontUseBackPid = 0 archiveTitleCObject { 10.strftime = {$iFF.lang.std.content.ttnews.archivTitleFormat} } getRelatedCObject { 10.1.20.strftime = {$iFF.lang.std.content.ttnews.fullDateTimeFormat} 10.2.20.strftime = {$iFF.lang.std.content.ttnews.fullDateTimeFormat} 10.default.20.strftime = {$iFF.lang.std.content.ttnews.fullDateTimeFormat} } displaySingle { date_stdWrap.strftime= {$iFF.lang.std.content.ttnews.singleDateFormat} time_stdWrap.strftime= {$iFF.lang.std.content.ttnews.timeFormat} age_stdWrap.age = {$iFF.lang.std.content.ttnews.singleAgeWrap} } displayLatest { date_stdWrap.strftime= {$iFF.lang.std.content.ttnews.latestDateFormat} time_stdWrap.strftime= {$iFF.lang.std.content.ttnews.timeFormat} subheader_stdWrap.crop = 100 | ... | 1 } displayList { date_stdWrap.strftime= {$iFF.lang.std.content.ttnews.listDateFormat} time_stdWrap.strftime= {$iFF.lang.std.content.ttnews.timeFormat} } catOrderBy = title } displayCatMenu { catmenuRootIconFile = EXT:tt_news/res/tt_news_cat.gif catmenuNoRootIcon = 0 catmenuIconMode = -1 } pageBrowser { dontLinkActivePage = 1 maxPages = 10 showRange = 0 showPBrowserText = 1 showResultCount = 0 showFirstLast = 0 } ### tx_indexedsearch plugin.tx_indexedsearch._DEFAULT_PI_VARS.lang = 0 iFF_S-basic_50_module_navigation.ts ### lib.modul.basicmenu lib.modul.basicmenu = COA lib.modul.basicmenu { stdWrap.prefixComment = 2|Output of lib.modul.basicmenu wrap = | 30 = HMENU 30 { wrap = <div class="{$iFF.nav.menuClass}">|</div>| 1 = TMENU 1 { noBlur = 1 wrap = <ul>|</ul> IProcFunc = user_cronaccessiblemenus->makeAccessible IProcFunc { accessKeys = 1 accessKeys.noAutoGenerated = 0 forbiddenKeys = accessKeyWrap = <span class="accessKey"> | </span> appendWrap = <span class="showAccessKey"> (ALT- | )</span> dfn = 1 dfn { menuSet = basicmenu start = 1 stdWrap.noTrimWrap = || | inATag = 1 } } NO = 1 NO.ATagTitle.field = {$iFF.conf.seo.MouseOverOrder} NO.allWrap = | NO.allWrap.stdWrap.override = |<span class="hidden">.</span> NO.allWrap.stdWrap.override.if.isFalse = {$iFF.conf.accessKeysAndDfnOff} NO.wrapItemAndSub.insertData = 1 NO.wrapItemAndSub = <li class="no menuid-{field:uid} menupos-{register:count_MENUOBJ} first">| </li>|*|<li class="no menuid-{field:uid} menupos-{register:count_MENUOBJ}">|</li>|*|<li class="no menuid-{field:uid} menupos-{register:count_MENUOBJ} last">|</li> NO.stdWrap.htmlSpecialChars = 1 NO.linkWrap = {$iFF.nav.linkWrap} NO.ATagBeforeWrap = 1 IFSUB < .NO IFSUB.linkWrap = {$iFF.nav.linkWrap} IFSUB.wrapItemAndSub = <li class="no ifsub menuid-{field:uid} menupos-{register:count_MENUOBJ} first">|</li>|*|<li class="no ifsub menuid-{field:uid} menupos-{register:count_MENUOBJ}">|</li>|*| <li class="no ifsub menuid-{field:uid} menupos-{register:count_MENUOBJ} last">|</li> ACT < .NO ACT.wrapItemAndSub = <li class="act menuid-{field:uid} menupos-{register:count_MENUOBJ} first">|</li>|*|<li class="act menuid-{field:uid} menupos-{register:count_MENUOBJ}">|</li>|*|<li class="act menuid-{field:uid} menupos-{register:count_MENUOBJ} last">|</li> ACTIFSUB < .ACT ACTIFSUB.wrapItemAndSub = <li class="act ifsub menuid-{field:uid} menupos{register:count_MENUOBJ} first">|</li>|*|<li class="act ifsub menuid-{field:uid} menupos{register:count_MENUOBJ}">|</li>|*|<li class="act ifsub menuid-{field:uid} menupos{register:count_MENUOBJ} last">|</li> CUR < .NO CUR.doNotLinkIt = 1 CUR.allWrap = <strong> | </strong> CUR.allWrap.stdWrap.override = <strong> | </strong><span class="hidden">.</span> CUR.wrapItemAndSub = <li class="cur menuid-{field:uid} menupos-{register:count_MENUOBJ} first">|</li>|*|<li class="cur menuid-{field:uid} menupos-{register:count_MENUOBJ}">|</li>|*|<li class="cur menuid-{field:uid} menupos-{register:count_MENUOBJ} last">|</li> CURIFSUB < .CUR CURIFSUB.wrapItemAndSub = <li class="cur ifsub menuid-{field:uid} menupos{register:count_MENUOBJ} first">|</li>|*|<li class="cur ifsub menuid-{field:uid} menupos{register:count_MENUOBJ}">|</li>|*|<li class="cur ifsub menuid-{field:uid} menupos{register:count_MENUOBJ} last">|</li> } } } ### lib.modul.skiplinks (in the DS the fields toContentID and toNavID must be set) lib.modul.skiplinks = COA lib.modul.skiplinks { wrap = <ul class="ym-skiplinks"> | </ul> stdWrap.prefixComment = 2|Output of lib.modul.skiplinks } 10 = COA 10 { 12 = TEXT 12.value = 12.wrap = 22 = TEXT 22.value = 22.wrap = } {$iFF.nav.skip.toNavID} <li><a class="ym-skip" href="#|">{$iFF.lang.std.nav.skip.toNavText}</a></li> main <li><a class="ym-skip" href="#|">{$iFF.lang.std.nav.skip.toContentText}</a></li> ### lib.modul.nav_top lib.modul.nav_top < lib.modul.basicmenu lib.modul.nav_top { stdWrap.if.isFalse = {$iFF.nav.top.switchOff} stdWrap.prefixComment = 2|Output of lib.modul.nav_top wrap = {$iFF.nav.top.wrap} 30 = HMENU 30 { special = {$iFF.nav.top.type} special.value = {$iFF.nav.top.entryListDirValue} entryLevel.if.isFalse = {$iFF.nav.top.type} entryLevel = {$iFF.nav.top.entryListDirValue} 1 = TMENU 1 { wrap = <ul class="{$iFF.nav.top.menuClass}">|</ul> # IProcFunc.dfn = 0 IFSUB > ACT > ACTIFSUB > CURIFSUB > } } } ### lib.modul.nav_main_1 (Button Navigation unter dem Header) lib.modul.nav_main_1 < lib.modul.basicmenu lib.modul.nav_main_1 { stdWrap.if.isFalse = {$iFF.nav.main.1st.switchOff} stdWrap.prefixComment = 2|Output of lib.modul.nav_main_1 wrap = {$iFF.nav.main.1st.allWrap} 30 = HMENU 30 { special = {$iFF.nav.main.1st.type} special.value = {$iFF.nav.main.1st.entryListDirValue} entryLevel.if.isFalse = {$iFF.nav.main.1st.type} entryLevel = {$iFF.nav.main.1st.entryListDirValue} excludeUidList = {$iFF.nav.main.1st.excludeList} 1 = TMENU 1 { wrap = <ul class="{$iFF.nav.main.1st.menuClass}">|</ul> # IProcFunc.dfn = 0 } } } ### lib.modul.nav_main_2 ### zweite Navigationszeile (oder alternativ fuer JS dropdown) lib.modul.nav_main_2 < lib.modul.basicmenu lib.modul.nav_main_2 { stdWrap.if.isFalse = {$iFF.nav.main.2nd.switchOff} stdWrap.prefixComment = 2|Output of lib.modul.nav_main_2 wrap = {$iFF.nav.main.2nd.allWrap} 30 = HMENU 30 { special = {$iFF.nav.main.2nd.type} special.value = {$iFF.nav.main.2nd.entryListDirValue} entryLevel.if.isFalse = {$iFF.nav.main.2nd.type} entryLevel = {$iFF.nav.main.2nd.entryListDirValue} excludeUidList = {$iFF.nav.main.2nd.excludeList} 1 = TMENU 1 { wrap = <ul class="{$iFF.nav.main.2nd.menuClass}">|</ul> # } } IProcFunc.dfn = 0 } [globalVar = LIT:1 = {$iFF.nav.main.2nd.useForJsMenu}] lib.modul.nav_main_2 { 30 { wrap = <div class="menu {$iFF.nav.main.2nd.jsMenuClass}"> | </div> 1.expAll = 1 2 < .1 3 < .1 4 < .1 } } [global] [globalVar = LIT:1 = {$iFF.nav.main.1st.switchOff}] ### Modify the skiplink to submenu instead!!! lib.skiplinks.10.12 = TEXT lib.skiplinks.10.12.value = submenu ### until now it is hardcoded [global] [globalVar = LIT:1 > {$iFF.nav.main.2nd.switchOff}] ### Modify the skiplink back to nav when second tabnav is used!!! lib.skiplinks.10.12 = TEXT lib.skiplinks.10.12.value = {$iFF.nav.skip.toNavID} [global] ### lib.modul.nav_rootline lib.modul.nav_rootline = COA lib.modul.nav_rootline { stdWrap.if.isFalse = {$iFF.nav.rootline.switchOff} stdWrap.prefixComment = 2|Output of lib.modul.nav_rootline wrap = {$iFF.nav.rootline.allWrap} 10 = TEXT 10.value = {$iFF.lang.std.nav.rootline.clickPathPrefix} 10.noTrimWrap = || | 20 = HMENU 20 { special = rootline special.range = 0|-1 1 = TMENU 1 { allWrap = | noBlur = 1 NO.doNotLinkIt = 0 |*| 0 |*| 1 NO.ATagTitle.field = abstract // description // subtitle NO.stdWrap.htmlSpecialChars = 1 NO.linkWrap = {$iFF.nav.rootline.linkWrap} } } } ### lib.modul.nav_language lib.modul.nav_language = COA lib.modul.nav_language { stdWrap.if.isFalse = {$iFF.nav.language.switchOff} stdWrap.prefixComment = 2|Output of lib.modul.nav_language wrap = <div class="langMenu">|</div> 10 =< plugin.tx_srlanguagemenu_pi1 } ### lib.modul.selectorBox ### show on desired pages [globalVar = {$iFF.nav.selectorBox.showOnPage}] lib.modul.selectorBox = HMENU lib.modul.selectorBox { if.isFalse = {$iFF.nav.selectorBox.switchOff} stdWrap.prefixComment = 2|Output of lib.modul.selectorBox wrap = {$iFF.nav.selectorBox.allWrap} special = updated special.value = 1 special.maxAge = 3600*24*7 limit = 10 1 = JSMENU 1.target = _top 1.firstLabelGeneral = {$iFF.lang.std.nav.selectorBox.label} } [global] ### lib.modul.submenu lib.modul.nav_sub < lib.modul.basicmenu lib.modul.nav_sub { stdWrap.if.isFalse = {$iFF.nav.sub.switchOff} stdWrap.prefixComment = 2|Output of lib.modul.nav_sub wrap = {$iFF.nav.sub.allWrap} 20 = TEXT 20.if.isFalse = {$iFF.nav.sub.headlineOff} 20.data = leveltitle:1 20.ifEmpty.cObject = TEXT 20.ifEmpty.cObject.value < sitetitle 20.ifEmpty.cObject.innerWrap = <strong> | </strong> 20.wrap = {$iFF.nav.sub.headlineWrap} 20.typolink.parameter.data = leveluid : 1 20.typolink.stdWrap.if.isTrue = {$iFF.nav.sub.headlineLink} # 20.if.isTrue.numRows { # table = pages # where = pid=this # } 30 = HMENU 30 { special = {$iFF.nav.sub.type} special.value = {$iFF.nav.sub.entryListDirValue} entryLevel.if.isFalse = {$iFF.nav.sub.type} entryLevel = {$iFF.nav.sub.entryListDirValue} excludeUidList = {$iFF.nav.sub.excludeList} 1 = TMENU 1 { expAll = {$iFF.nav.sub.expandToggle} wrap = <ul class="{$iFF.nav.sub.menuClass}">|</ul> IProcFunc.dfn.menuSet = submenu } 2 < .1 2.wrap = <ul>|</ul> 3 < .2 4 < .2 } } ### deactivate the Link when in entry level [treeLevel = {$iFF.nav.sub.entryLevel}] && [globalVar = LIT:1 = {$iFF.nav.sub.headlineLink}] lib.modul.nav_sub.20.typolink.parameter.data > [global] ### lib.modul.nav_footer lib.modul.nav_footer < lib.modul.basicmenu lib.modul.nav_footer { stdWrap.if.isFalse = {$iFF.nav.footer.switchOff} stdWrap.prefixComment = 2|Output of lib.modul.nav_footer wrap = {$iFF.nav.footer.wrap} 30 = HMENU 30 { special = {$iFF.nav.footer.type} special.value = {$iFF.nav.footer.entryListDirValue} entryLevel.if.isFalse = {$iFF.nav.footer.type} entryLevel = {$iFF.nav.footer.entryListDirValue} 1 = TMENU 1 { wrap = <ul class="{$iFF.nav.footer.menuClass}">|</ul> # IProcFunc.dfn = 0 IFSUB > ACT > ACTIFSUB > CURIFSUB > } } } ### Delete accesskeyes if user has set the appropriate option [globalVar = LIT:1 = {$iFF.conf.accessKeysAndDfnOff}] lib.modul.nav_top.30.1.IProcFunc > lib.modul.nav_main_1.30.1.IProcFunc > lib.modul.nav_main_2.30 { 1.IProcFunc > 2.IProcFunc > 3.IProcFunc > 4.IProcFunc > } lib.modul.nav_sub.30 { 1.IProcFunc > 2.IProcFunc > 3.IProcFunc > 4.IProcFunc > } lib.modul.nav_footer.30.1.IProcFunc > [global] ### Delete accesskey help if user has set the appropriate option [globalVar = LIT:1 = {$iFF.conf.accessKeyHelpOff}] lib.modul.nav_top.30.1.IProcFunc.appendWrap > lib.modul.nav_main_1.30.1.IProcFunc.appendWrap > lib.modul.nav_main_2.30 { 1.IProcFunc.appendWrap > 2.IProcFunc.appendWrap > 3.IProcFunc.appendWrap > 4.IProcFunc.appendWrap > } lib.modul.nav_sub.30 { 1.IProcFunc.appendWrap > 2.IProcFunc.appendWrap > 3.IProcFunc.appendWrap > 4.IProcFunc.appendWrap > } lib.modul.nav_footer.30.1.IProcFunc.appendWrap > [global] iFF_S-basic_50_module_navigation.ts ### lib.modul.searchbox lib.modul.searchbox = COA lib.modul.searchbox { stdWrap.prefixComment = 2|Output of lib.modul.searchbox stdWrap.if.isFalse = {$iFF.content.searchbox.switchOff} wrap = {$iFF.content.searchbox.allWrap} 10 = TEXT 10 { typolink.parameter = {$iFF.content.searchbox.pagePID} typolink.returnLast = url wrap = <form action="|" method="post" name="searchform" id="tx_indexedsearch"> } # Eingabefeld 20 = COA 20 { wrap = <input | type="text" name="tx_indexedsearch[sword]" /> 10 = TEXT 10 { value = {$iFF.lang.std.content.searchbox.text} wrap = value="|" noTrimWrap = | | | } 20 = TEXT 20 { value = {$iFF.lang.std.content.searchbox.text} wrap = onkeypress="if(this.value=='|'){this.value='';}" noTrimWrap = | | | } 30 < .20 30.wrap = onfocus="if(this.value=='|'){this.value='';}" 40 < .20 40.wrap = onclick="if(this.value=='|'){this.value='';}" } # Button 30 = COA 30 { stdWrap.if.isFalse = {$iFF.content.searchbox.button.switchOff} 10 = TEXT 10 { if.value = textButton if.equals = {$iFF.content.searchbox.button.style} value = {$iFF.lang.std.content.searchbox.button.text} wrap = <input id="tx-indexedsearch-searchbox-button-submit" class="button textButton" name="tx_indexedsearch[submit_button]" type="submit" value="|" /> } 20 = TEXT 20 { if.value = imageButton if.equals = {$iFF.content.searchbox.button.style} value = {$iFF.lang.std.content.searchbox.button.text} wrap = <input id="tx-indexedsearch-searchbox-button-submit" class="button imageButton" name="tx_indexedsearch[submit_button]" type="image" src="{$iFF.projectDir}{$iFF.templateDir} {$iFF.layoutDir}{$iFF.content.searchbox.button.icon}" value="|" /> } } # Sprache 40 = TEXT 40 { data = GPvar:L wrap = <input type="hidden" name="tx_indexedsearch[lang]" value="|" /> } # Versteckte Felder und schließender Form Tag 50 = TEXT 50.value ( <input type="hidden" name="tx_indexedsearch[_sections]" value="0" /> <input type="hidden" name="tx_indexedsearch[pointer]" id="tx_indexedsearch_pointer" value="0" /> <input type="hidden" name="tx_indexedsearch[ext]" value="0" /> <input type="hidden" name="tx_indexedsearch[_freeIndexUid]" id="tx_indexedsearch_freeIndexUid" value="_" /> </form> ) } [globalVar = TSFE:id={$iFF.content.searchbox.pagePID}] lib.modul.searchbox.20 = COA_INT lib.modul.searchbox.20.10.override.data = GPvar:tx_indexedsearch|sword lib.modul.searchbox.20.10.htmlSpecialChars = 1 [global] ### lib.modul.header_image_bg ### background image in header page.headerData.979 = TEXT page.headerData.979 { typolink.parameter.data = TSFE:id typolink.additionalParams = &type=79 typolink.returnLast = url wrap = <link rel="stylesheet" type="text/css" href="|" /> } dynamicCss979 = PAGE dynamicCss979 { typeNum = 79 config { disableAllHeaderCode = 1 additionalHeaders = Content-type: text/css admPanel = 0 } 5 = TEXT 5.if.isFalse = {$iFF.conf.pieFix.switchOff} 5.value = {$iFF.conf.pieFix.path} 5.wrap = * { behavior: url( | ); } 10 = COA 10 { stdWrap.if.isFalse = {$iFF.content.header.image.bg.switchOff} ### Variant: get from page ressources 10 = IMG_RESOURCE 10 { stdWrap.if.isFalse = {$iFF.content.header.image.bg.override} file { import = uploads/media/ import.data = levelmedia:-1, slide import.listNum = {$iFF.content.header.image.bg.listNum} } stdWrap.wrap = /| stdWrap.outerWrap = body > .ym-wrapper > .ym-wbox > header { background: url(|) {$iFF.content.header.image.bg.data};} stdWrap.outerWrap.stdWrap.override = body > header .ym-wrapper { background: url(|) {$iFF.content.header.image.bg.data};} stdWrap.outerWrap.stdWrap.override.if.isTrue = {$iFF.conf.specialTypeSite} } ### Variant: manual file override 11 < .10 11 = TEXT 11.stdWrap.if.negate = 1 11.value = {$iFF.projectDir}{$iFF.templateDir}{$iFF.layoutDir} {$iFF.content.header.image.bg.overrideFile} } } ### lib.modul.header_image_1st ### First image in header id="logo" lib.modul.header_image_1st = COA lib.modul.header_image_1st { stdWrap.if.isFalse = {$iFF.content.header.image.1st.switchOff} stdWrap.prefixComment = 2|Output of lib.modul.header_image_1st stdWrap.outerWrap.cObject = COA stdWrap.outerWrap.cObject { wrap = {$iFF.content.header.image.1st.allWrap} 10 = TEXT 10.if.isFalse = {$iFF.content.header.image.1st.linkOn} 10.value = <img class="headImg1" src="|" alt="Logo-{page:title}" title="Logo-{page:title}" /> 10.insertData = 1 11 < .10 11.if.negate = 1 11.typolink.parameter = {$iFF.content.header.image.1st.linkUID} 11.typolink.target = } 10 = IMG_RESOURCE 10 { stdWrap.if.isFalse = {$iFF.content.header.image.1st.override} file = IMAGE file { import { required = 1 data = levelmedia: -1, slide wrap = uploads/media/ | listNum = {$iFF.content.header.image.1st.listNum} } } } 11 = TEXT 11.if.isTrue = {$iFF.content.header.image.1st.override} 11.value = {$iFF.projectDir}{$iFF.templateDir}{$iFF.layoutDir} {$iFF.content.header.image.1st.overrideFile} } ### lib.modul.header_image_2nd ### second image in header id="banner" lib.modul.header_image_2nd = COA lib.modul.header_image_2nd { stdWrap.if.isFalse = {$iFF.content.header.image.2nd.switchOff} 10 = IMG_RESOURCE 10 { file = IMAGE file { import { required = 1 data = levelmedia: -1, slide wrap = uploads/media/ | listNum = {$iFF.content.header.image.2nd.listNum} } } } } ### Variant: manual file override [globalVar = LIT:1 = {$iFF.content.header.image.2nd.override}] lib.modul.header_image_2nd.10 = TEXT lib.modul.header_image_2nd.10.value = {$iFF.projectDir}{$iFF.templateDir}{$iFF.layoutDir} {$iFF.content.header.image.2nd.overrideFile} [global] lib.modul.header_image_2nd.stdWrap.prefixComment = 2|Output of lib.modul.header_image_2nd lib.modul.header_image_2nd.stdWrap.outerWrap.cObject = COA lib.modul.header_image_2nd.stdWrap.outerWrap.cObject { wrap = {$iFF.content.header.image.2nd.allWrap} 10 = TEXT 10.value = <img class="headImg2" src="|" alt="Banner-{page:title}" title="Banner-{page:title}" /> 10.insertData = 1 } ### Variant: User has chosen to link it [globalVar = LIT:1 = {$iFF.content.header.image.2nd.linkOn}] lib.modul.header_image_2nd.stdWrap.outerWrap.cObject { 10 = TEXT 10.value = <img class="headImg2" src="|" alt="Banner-{page:title}" title="Banner-{page:title}" /> 10.insertData = 1 10.typolink.parameter = {$iFF.content.header.image.2nd.linkUID} 10.typolink.target = } [global] ### lib.modul.headerslide lib.modul.headerslide = COA lib.modul.headerslide.stdWrap.if.isFalse = {$iFF.content.header.slide.switchOff} lib.modul.headerslide.wrap = {$iFF.content.header.slide.allWrap} lib.modul.headerslide.10 =< plugin.tx_imagecycle_pi1 lib.modul.headerslide.10 { imagewidth = {$iFF.content.header.slide.imagewidth} imageheight = {$iFF.content.header.slide.imageheight} transitionDuration = {$iFF.content.header.slide.transitionDuration} displayDuration = {$iFF.content.header.slide.displayDuration} } ### lib.modul.datetime lib.modul.datetime = COA lib.modul.datetime { stdWrap.if.isFalse = {$iFF.content.dateAndTime.switchOff} stdWrap.prefixComment = 2|Output of lib.modul.datetime wrap = <div class="aktDatum">|</div> 10 = TEXT 10 { data = date:U strftime = {$iFF.lang.std.content.dateAndTime.format} } } ### lib.modul.footer_licence lib.modul.footer_licence = TEXT lib.modul.footer_licence { if.isFalse = {$iFF.content.footer_licence.switchOff} stdWrap.prefixComment = 2|Output of lib.modul.footer_licence value = {$iFF.lang.std.content.footer.licence} wrap = <div id="footer_licence">|</div> } ### lib.modul.extended_news lib.modul.extended_news < plugin.tt_news lib.modul.extended_news { stdWrap.prefixComment = 2|Output of lib.modul.extended_example templateFile = {$iFF.projectDir}{$iFF.templateDir} {$iFF.layoutDir}extensions/news/tt_news_list_eqbox3.html alternatingLayouts = 3 code = LIST pid_list = 27 limit = 3 displayList.subheader_stdWrap.crop = 500 | ... | 1 catImageMode = 0 catTextMode = 0 } #### lib.modul.printlink lib.modul.printlink = COA lib.modul.printlink { stdWrap.if.isFalse = {$iFF.content.printpage.switchOff} stdWrap.wrap = <div class="printLink">|</div> stdWrap.typolink { addQueryString = 1 useCacheHash = 1 parameter.data = TSFE:id additionalParams = &type=1 ATagParams = rel="nofollow" target="_blank" title="{$iFF.lang.std.content.printpage.link.title}" } 10 = IMAGE 10 { file = {$iFF.projectDir}{$iFF.templateDir}{$iFF.layoutDir}{$iFF.content.printpage.link.icon} altText = {$iFF.lang.std.content.printpage.link.title} } } lib.modul.tipafriend = COA lib.modul.tipafriend { stdWrap.if.isFalse = {$iFF.content.tipafriend.switchOff} wrap = <div class="tipaFriend">|</div> 10 = TEXT 10 { noTrimWrap = |<a href="mailto:? subject={$iFF.lang.std.content.tipafriend.subject}&body={$iFF.lang.std.content.tipafriend.body} |"><img src="{$iFF.projectDir}{$iFF.templateDir}{$iFF.layoutDir}{$iFF.content.tipafriend.icon}" title="{$iFF.lang.std.content.tipafriend.title}" /></a>| data = getIndpEnv:TYPO3_REQUEST_URL rawUrlEncode = 1 } } iFF_S_basic_70_areas ### lib.area.tops lib.area.tops = COA lib.area.tops { stdWrap.prefixComment = 2|Output of lib.area.tops stdWrap.required = {$iFF.conf.autoHideIfEmpty} stdWrap.if.isFalse = {$iFF.area.tops.switchOff} stdWrap.outerWrap = {$iFF.area.tops.outerWrap} stdWrap.innerWrap2.stdWrap.if.isTrue = {$iFF.conf.specialTypeSite} stdWrap.innerWrap2 = {$iFF.conf.specialTypeSiteWrapBegin} | {$iFF.conf.specialTypeSiteWrapEnd} stdWrap.innerWrap = {$iFF.area.tops.innerWrap} } ### lib.area.header lib.area.header = COA lib.area.header { stdWrap.prefixComment = 2|Output of lib.area.header stdWrap.required = {$iFF.conf.autoHideIfEmpty} stdWrap.if.isFalse = {$iFF.area.header.switchOff} stdWrap.outerWrap = {$iFF.area.header.outerWrap} stdWrap.innerWrap2.stdWrap.if.isTrue = {$iFF.conf.specialTypeSite} stdWrap.innerWrap2 = {$iFF.conf.specialTypeSiteWrapBegin} | {$iFF.conf.specialTypeSiteWrapEnd} stdWrap.innerWrap = {$iFF.area.header.innerWrap} 10 =< lib.modul.nav_top 20 =< lib.modul.header_image_1st 30 =< lib.modul.header_image_2nd 40 =< lib.modul.headerslide 60 =< lib.modul.headerslogan 70 =< lib.modul.searchbox } ### lib.area.nav_main lib.area.nav_main = COA lib.area.nav_main { stdWrap.prefixComment = 2|Output of lib.area.nav_main stdWrap.required = {$iFF.conf.autoHideIfEmpty} stdWrap.if.isFalse = {$iFF.area.nav_main.switchOff} stdWrap.outerWrap = {$iFF.area.nav_main.outerWrap} stdWrap.innerWrap2.stdWrap.if.isTrue = {$iFF.conf.specialTypeSite} stdWrap.innerWrap2 = {$iFF.conf.specialTypeSiteWrapBegin} | {$iFF.conf.specialTypeSiteWrapEnd} stdWrap.innerWrap = {$iFF.area.nav_main.innerWrap} 20 =< lib.modul.nav_main_1 30 =< lib.modul.nav_main_2 } [globalVar = LIT:1 = {$iFF.area.nav_main.switchOff}] # Modify the skiplink to submenu instead!!! lib.modul.skiplinks.10.12 = TEXT lib.modul.skiplinks.10.12.value = nav_sub [global] ### lib.area.teaser ### make it a COA, just in case the user wants to put anything else here. lib.area.teaser = COA lib.area.teaser { stdWrap.prefixComment = 2|Output of lib.area.teaser stdWrap.required = {$iFF.conf.autoHideIfEmpty} stdWrap.if.isFalse = {$iFF.area.teaser.switchOff} stdWrap.outerWrap = {$iFF.area.teaser.outerWrap} stdWrap.innerWrap2.stdWrap.if.isTrue = {$iFF.conf.specialTypeSite} stdWrap.innerWrap2 = {$iFF.conf.specialTypeSiteWrapBegin} | {$iFF.conf.specialTypeSiteWrapEnd} stdWrap.innerWrap = {$iFF.area.teaser.innerWrap} 50 < styles.content.get 50.select.where = colPos=3 } ### lib.area.functions lib.area.functions = COA lib.area.functions { stdWrap.prefixComment = 2|Output of lib.area.functions stdWrap.required = {$iFF.conf.autoHideIfEmpty} stdWrap.if.isFalse = {$iFF.area.functions.switchOff} stdWrap.outerWrap = {$iFF.area.functions.outerWrap} stdWrap.innerWrap = {$iFF.area.functions.innerWrap} 10 =< lib.modul.nav_rootline 20 =< lib.modul.nav_language 25 =< lib.modul.tipafriend 30 > // reserved for font-size 35 =< lib.modul.printlink 40 =< lib.modul.datetime } ### lib.area.menu_content lib.area.menucontent = COA lib.area.menucontent { stdWrap.prefixComment = 2|Output of lib.area.menu_content stdWrap.required = {$iFF.conf.autoHideIfEmpty} stdWrap.outerWrap = | 10 =< lib.modul.nav_sub 20 =< lib.modul.selectorBox 50 < styles.content.get 50.select.where = colPos=1 } ### lib.area.side_content lib.area.sidecontent = COA lib.area.sidecontent { stdWrap.prefixComment = 2|Output of lib.area.side_content stdWrap.required = {$iFF.conf.autoHideIfEmpty} stdWrap.outerWrap = | 50 < styles.content.get 50.select.where = colPos=2 } ### lib.area.main_content lib.area.content = COA lib.area.content { stdWrap.prefixComment = 2|Output of lib.area.main_content stdWrap.required = {$iFF.conf.autoHideIfEmpty} stdWrap.outerWrap = | 50 < styles.content.get 50.select.where = colPos=0 } ### lib.area.main lib.area.main = COA lib.area.main { stdWrap.prefixComment = 2|Output of lib.area.main stdWrap.required = {$iFF.conf.autoHideIfEmpty} stdWrap.if.isFalse = {$iFF.area.main.switchOff} stdWrap.outerWrap = {$iFF.area.main.outerWrap} stdWrap.innerWrap2.stdWrap.if.isTrue = {$iFF.conf.specialTypeSite} stdWrap.innerWrap2 = {$iFF.conf.specialTypeSiteWrapBegin} | {$iFF.conf.specialTypeSiteWrapEnd} stdWrap.innerWrap = {$iFF.area.main.innerWrap} 50 = 60 =< lib.area.functions 70 =< lib.area.menucontent 80 =< lib.area.sidecontent 90 =< lib.area.content } # not used in th moment lib.area.main > ### lib.area.extended ### make it a COA, just in case the user wants to put anything else here. lib.area.extended = COA lib.area.extended { stdWrap.prefixComment = 2|Output of lib.area.extended stdWrap.required = {$iFF.conf.autoHideIfEmpty} stdWrap.if.isFalse = {$iFF.area.extended.switchOff} stdWrap.outerWrap = {$iFF.area.extended.outerWrap} stdWrap.innerWrap2.stdWrap.if.isTrue = {$iFF.conf.specialTypeSite} stdWrap.innerWrap2 = {$iFF.conf.specialTypeSiteWrapBegin} | {$iFF.conf.specialTypeSiteWrapEnd} stdWrap.innerWrap = {$iFF.area.extended.innerWrap} 50 < styles.content.get 50.select.where = colPos=4 } ### lib.area.footer lib.area.footer = COA lib.area.footer { stdWrap.prefixComment = 2|Output of lib.area.footer stdWrap.required = {$iFF.conf.autoHideIfEmpty} stdWrap.if.isFalse = {$iFF.area.footer.switchOff} stdWrap.outerWrap = {$iFF.area.footer.outerWrap} stdWrap.innerWrap2.stdWrap.if.isTrue = {$iFF.conf.specialTypeSite} stdWrap.innerWrap2 = {$iFF.conf.specialTypeSiteWrapBegin} | {$iFF.conf.specialTypeSiteWrapEnd} stdWrap.innerWrap = {$iFF.area.footer.innerWrap} 10 =< lib.modul.footer_licence 20 =< lib.modul.nav_footer } ### lib.area.ads lib.area.ads = COA lib.area.ads { stdWrap.prefixComment = 2|Output of lib.area.ads stdWrap.required = {$iFF.conf.autoHideIfEmpty} stdWrap.if.isFalse = {$iFF.area.ads.switchOff} stdWrap.outerWrap = {$iFF.area.ads.outerWrap} stdWrap.innerWrap = {$iFF.area.ads.innerWrap} } iFF_S_basic_70_page.ts ########################## page = PAGE [globalVar = LIT:html5 = {$iFF.conf.docTypeToUse}] page.includeJSlibs.modernizr = typo3/contrib/modernizr/modernizr.min.js [global] ### css with BE-Layout Name page.headerData { 10 = COA 10 { 10 = TEXT 10.value = {register:usedBeLayoutName} 10.insertData = 1 10.wrap = <link href="{$iFF.projectDir}{$iFF.templateDir}{$iFF.layoutDir}css/ | .css" rel="stylesheet" type="text/css" /> 20 = TEXT 20.value = {register:usedBeLayoutName} 20.insertData = 1 20.wrap = <link href="{$iFF.projectDir}{$iFF.templateDir}{$iFF.layoutDir}css/patches/patch- | .css" rel="stylesheet" type="text/css" /> 20.outerWrap = <!--[if lte IE 7]> | <![endif]--> } } ### manual setting of css files [globalVar = LIT:manCSS = {$iFF.conf.overrideCssFromTemplateHead}] page.headerData.10.10.value = {$iFF.layoutCssName} page.headerData.10.20.value = {$iFF.layoutPatchName} [global] ### JavaScript Filler-Link, if user switched on feature [globalVar = LIT:1 = {$iFF.conf.devFillerLinkOn}] page.headerData { 111 = TEXT 111.value = <script type="text/javascript" src="{$iFF.projectDir} {$iFF.extraDir}scripts/ftod.js"></script> 112 = TEXT 112.value = <script type="text/javascript">window.onload=function() {AddFillerLink("usedMenuContent","usedSideContent","usedMainContent");}</script> } [global] ### main page object page { adminPanelStyles = 0 typeNum = 0 1 =< lib.registerConf } page.bodyTag > page.bodyTagCObject = COA page.bodyTagCObject { wrap = <body | > 10 = TEXT 10.field = uid 10.stdWrap.noTrimWrap = | id="pageUID-|"| 20 = COA 20 { stdWrap.noTrimWrap = | class="|"| 10 = TEXT 10.field = pid 10.stdWrap.noTrimWrap = |pagePID-|| 20 = HMENU 20 { stdWrap.noTrimWrap = | pageRID-|| special = rootline special.range = 0|-1 includeNotInMenu = 1 1 = TMENU 1 { NO.subst_elementUid = 1 NO.allWrap = {elementUid} pageRID- |*| {elementUid} pageRID- |*| {elementUid} NO.doNotShowLink = 1 } } 30 = TEXT 30.value = {$iFF.conf.pageCID} 30.stdWrap.noTrimWrap = | pageCID-|| 40 = TEXT 40.value = 50 = TEXT 50.data = register:usedBeLayoutName 50.stdWrap.noTrimWrap = | layout-|| 60 = TEXT 60.if.isTrue.data = register:usedFeLayoutNr 60.data = register:usedFeLayoutNr 60.stdWrap.noTrimWrap = | variant|| 70 = TEXT 70.value = {$iFF.lang.std.UID} 70.stdWrap.noTrimWrap = | langID-|| 80 = TEXT 80.value = normal 80.override = registered 80.override.if.isTrue.data = TSFE:fe_user|user|username 80.stdWrap.noTrimWrap = | |User| 90 = TEXT 90.value = night 90.stdWrap.noTrimWrap = | || } } [hour => 06] page.bodyTagCObject.20.90.value [global] [hour => 10] page.bodyTagCObject.20.90.value [global] [hour => 13] page.bodyTagCObject.20.90.value [global] [hour => 16] page.bodyTagCObject.20.90.value [global] [hour => 22] page.bodyTagCObject.20.90.value [global] = morning = middday = afternoon = evening = night # manual, autoparser, templavoila later [globalVar = LIT:fluid = {$iFF.conf.templatingEngine}] page { 20 = FLUIDTEMPLATE 20 { file = template.html file.stdWrap.wrap = {$iFF.projectDir}{$iFF.templateDir}{$iFF.layoutDir}fluid/ | partialRootPath = {$iFF.projectDir}{$iFF.templateDir}{$iFF.layoutDir}fluid/partials/ layoutRootPath = {$iFF.projectDir}{$iFF.templateDir}{$iFF.layoutDir}fluid/layouts/ variables { layoutStyle = TEXT layoutStyle.value = {$iFF.conf.layoutStyle} specialTypeSite = TEXT specialTypeSite.value = {$iFF.conf.specialTypeSite} specialTypeSiteWrapBegin = TEXT specialTypeSiteWrapBegin.value = {$iFF.conf.specialTypeSiteWrapBegin} specialTypeSiteWrapEnd = TEXT specialTypeSiteWrapEnd.value = {$iFF.conf.specialTypeSiteWrapEnd} } settings { layoutStyle = TEXT layoutStyle.value = {$iFF.conf.layoutStyle} } settings > } } [global] ### scripts for skiplinks at the end of body # <!-- full skip link functionality in ie8 & webkit browsers --> page.includeJSFooter { skiplinks = {$iFF.projectDir}{$iFF.templateDir}{$iFF.frameworkDir}core/js/yaml-focusfix.js skiplinks.type = text/javascript } [globalVar = LIT:1 = {$iFF.nav.skip.jsIsInTemplate}] page.includeJSFooter.skiplinks > [global] ### switch AdminPanel on [globalVar = LIT:1 = {$iFF.conf.userAdmPanelOn}] page.adminPanelStyles = 1 [global] ### PAGE print = PAGE print { typeNum = 1 bodyTag = <body background-color:white!important; background-image:none!important;> includeCSS { file1 = {$iFF.projectDir}{$iFF.templateDir}{$iFF.layoutDir}css/print/print.css file1.media = print } ### Druckvorschau: 10 = TEXT 10 { wrap = <span class="vorschauicons"> | </span> value = <span><img src ="{$iFF.projectDir}{$iFF.templateDir}{$iFF.layoutDir} {$iFF.content.printpage.noprint.icon}" title="{$iFF.lang.std.content.printpage.noprint.title}"/></span> typolink { target = _self extTarget = _self parameter = javascript:window.close() } } ### Seite drucken: 20 = TEXT 20 { wrap = <span class="vorschauicons"> | </span> value = <span><img src ="{$iFF.projectDir}{$iFF.templateDir}{$iFF.layoutDir} {$iFF.content.printpage.print.icon}" title="{$iFF.lang.std.content.printpage.print.title}"/></span> typolink { target = _self extTarget = _self parameter = javascript:window.print() } } ### Inhalt der Seite holen: 50 < styles.content.get } ### RSS [globalVar = TSFE:type = 9818] lib.stdheader > tt_content.stdWrap.innerWrap > tt_content.stdWrap.wrap > # get away <div class="feEditAdvanced-firstWrapper" ...> if your logged into the backend styles.content.get.stdWrap > pageNewsRSS = PAGE pageNewsRSS.typeNum = 9818 pageNewsRSS.10 < styles.content.get pageNewsRSS.10.select.where = colPos=0 AND list_type = "news_pi1" pageNewsRSS.10.select { orderBy = sorting ASC max = 1 } config { disableAllHeaderCode = 1 xhtml_cleaning = none admPanel = 0 metaCharset = utf-8 # you need an english locale to get correct rfc values for <lastBuildDate>, ... locale_all = en_EN additionalHeaders = Content-Type:text/xml;charset=utf-8 disablePrefixComment = 1 baseURL = {$iFF.conf.url.userBaseUrl} absRefPrefix = {$iFF.conf.url.userBaseUrl} } plugin.tx_news.settings.format = xml [global]