Quantcast
Channel: TYPO3 Probleme? Hier Hilfen und Tipps
Viewing all 124 articles
Browse latest View live

TYPO3 – gridelements – tt_content Felder auslesen inkl. Image

$
0
0

Ich habe für einen besonderen Aufbau und Ausgabe einen eigenen HTML-Aufbau mir programmiert und habe alle tt_content Felder einzeln für gridelements ausgegeben.

Zuerst der normale gridelements Aufbau in einer html Datei ausgelagert:

#*************************
# Gridelements
#*************************
tt_content.gridelements_pi1.10 =< lib.stdheader
tt_content.gridelements_pi1.10.wrap = <div class="wrap wow fadeIn"><div class="header-over">|</div></div>
tt_content.gridelements_pi1.20.10.setup {
  
  # 1 Timeline
  1 < lib.gridelements.defaultGridSetup
  1 {
    innerWrap.cObject = COA
    innerWrap.cObject.10 = < lib.stdheader
    
    # Add the renderObj of the tab directly, this prevents the "csc-default"-wrap
    columns {
      default {
        renderObj = COA
        renderObj {
          10 =< tt_content
        }
      }
    }

    cObject = FLUIDTEMPLATE
    cObject {
      # Timeline HTML
      file = fileadmin/Templates/Extensions/Gridelements/Timeline.html
    }

  }
  
}

Dazu der HTML-Part in der Timeline.html Datei:
Wichtig, das Ihr mit der Variable {data.tx_gridelements_view_children} Euch alle Daten in eine ForEach Schleife ausgeben lasst.
Lasst Euch auch mal mit dem

<f:debug>{block}<f:debug>

alle Felder anzeigen und ausgeben.

<section id="cd-timeline" class="cd-container">
  <f:for each="{data.tx_gridelements_view_children}" as="block" iteration="iterator">
    <div class="cd-timeline-block{f:if(condition:iterator.isOdd, then: ' odd', else: ' even')} clearfix type-{block.CType}">
      <div class="cd-timeline-img cd-timeline-date wow fadeIn">
        <span>
          <time datetime="{f:format.date(date: block.date, format: 'd.m.y')}">
            <f:format.date date="{block.date}" format="Y" />
          </time>
        </span>
      </div><!-- cd-timeline-date -->
      <div class="cd-timeline-content wow{f:if(condition:iterator.isOdd, then: ' fadeInLeft', else: ' fadeInRight')}">
      	<h2>{block.header}</h2>
        <p>{block.bodytext}</p>
    	<div class="image-wrap"><f:cObject typoscriptObjectPath="lib.gridelementsContentImage" data="{block}" /></div>
      </div><!-- cd-timeline-content -->
    </div>
  </f:for>
</section>

Da Ihr Bilder nicht ausgegeben bekommt, ohne einen Viewhelper oder einer TypoScript Anweisung zu schrieben, müssen wir noch dieses Image-Feld extra aufbauen und ausgeben.
Da ich hier keine extra Extension für den Viewhelper erstellen wollte, habe ich mir die TypoScript Anweisung aufgebaut.

Image-Ausgabe:

lib.gridelementsContentImage = FILES
lib.gridelementsContentImage {
  references {
    table = tt_content
      uid.data = field:uid
      fieldName = image
    #data = levelmedia:-1, slide
    }

    begin = 0
    maxItems = 5

    renderObj = IMAGE
    renderObj {
      file.import.data = file:current:uid
      file.treatIdAsReference = 1
      altText.data = file:current:title
      wrap = |
    }
  stdWrap.wrap = |
}

Hier wird nun das Bild/ die Bilder ausgebgen und oben in dem HTML Template via „cObject typoscriptObjectPath“ eingebunden.

Ich hoffe Euch hilft das kleine Beispiel.
Gerne andere Lösungen und Fragen in den Kommentaren schreiben!


TYPO3 – tt_content subheader aktivieren

$
0
0

Um in TYPO3 6.2 Backend den Subheader immer zu aktivieren, müsst Ihr folgende PHP Code in die ext_tables.php eintragen, sollte die Datei nicht vorhanden sein, einfach in dem Ordner „typo3conf“ erstellen.

<?php
if (TYPO3_MODE === 'BE') {
	// enable subheader field to all tt_content elements
	\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette(
		'tt_content',
		'header',
		'--linebreak--,subheader;LLL:EXT:cms/locallang_ttc.xlf:subheader_formlabel',
		'after:header'
	);
}

Install-Cache leeren und der Subheader wird im Backend angezeigt.

TYPO3 6.2 – RTE Link Stil Class hinzufügen

$
0
0

Um in TYPO3 im RTE eine Class im Link / Stil – Popup hinzu zufügen, müsst Ihr folgendes TYPOSCRIPT in die TsConfig hinzufügen:

RTE classesAnchor ist hier der Ansprechbereich:

RTE {

	default {
		#angepasste CSS Datei in fileadmin speichern
		contentCSS = fileadmin/Templates/Css/Rte.css
		#useCSS = 1
		showTagFreeClasses = 1
		defaultContentLanguage = de

		buttons {
			link.properties.class.allowedClasses := addToList(testklasse)
		}
	}
}

RTE.classesAnchor {
	#Bezeichner im Pop-up
	testklasse {
		name = testklasse

		#css-Klasse (in .css definieren!)
		class = testklasse

		#type = page, file, url, mail
		type = page

		#Link-Icon
		#image=fileadmin/css/link_pdf.png
		titleText = Test
	}
}

in der CSS Datei dann folgendes eintragen:
a.testklasse {}

Somit gibt es nun bei „externalLink“ und bei „externalLinkInNewWindow“ eine neue Klasse.

TYPO3 – 7.6 LTS Release

$
0
0

Seit heute steht die neue TYPO3 7 LTS (7.6) als download bereit.

Übersicht der neuen Funktionen, Änderungen und Verbesserungen hier im Artikel von Patrick Lobacher und Michael Schams:

  • Veröffentlichungsdatum: 10. November 2015
  • Releasetyp: Long Term Support (LTS) Release
  • Vision: Embrace, Innovate, Deliver

Systemvoraussetzungen
PHP*: v5.5.0 – v5.6.x
MySQL: v5.5.x – v5.6.x (no strict mode)
Festplattenplatz: mindestens 200 MB
PHP Einstellungen:
memory_limit >= 128M
max_execution_time >= 240s
max_input_vars >= 1500
compilation option –disable-ipv6 must not be used
Backend benötigt IE >= 9 oder jeden anderen modernen Browser
*) weitere Details: PHP Minimum Requirements for TYPO3 CMS 7

Empfohlene Installationsschritte unter Linux/Mac OS X
(DocumentRoot ist beispielsweise /var/www/site/htdocs):
$ cd /var/www/site
$ wget --content-disposition get.typo3.org/7.6
$ tar xzf typo3_src-7.6.0.tar.gz
$ cd htdocs
$ ln -s ../typo3_src-7.6.0 typo3_src
$ ln -s typo3_src/index.php
$ ln -s typo3_src/typo3
$ touch FIRST_INSTALL

Symbolische Links unter Microsoft Windows:

  • unter Windows XP/2000 kann junction benutzt werden
  • unter Windows Vista und Windows 7 kann mklink benutzt werden

Upgrade zu TYPO3 CMS 7

  • Upgrades nur von TYPO3 CMS 6.2 LTS möglich
  • TYPO3 CMS < 6.2 sollte man erst auf TYPO3 CMS 6.2 LTS aktualisieren
  • Upgrade-Anleitung:
    http://wiki.typo3.org/Upgrade#Upgrading_to_7.6
  • Offzielles TYPO3 Guide „TYPO3 Installation and Upgrading“:
    http://docs.typo3.org/typo3cms/InstallationGuide
  • Generelles Vorgehen:
    • Prüfen, ob Mindestvoraussetzungen erfüllt sind (PHP, MySQL, etc.)
    • Das deprecation_*.log der TYPO3 Instanz durchsehen
    • Sämtliche Extensions auf den aktuellsten Stand bringen
    • Neuen TYPO3 Quellcode entpacken und im Install Tool den Upgrade Wizard ausführen
    • Startup Modul von Backend Benutzern überprüfen (optional)

Benachrichtigungseinstellungen bei Workspaces
Die Benachrichtigungseinstellungen (engl. Notifcation Settings) innerhalb der Workspaces wurden überarbeitet
Man kann nun sogar für den Stage publish-execute Einstellungen vornehmen

Suche im Dateibrowser
Im Popup des Dateibrowser ist nun eine einfache Suche integriert, die rekursiv agiert

 

TSconfg & TypoScript

Parameter für indexed_search
Einige Parameter für indexed_search, die bisher hart-kodiert waren,
können nun konfguriert werden:
titleCropAfter = 50
titleCropSignifier = ...
summaryCropAfter = 180
summaryCropSignifier =
hrefInSummaryCropAfter = 60
hrefInSummaryCropSignifier = ...
markupSW_summaryMax = 300
markupSW_postPreLgd = 60
markupSW_postPreLgd_offset = 5
markupSW_divider = ...

Dabei können folgende Schlüssel angesprochen werden:
plugin.tx_indexedsearch.results.
plugin.tx_indexedsearch.settings.results.

Alle Optionen besitzen auÿerdem stdWrap-Funktionalität

Konfguration des Path-Seperators bei indexed_search
– Es wurde eine neue TypoScript-Option breadcrumbWrap hinzugefügt, mit dem Path-Seperators bei indexed_search konfguriert werden kann
– Darüber wird der Pfad für die Breadcrumb bei Suchergebnissen angezeigt
– Die Option verfügt über Option-Split und ist standardmäßig auf „/“ konfguriert
plugin.tx_indexedsearch.settings.breadcrumbWrap = / || /

no_cache Parameter-Konfguration für indexed_search
– Es wurde eine neuen TypoScript-Option hinzugefügt:
forwardSearchWordsInResultLink.no_cache

– Damit kann eingestellt werden, ob der no_cache Paramater an die Seiten-Links innerhalb von indexed_search hinzugefügt wird
// Fuer Extbase-Plugins
plugin.tx_indexedsearch.settings.forwardSearchWordsInResultLink.no_cache = 1
// Fuer eingefuegte Plugins
plugin.tx_indexedsearch.forwardSearchWordsInResultLink.no_cache = 1

 

Bootstrap für Install Tool
Das Install Tool basiert nun komplett auf Bootstrap: Sowohl für die Installation und für die Konfiguration.

CSRF Schutz für eigene Plugins
Frontend Plugins müssen nun selbst für einen CSRF-Schutz sorgen:
$formToken = \TYPO3\CMS\Core\FormProtection\FormProtectionFactory::get()->getFormProtection()->
generateToken(’news’, ’edit’, $uid);
if (
$dataHasBeenSubmitted
&& \TYPO3\CMS\Core\FormProtection\FormProtectionFactory::get()->validateToken(
\TYPO3\CMS\Core\Utility\GeneralUtility::_POST(’formToken’), ’User setup’, ’edit’)) {
// alles in Ordnung
}
else {
// ungueltiger Token!
}

Neue Tabs für LinkBrowser

  • Mit diesem Feature kann der LinkBrowser um neue Tabs erweitert werden
  • Jeder Tab wird über einem sogenannten „LinkHandler“ gesteuert, welcher das folgende Interface implementieren muss:
    \TYPO3\CMS\Recordlist\LinkHandler\LinkHandlerInterface
  • Die LinkHandler werden über PageTSconfg registriert:

file {
handler = TYPO3\\CMS\\Recordlist\\LinkHandler\\FileLinkHandler
label = LLL:EXT:lang/locallang_browse_links.xlf:file
displayAfter = page
scanAfter = page
configuration {
customConfig = passed to the handler
}
}

  • Die Optionen displayBefore und displayAfter geben die Anzeigeposition der Tabs an
  • Die Optionen scanBefore und scanAfter regeln die Reihenfolge der Ausführung

$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’LinkBrowser’][’hooks’][1444048118] = [
’handler’ => \Vendor\Ext\MyClass::class,
’before’ => [], // optional
’after’ => [] // optional
];

Diverse Änderungen

  • Der TCA-Typ select muss nun mit einer Option renderType versehen werden
  • Folgende Werte sind hierbei zulässig:

’renderType’ => ’selectMultipleSideBySide’,
’renderType’ => ’selectCheckBox’,
’renderType’ => ’selectSingle’,
’renderType’ => ’selectSingleBox’,
’renderType’ => ’selectTree’,

Hier stehen nicht alle neuen Funktionen!
Alle Infos und Funktionen könnt Ihr hier nachlesen: TYPO3 v7.6 Was ist NEU Deutsch

Oder im Slide:

TYPO3 6.2 – tt_content Image Resouce auslesen

$
0
0

Ich möchte Euch an diesem kleinen Beispiel für die TYPO3 6.2.xx Version einmal zeigen, wie Ihr aus einem z.B. Text/Bild Element die Überschrift, den Text und das Bild auslesen könnt. Das Bild möchte ich aber als Background-Image auslesen und benötige daher nur den Image-Source-Link.

Auf der Seite ID=19 lese ich das abgelegte Bild/Text Element in der Spalte = 1 aus.

Hier das Beispiel TYPOSCRIPT 6.2.xx :

lib.tester = COA
lib.tester {
10 = COA
10 {
  # Content Elemente
  wrap = <div class="tester-outer">|</div>
  
  10 = CONTENT
  10 {
    
    table = tt_content
    select {
      orderBy = sorting
      where = colPos = 1
      pidInList = 19
      languageField = sys_language_uid
    }
    
    renderObj >
    renderObj < tt_content
    renderObj.stdWrap >
    renderObj = COA
    renderObj {
      
      #wraps Elemente
      stdWrap.required = 1
      stdWrap.wrap = |
      
      
      #IMAGE
      10 = FILES
      10 {
        references {
          table = tt_content
          fieldName = image
        }
        
        renderObj = COA
        renderObj {
          10 = IMG_RESOURCE
          10 {
            file {
              treatIdAsReference = 1
              import.data = file:current:publicUrl
            }
            #altText.data = file:current:title
            #emptyTitleHandling = useAlt
          }
          
          stdWrap.wrap = <div class="tester-bgimage" style="background-image: url(|);">
        }
      }
      #END IMAGE
      
      # TEXT
      20 = COA
      20 {
        
        
        # bodytext
        10 = TEXT
        10 {
          field = bodytext
          wrap = <h5>|</h5>
          required = 1
        }
        
        # Header
        20 = TEXT
        20 {
          field = header
          wrap = <h4>|</h4>
          required = 1
          #typolink.parameter.field = header_link
        }
        
        # Link
        30 = TEXT
        30 {
          value = Linkname hier
          wrap = <p class="tester">|</p>
          required = 1
          typolink.parameter.field = header_link
        }
        
        wrap = <div class="row"><div class="large-12 medium-12 columns tester-inner-wrap">|</div></div>
        
      }
      
      # CLOSE Tag
      100 = TEXT
      100.value (
      </div>
      )
      
    }
  }
}
}

Ich freue mich auf weitere Beispiele oder Kommentare!

TYPO3 Channel für #slack – Webtool

$
0
0

Um in Gruppen und Agenturen für jedes Projekt einen eigenes Chat zu haben, wird oft das Kommunikations-Tool #slack verwendet. Seit längeren gibt es auch eine #TYPO3 Gruppe. Meldet Euch dort einfach über diesen INVITE-Link an: TYPO3 #slack
Bisher sind dort aus den unterschiedlichen Bereichen (TYPO3, TYPO3 Extension, TYPO3 Hilfen, TYPO3 Länderbereiche) 175 Gruppen eingetragen und ca. 1700 TYPO3 Personen dort vertreten. Wir freuen uns auch auf Dich! :)

TYPO3 Buch: Moderne Extensionentwicklung für TYPO3 CMS mit Extbase & Fluid

$
0
0

Patrick Lobacher hat eine Neuauflage zu seinem ersten Teil „Moderne Extensionentwicklung für TYPO3 CMS“ veröffentlich: TYPO3 Extbase: Moderne Extensionentwicklung für TYPO3 CMS mit Extbase & Fluid 2. Auflage

Buchbeschreibung:

Brandneu zu TYPO3 CMS 7 LTS! Das Buch zur Extensionsprogrammierung mit Hilfe von Extbase & Fluid unter TYPO3 CMS – für Anfänger und Fortgeschrittene. Vollständig überarbeitete Neuauflage! Kaum eine TYPO3-Installation kommt ohne eigene Erweiterungen (Extensions) aus, die seit der Version TYPO3 CMS 4.3 mit Hilfe des DDD- und MVC-Frameworks „TYPO3 Extbase“ & der Templating Engine „Fluid“ programmiert werden. Dieses Buch bietet Ihnen als Beginner einen fundierten Einstieg in Planung und Realisierung professioneller Projekte mit Extbase und Fluid. Fortgeschrittene Entwickler profitieren von wertvollen Tipps aus der Praxis. Patrick Lobacher verbindet hier jahrelange Projekterfahrung mit seiner Expertise als Trainer und Fachbuchautor; so gelingt es ihm, seinen Lesern von Beginn an einen unmittelbaren Zugang zur komplexen Thematik zu verschaffen und theoretische Grundlagen in praxisrelevanten Szenarien zu vermitteln. Dabei wird ein didaktisches Beispiel verfolgt, welches Stück für Stück mit Funktionen angereichert wird. Am Ende stehen sehr komplexe Themen, wie AJAX, FAL, Backend-Module, JSON-View, Property Mapper & Co. Jedes der Beispiele kann zudem sofort auf GitHub heruntergeladen werden. Das Werk ist vollständig neu zu TYPO3 CMS ab Version 7 LTS überarbeitet worden und damit für die nächsten Releases gerüstet.

Da es nicht mehr den Verlag Open Source Press gibt, musste leider die Druckquallität etwas drunter leiden. Daher hat das Buch nicht mehr die highend Quallität. Zum nachlesen und lernen reicht es aber durchaus!
Jetzt auf Amazon das Buch kaufen

TYPO3 – Fluid aktuellen Wochentag ermitteln

$
0
0

Im Netz gibt es ein paar Anleitungen dazu, doch werden hier großere neue Viewhelper in PHP geschrieben und ich empfinde die Herangehensweise als ziemlich komplex. Daher habe hier eine recht schnelle und einfache Lösung wie Ihr den aktuellen Wochentag ermitteln könnt.

TypoScript:

# localize the current date format, used within the fluid templates
lib {
  currentDate = TEXT
  currentDate  {
    data = date : U
    strftime = %A
  }
}

(ggf. um den Cache zu umgehen, anstatt TEXT dann COA_INT verwenden.)

Fluid:

Heute ist <f:cObject typoscriptObjectPath="lib.currentDate" />

Wichtig, prüft noch mal Eure Spracheinstellugen:
config.locale_all = de_DE

Das war es eigentlich schon. Gerne könnt Ihr mir in den Kommentaren weitere Lösungen dazu vorschlagen!

EDIT:
Weitere Fluid Lösung von Paul Beck:

<f:format.date format="%A">now</f:format.date>

Fluid inline:

{f:format.date(date:'now', format:'%A')}

TYPO3 ab 6.2.16 link in Listen und Tabellen werden nicht umgewandelt

$
0
0

In Folge einer behobenen Sicherheitslücke werden per link ausgezeichnete Links im TYPO3 Listen- und Tabellen-Modul in der Frontend-Ausgabe nicht mehr richtig umgewandelt.

Folgendes TypoScript behebt diesen Umstand:

tt_content.bullets.20.split.1.parseFunc = < lib.parseFunc
tt_content.bullets.20.split.1.htmlSpecialChars >
tt_content.bullets.20.split.2.parseFunc = < lib.parseFunc
tt_content.bullets.20.split.2.htmlSpecialChars >
tt_content.table.20.innerStdWrap.parseFunc = < lib.parseFunc
tt_content.table.20.innerStdWrap.htmlSpecialChars >

Code-Hilfe von seomantix.de

TYPO3 – tx_news Image mit File verlinken

$
0
0

Für ein TYPO3 6.2 Projekt mit tx_news habe ich an der News Detail den Part für die Image-Ausgabe umgebaut um dort die Bilder mit einer File ({mediaElement.link}) zu verlinken.
Für die TYPO3 7 Version ist es etwas einfacher, da es dafür einen ViewHelper (f:link.typolink) gibt. Doch für die T3 6.2.xx Version muss man etwas anders den Fluid-Code aufbauen.
Hier verwende ich einmal den VH f:format.html und dann den link Code.
Vielleicht hat jemand auch noch eine schönere Lösung?

Als Erstes müssen wir die Bild-Abfrage in der News Datei: FalMediaImage.html bearbeiten und erweitern.

TypoScript für 6.2.xx Version. Da wir den Parser etwas abändern müssen, das dort keine P-Tags usw. ausgegeben werden.

lib.parseFuncNews < lib.parseFunc_RTE
lib.parseFuncNews.nonTypoTagStdWrap.encapsLines >

Fluid für 6.2.xx Version:

<f:if condition="{mediaElement.link}">
	<f:then>
		<f:format.html parseFuncTSPath="lib.parseFuncNews">
			<link {mediaElement.link}>
				<f:image src="{mediaElement.uid}" treatIdAsReference="1" title="{mediaElement.title}" alt="{mediaElement.alternative}" maxWidth="{settings.detail.media.image.maxWidth}" maxHeight="{settings.detail.media.image.maxHeight}" class="img-responsive" />
			</link>
		</f:format.html>
	</f:then>
	<f:else>
		<f:image src="{mediaElement.uid}" treatIdAsReference="1" title="{mediaElement.title}" alt="{mediaElement.alternative}" maxWidth="{settings.detail.media.image.maxWidth}" maxHeight="{settings.detail.media.image.maxHeight}" class="img-responsive" />
	</f:else>
</f:if>

Wichtig ist hier, dass die neue Parser-Funktion im f:format.html geladen wird parseFuncTSPath="lib.parseFuncNews" und {mediaElement.link} mit im link-Tag eingebunden wird. So sollte nun das News-Bild mit der z.B. PDF File verlinkt werden.
Wenn es keinen Link gibt, wird wieder die normale Ausgabe verwendet. Kann natürlich noch beliebig ausgebaut werden.

TYPO3 7 sieht dann etwas einfacher aus:
……

<f:then>
	<f:link.typolink parameter="{mediaElement.link}">
		<f:image src="{mediaElement.uid}" treatIdAsReference="1" title="{mediaElement.title}" alt="{mediaElement.alternative}" maxWidth="{settings.detail.media.image.maxWidth}" maxHeight="{settings.detail.media.image.maxHeight}" class="img-responsive" />
	</f:link.typolink>
</f:then>

……

So sollte es dann perfekt in der neuen TYPO3 Version funktionieren. Ich freue mich aber über „Verbessungsvorschläge“, daich eine schnelle Lösung gesucht habe und erstellt habe!

TYPO3 – tx_news Bootstrap Carousel wenn mehr als ein Bild

$
0
0

Diese Woche habe ich in einem TYPO3 Projekt was das Framework Bootstrap verwendet einen Bootstrap Carousel Slider in die tx_news eingebunden.
Hier möchte ich Euch kurz beschreiben wie Ihr selbst das Bootstrap Carousel in die Extension einbauen könnt: http://getbootstrap.com/javascript/#carousel

Als Erstes muss natürlich das Bootstrap Framework richtig im TYPO3 eingebunden werden. Dann gehen wir an die tx_news Templates dran.
Die Datei: FalMediaContainer.html müssen wir als Erstes bearbeiten und eine Abfrage einbauen, dass ein anderes Template verwendet wird, sobald mehr als ein Bild eingebunden wurde.

FalMediaContainer.html

<f:if condition="{media}">
	<!-- fal media files -->
	<div class="news-img-wrap">

		<f:if condition="{media -> f:count()} == 1">
			<f:then>
				<f:for each="{media}" as="mediaElement">
					<div class="outer">
						<f:if condition="{mediaElement.originalResource.type} == 2">
							<f:render partial="Detail/FalMediaImage" arguments="{mediaElement: mediaElement, settings:settings}"/>
						</f:if>
						<f:if condition="{mediaElement.originalResource.type} == 4">
							<f:render partial="Detail/FalMediaVideo" arguments="{mediaElement: mediaElement, settings:settings}"/>
						</f:if>
					</div>
				</f:for>
			</f:then>
			<f:else>
				<div id="carousel-news" class="carousel slide" data-ride="carousel">
					<!-- Indicators -->
					<ol class="carousel-indicators">
					<f:for each="{media}" as="mediaElement" iteration="iterator">
						<li data-target="#carousel-news" data-slide-to="{iterator.index}" class="{f:if(condition:'{iterator.isFirst} == 1',then:'active')}"></li>
					</f:for>
					</ol>

					<!-- Wrapper for slides -->
					<div class="carousel-inner" role="listbox">
						<f:for each="{media}" as="mediaElement" iteration="iterator">
							<f:if condition="{mediaElement.originalResource.type} == 2">
								<f:render partial="Detail/FalMediaImageSlider" arguments="{mediaElement: mediaElement, settings:settings, iterator:iterator}"/>
							</f:if>
						</f:for>
					</div>
				</div>
			</f:else>
		</f:if>
	</div>
</f:if>

Mit der Condition condition="{media -> f:count()} == 1" frage ich ab, ob es mehr als ein Bild gibt.
Sollte es mehr als ein Bild geben, verweise ich auf das „else“ und habe dort einen Teil des Bootstrap Carousel HTML´s eingebaut. Die for each Schleife verweise ich auf eine neue File: Detail/FalMediaImageSlider
Die Indicators erstelle ich mit einer zusätzlichen for each Schleife und einem iterator.index auf, damit wir ab der 0 den Iterator hochzählen.
Sollte es weniger als 2 Bilder geben, dann verweise ich auf die bekannte Datei: Detail/FalMediaImage hin.

Hier der Aufbau für die FalMediaImageSlider Datei:

<div class="item {f:if(condition:'{iterator.isFirst} == 1',then:'active')}">
	<div class="mediaelement mediaelement-image">
		<f:if condition="{settings.detail.media.image.lightbox}">
			<f:then>
				<a rel="{settings.detail.media.image.lightbox}" title="{mediaElement.title}" href="{f:uri.image(src:'{mediaElement.uid}' treatIdAsReference:1 maxWidth:'800')}">
					<f:image src="{mediaElement.uid}" treatIdAsReference="1" title="{mediaElement.title}" alt="{mediaElement.alternative}" maxWidth="{settings.detail.media.image.maxWidth}" maxHeight="{settings.detail.media.image.maxHeight}" class="img-responsive" />
				</a>
			</f:then>
			<f:else>
				<f:if condition="{mediaElement.link}">
					<f:then>
						<f:format.html parseFuncTSPath="lib.parseFuncNews">
							<link {mediaElement.link}>
							<f:image src="{mediaElement.uid}" treatIdAsReference="1" title="{mediaElement.title}" alt="{mediaElement.alternative}" maxWidth="{settings.detail.media.image.maxWidth}" maxHeight="{settings.detail.media.image.maxHeight}" class="img-responsive" />
							</link>
						</f:format.html>
					</f:then>
					<f:else>
						<f:image src="{mediaElement.uid}" treatIdAsReference="1" title="{mediaElement.title}" alt="{mediaElement.alternative}" maxWidth="{settings.detail.media.image.maxWidth}" maxHeight="{settings.detail.media.image.maxHeight}" class="img-responsive" />
					</f:else>
				</f:if>
			</f:else>
		</f:if>
	</div>
	<f:if condition="{mediaElement.description}">
		<p class="news-img-caption">
			{mediaElement.description}
		</p>
	</f:if>
</div>

Da der Bootstrap Slider eine „active“ Class für das erste Element benötigt, habe ich im ersten Teil eine Condition eingebunden: {f:if(condition:'{iterator.isFirst} == 1',then:'active')} .
Der restliche HTML/Fluid-Code sieht der org. Datei sehr ähnlich.
Diese kann natürlich nach belieben angepasst und umgebaut werden, wichtig das Ihr den Div-Container class="item" beibehaltet!

TYPO3 User eXperience Week 2016 Sponoren gesucht!

$
0
0

2009 hat alles angefangen und nun treffen sich zum dritten mal am 9. – 16. April 2016 in Festenburg im Harz 10 Webdesigner, 5 Projekt-Manager, 25 Entwickler und Schreiber um an dem TYPO3 Backend „Verbessungen“ in Bewegung zu setzten. TYPO3 User eXperience Week (UXW) sucht noch weitere Sponsoren um die vielen anfallenden Kosten zu decken!

Auch wir beteiligen uns mit einer Spende und wünschen uns, dass weitere Helfer uns folgen!

Folgene Spende-Möglichkeiten werden angeboten:

  • Rechnung mit ausgewiesener deutscher Mehrwertsteuer
  • PayPal
  • Kauf von Merchandising Artikeln
  • selbstzahlender Teilnehmer (bitte Vorab Kontakt mit dem Team aufnehmen!)

Alle weiteren Informationen findet Ihr natürlich auf der TYPO3 User eXperience Week Webseite

2014 – T3DUST – Distributions, Usability Solutions and Themes for TYPO3 – Petra und Jo Hasenau

Vergleich zwischen WordPress und TYPO3

$
0
0

Felix von der Agentur Elbflorenz Marketing hat einmal beide CMS Systeme (WordPress und TYPO3) miteinander verglichen und die Vor- und Nachteile beschrieben.

Zusammenfassung
Das einzige Kriterium für die Entscheidung für eine der zwei in diesem Beitrag vorgestellten CMS-Lösungen sind die Erwartungen an die zu erstellende Website. Dabei ist es weniger wichtig, wie groß das betreffende Unternehmen oder das geplante Webprojekt ist, sondern viel mehr der Zweck, der mit der Website verfolgt wird.

Hier geht es zu dem Artikel: TYPO3 oder WordPress

TYPO3 – DCE Extension – Support!

TYPO3 7.6.x RTE wird nicht angezeigt

$
0
0

In der neuen TYPO3 7.6.x Version kann es dazu kommen, dass der RTE nicht standardmäßig aktiviert ist!
Ich hatte das Problem, als ich die Ext.: fluid_styled_content installiert habe und die TYPO3 Ext.: css_styled_content deinstalliert, wurde der RTE nicht mehr im textmedia cType angezeigt.

In den Benutzer-Einstellungen könnt Ihr im Reiter: Bearbeiten und erweitere Funktionen hier einen Haken setzten: Rich-Text-Editor aktivieren (falls verfügbar)
Dann sollte der RTE wieder angezeigt werden.


TYPO3 Update – 6.2.22 und 7.6.6 LTS

TYPO3 7.6 – Text & Media Image auslesen und bearbeiten

$
0
0

Da immer mehr im Web gefragt wird, wie man nun in der neuen TYPO3 7.6 das Bild auslesen und ggf. bearbeiten kann, habe ich dazu mal eine neue Anleitung geschrieben.
Wichtig ist hier zu wissen, es gibt eine neue Content-Style-Engine = fluid_styled_content
TYPO3 möchte für die neuen Versionen (TYPO3 8) die Frontend-Ausgaben mit reinem Fluid ausgeben. Damit es später nicht mehr zu Problemen kommt, solltet Ihr in den neuen TYPO3 7 Versionen auch mit fluid_styled_content arbeiten. Den findet Ihr im Extension-Manager und könnt Ihr installieren, wichtig ist hier, Ihr solltet den alten „css_styled_content“ deinstallieren, da sonst dem Redakteur alle Elemente angeboten werden!
Im Root-Template unter „Statische Templates einschließen“ müsst Ihr dann noch „Content Elements (fluid_styled_content)“ laden und „Content Elements (css_styled_content)“ entfernen! Das sollten die „Vorbereitung“ für die neue Fluid-Engine sein.
Wichtig, es gibt nun keine Elemente mehr wie: Bild, Bild mit Text oder Text ! Diese wurden alle zusammengelegt und heißt nun „Text & Medien“ (textmedia). Hier könnt Ihr den TYPO3 7 Change zu dem Thema nachlesen: Migrate CTypes text, image and textpic to textmedia

Bevor Ihr aber nun anfangt die neuen Fluid-Elemente zu bearbeiten, müssen wir via typoscript dem TYPO3 System noch sagen, dass er auch die ausgelagerten Elemente verwenden soll. Schaut Euch dazu auf jeden Fall vorher noch mal die Extension: fluid_styled_content an: /typo3_src-7.6.xx/typo3/sysext/fluid_styled_content/
Im Resources Ordner liegen alle Templates die es im Backend gibt. D.h. wir können diese via Fluid erweitern, bearbeiten, auslesen usw.

Legt Euch dazu in Eurem fileadmin Ordner neue Strukturen an. Ich habe diese hier verwendet: /fileadmin/Templates/FluidStyledContent/Resources/…
Dort kopiere ich aber nicht alles rein, sondern nur wirklich das, was ich verändern/erweitern/bearbeiten möchte! Damit die Daten auch weiterhin aktualisiert werden.

Da ich selber noch nicht so viel damit gemacht habe, hier mal ein kleines Beispiel wie wir nun das Element „Text & Media“ / „textmedia“ bearbeiten können um z.B. nur ein Image auszugeben!

Meine Ordner-Struktur:
– fileadmin
— FluidStyledContent
— Resources
—- Private
—– Layouts
—– Partials
—– Templates

Im Ordner „Templates“ habe ich mir die Datei aus der Extension kopiert: Textmedia.html und die Datei aus dem Ordner Partials: MediaGallery.html
Da sie das Image rendert!

Damit nun der neue Fluid-Content auch geladen wird, müsst Ihr noch im Setup die neuen fluidContent RootPaths eintragen.

Dateien via typoscript auslagern:

# tt_content Fluid Extend
lib {
  fluidContent {
    templateRootPaths {
      50 = fileadmin/Templates/FluidStyledContent/Resources/Private/Templates/
    }
    
    partialRootPaths {
      50 = fileadmin/Templates/FluidStyledContent/Resources/Private/Partials/
    }
    layoutRootPaths {
      50 = fileadmin/Templates/FluidStyledContent/Resources/Private/Layouts/
    }
  }
}

Im TYPO3 Backend unter dem Element: Text & Media haben wir bei dem Tab: Erscheinungsbild die Select-Box: Layout
Mit diesem Selector können wir nun z.B. unterschiedliche Ausgaben aufbauen!

Orginal-Fluid-Template: Textmedia.html

<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">


<div id="c{data.uid}">
	<f:if condition="{gallery.position.noWrap} != 1">
		<f:render partial="Header" arguments="{_all}" />
	</f:if>



<div class="ce-textpic ce-{gallery.position.horizontal} ce-{gallery.position.vertical}{f:if(condition: gallery.position.noWrap, then: ' ce-nowrap')}">
		<f:if condition="{gallery.position.vertical} != 'below'">
			<f:render partial="MediaGallery" arguments="{_all}" />
		</f:if>



<div class="ce-bodytext">
			<f:if condition="{gallery.position.noWrap}">
				<f:render partial="Header" arguments="{_all}" />
			</f:if>
			<f:format.html>{data.bodytext}</f:format.html>
		</div>



		<f:if condition="{gallery.position.vertical} == 'below'">
			<f:render partial="MediaGallery" arguments="{_all}" />
		</f:if>
	</div>



	<f:render partial="Footer" arguments="{_all}" />
</div>


</html>

Jetzt können wir mit der Auswahl vom dem z.B. „Layout 2“ das Template anders aufbauen lassen.
Hier reicht nun schon ein einfaches condition="{data.layout}==2" !
Mit dem debug {data} könnt Ihr euch auch mal alle vorhanden Daten ausgeben lassen. So seht Ihr dann das Feld: layout

Nun habe ich noch die HTML-Datei „MediaGallery.html“ im Ordner Partials kopiert und in „MediaRawImage.html“ benannt.
Dort möchte ich jetzt ein reines Bild ohne Div´s oder Extra-Einstellungen ausgeben:
(Wäre z.B. auch pratisch um einen TYPO3 Image Slider zu programmieren)

Das HTML können wir dann mit einer condition / then / else aufbauen.
Hier frage ich nun das Feld „layout“ ab und sage, wenn „Layout 2“ ausgewählt wurde, dann lade mir das neue HTML/Fluid Template: MediaRawImage
Wenn das nicht ausgewählt ist, dann lade das normale Text & Media Element (MediaGallery.html).

Neues Fluid Textmedia.html

<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:if condition="{data.layout}==2">
	<f:then>
		<f:if condition="{gallery.position.vertical} != 'below'">
			<f:render partial="MediaRawImage" arguments="{_all}" />
		</f:if>
	</f:then>
	<f:else>
		<f:if condition="{gallery.position.vertical} != 'below'">
			<f:render partial="MediaGallery" arguments="{_all}" />
		</f:if>
	</f:else>
</f:if>
</html>

Nun könnt Ihr in der neuen Fluid Image Datei: MediaRawImage.html das Fluid so anpassen wie ihr es haben wollt.
Hier ein Beispiel MediaRawImage.html:

<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/FluidStyledContent/ViewHelpers" data-namespace-typo3-fluid="true">

<f:for each="{gallery.rows}" as="row">
	<f:for each="{row.columns}" as="column">
		<f:switch expression="{column.media.type}">
			<f:case value="3">
				<f:render section="audioType" arguments="{_all}" />
			</f:case>
			<f:case value="4">
				<f:render section="videoType" arguments="{_all}" />
			</f:case>
			<f:case default="TRUE">
				<f:render section="imageType" arguments="{_all}" />
			</f:case>
		 </f:switch>
	</f:for>
</f:for>

<f:section name="imageType">
	<f:render section="media" arguments="{_all}" />
</f:section>

<f:section name="audioType">
	<f:render section="media" arguments="{_all}" />
</f:section>

<f:section name="videoType">
	<f:render section="media" arguments="{_all}" />
</f:section>

<f:section name="media">
	<f:media file="{column.media}" width="{column.dimensions.width}" height="{column.dimensions.height}" alt="{column.media.alternative}" title="{column.media.title}" />
</f:section>
</html>

Natürlich könnt Ihr auch die Bereiche wie Audio und Video löschen! 😉
Aber wichtig, Ihr müsst das f:render behalten, da dort das Image aufgebaut und abgefragt wird!

Das „Label“ könnt Ihr noch umbenennen, dazu in die Seiteneigenschaften von der Root-Seite gehen.

TSconfig:

TCEFORM {
	tt_content {
		layout {
			altLabels {
				0 = Standard
				2 = Roh Bild
			}
		}
	}
}

Wie geschrieben, bin ich selbst noch nicht so tief in dem neuen fluid-content drin, daher gerne in den Kommentaren ander Wege/Lösungen schreiben! Danke!

TYPO3 7.6 – fluid_styled_content um eigene Konstanten erweitern

$
0
0

Die neue TYPO3 7.6 Extension fluid_styled_content ersetzt die alte css_styled_content und daher beschreibe ich Euch hier wie Ihr eigene Konstanten dort verwenden und übergeben könnt.
Schaut Euch auf jeden Fall mal im sysext Ordner die original Extension an, dort gibt es schon ein paar Constants für die Grund-Einstellungen.
Und genau da können wir unsere eigenen Konstanten mit eintragen! Wir gehen dazu in unser Root-Setup und tragen dort folgende Beispiel TYPOSCRIPT Werte ein.

In meinen Beispiel möchte ich einem neuen IMAGE – Element eigene width und height Werte via typoscript geben:
(hier die Anleitung wie Ihr das TYPO3 Element „Text & Media“ erweitert)

# tt_content Fluid Extend
lib {
  fluidContent {    
    settings {
      # neues Bild-Element
      mediaSlider {
        width = {$styles.content.mediaRawImage.width}
        height = {$styles.content.mediaRawImage.height}
      }
    }
  }
}

In Euren Root-Constants tragt Ihr dann folgende typoscript Werte ein:

styles {
  content {
    mediaRawImage {
      width = 360c
      height = 144c
    }
  }
}

Fluid_Content HTML-Template bearbeiten
(hier die Anleitung wie Ihr das TYPO3 Element „Text & Media“ erweitert)

<f:section name="media">
	<f:media
		file="{column.media}"
		width="{settings.mediaSlider.width}"
		height="{settings.mediaSlider.height}"
		alt="{column.media.alternative}"
		title="{column.media.title}"
		class="img-responsive"
	/>
</f:section>

nun könnt Ihr via typoscript die Höhe und Breite des neuen Element bearbeiten.
Natürlich könnt Ihr auch alle anderen Elemente bearbeiten und um eigenen Konstanten erweitern und um konfigurieren.

TYPO3 7.6 – indexed_search Template auslagern und erweitern

$
0
0

Bis vor ein paar Monaten waren die TYPO3 6.2 indexed_search Fluid Version noch etwas am kränkeln und lief noch nicht perfekt. Sollte sich aber mit den neuen TYPO3 7.6 Versionen geändert haben…
Nun möchte ich Euch erst einmal erklären, wie Ihr das HTML Template auslagern und somit auch bearbeiten könnt!
Danach erkläre ich noch, wie Ihr die Search-Box auslagern und in Eurer Template integrieren könnt und die Suchwörter auch an die Such-Seite übergeben werden!

Dazu kopiert von der Ext. indexed_search den Resources Ordner und legt den in Eurer fileadmin-System ab.
Nun trag Ihr in Eurer „Setup“ folgende Werte ein:

# Plugin configuration
plugin {
  tx_indexedsearch {
    view {
      templateRootPaths {
        0 = EXT:indexed_search/Resources/Private/Templates/
        999 = {$plugin.tx_indexedsearch.view.templateRootPath}
      }
      partialRootPaths {
        0 = EXT:indexed_search/Resources/Private/Partials/
        999 = {$plugin.tx_indexedsearch.view.partialRootPath}
      }
      layoutRootPaths {
        0 = EXT:indexed_search/Resources/Private/Layouts/
        999 = {$plugin.tx_indexedsearch.view.layoutRootPath}
      }
    }
  }
}

Allgemeine Einstellungen könnt Ihr der Anleitung entnehmen:
https://docs.typo3.org/typo3cms/extensions/indexed_search/latest/Configuration/TypoScript/Index.html

Und dazu die passenden Konstanten (Pfade natürlich anpassen):

plugin {
  tx_indexedsearch {
    view {
      # cat=plugin.tx_indexedsearch/file; type=string; label=Path to template root (FE)
      templateRootPath = fileadmin/Templates/Plugin/IndexedSearch/Resources/Private/Templates/
      # cat=plugin.tx_indexedsearch/file; type=string; label=Path to template partials (FE)
      partialRootPath = fileadmin/Templates/Plugin/IndexedSearch/Resources/Private/Partials/
      # cat=plugin.tx_indexedsearch/file; type=string; label=Path to template layouts (FE)
      layoutRootPath = fileadmin/Templates/Plugin/IndexedSearch/Resources/Private/Layouts/
    }
  }
}

Nun könnt Ihr in dem Search Template alles anpassen und die Extension kann weiterhin geupdated werden.
Als nächstes zeige ich Euch, wie Ihr z.B. nur ein Suchfeld auf Eure Webseite einbaut und die Suchwörter an die Such-Seite übermittelt.
Bitte schaut Euch auch mal TYPO3 FLUID FORM einmal genauer an:
https://docs.typo3.org/typo3cms/ExtbaseGuide/Fluid/ViewHelper/Form.html
Dort sind soweit alle Begriffe erklärt, die wir nun in den FORM-Tag einbauen.

Search-Formular mit FLUID nachbauen:

<f:form class="main-search" pageUid="14" method="post" id="tx_indexedsearch" noCacheHash="true" absolute="0"  action="search" extensionName="IndexedSearch" pluginName="pi2" controller="Search">

<div class="hidden tx-indexedsearch-hidden-fields">
<input name="tx_indexedsearch_pi2[search][_sections]" value="0" type="hidden">
<input id="tx_indexedsearch_freeIndexUid" name="tx_indexedsearch_pi2[search][_freeIndexUid]" value="_" type="hidden">
<input id="tx_indexedsearch_pointer" name="tx_indexedsearch_pi2[search][pointer]" value="0" type="hidden">
<input name="tx_indexedsearch_pi2[search][ext]" value="" type="hidden">
<input name="tx_indexedsearch_pi2[search][searchType]" value="1" type="hidden">
<input name="tx_indexedsearch_pi2[search][defaultOperand]" value="0" type="hidden">
<input name="tx_indexedsearch_pi2[search][mediaType]" value="-1" type="hidden">
<input name="tx_indexedsearch_pi2[search][sortOrder]" value="rank_flag" type="hidden">
<input name="tx_indexedsearch_pi2[search][group]" value="" type="hidden">
<input name="tx_indexedsearch_pi2[search][languageUid]" value="-1" type="hidden">
<input name="tx_indexedsearch_pi2[search][desc]" value="" type="hidden">
<input name="tx_indexedsearch_pi2[search][numberOfResults]" value="10" type="hidden">
<input name="tx_indexedsearch_pi2[search][extendedSearch]" value="" type="hidden">
</div>

                    <div class="input-row">
                        <div class="form-group tx-indexedsearch-form">
                            <f:form.textfield name="search[sword]" value="" id="tx-indexedsearch-searchbox-sword" class="form-control tx-indexedsearch-searchbox-sword" placeholder="Webseite durchsuchen..." />
                        </div><!-- /.form-group -->
                        <div class="form-group tx-indexedsearch-search-submit">
                            <f:form.button type="submit" class="btn btn-default tx-indexedsearch-searchbox-button" name="search[submitButton]" value="" id="tx-indexedsearch-searchbox-button-submit"><i class="fa fa-search"></i></f:form.button>
                        </div>
                    </div>
                </f:form>

Ändert noch die „pageUid“ in Eure ID ab, wo das eigentliche indexed_search PlugIn eingebunden ist. (im meinen Fall die ID=14).
Die „hidden“ Fields müsst Ihr an Eure PlugIn Einstellungen anpassen.
Mein Markup habe ich nun mit Bootstrap aufgebaut, dass könnt Ihr natürlich auch anpassen.

Wichtig: Im Backend unter den PlugIn-Einstellungen auch das Indexed-Search FLUID Template auswählen!

Soweit sollte nun alles passen und das Suchwort, sollte dann an die Suchseite übergeben werden.
Gerne in den Kommentaren Infos, Tips oder Fragen schreiben.

TYPO3 Update – 8.1 Version Release

$
0
0

Heute kam das neue TYPO3 Update 8.1 Version heraus und steht nun als Download bereit. Zu den vielen neuen Features gab es auch einige Backend-Verbesserungen. Diese TYPO3-BE-Verbessungen wurden auf der vorgestellten TYPO3 User eXperience Week 2016 entwickelt und verbessert. Hier geht es zu dem Vorort T3UXW Bericht.

Die neue TYPO3 8.1 Version bringt folgende Erneuerungen mit sich: PDF TYPO3 8.x – Was ist neu
In der PDF könnt Ihr die neuen Infos nachlesen: Backend User Interface, TSconfig & TypoScript, Änderungen im System, Extbase & Fluid und Veraltete/Entfernte Funktionen.

Hier geht es zum Download der TYPO3 8.1 Version: https://typo3.org/download/
Installation-Anleitung für die TYPO3 8.1 Version: https://github.com/TYPO3/TYPO3.CMS/blob/master/INSTALL.md

Viewing all 124 articles
Browse latest View live