Active-Klasse für Navigations-Element in Lumen

caticonslite_bm_alt

Da Lumen im Gegensatz zu Laravel für das Routing auf FastRoute setzt, ist es nicht möglich den Active-Helper für Laravel zu verwenden. Allerdings ist das gewünschte Ziel auch mit der Blade-Template-Engine einfach zu erreichen, selbst für „named routes“:

<ul class="nav">
	<li class="{{ (\Request::url() == route('index')) ? 'active' : '' }}"><a href="route('index')">Home</a></li>
	<li class="{{ (\Request::url() == route('advantages')) ? 'active' : '' }}"><a href="route('advantages')">Advantages</a></li>
</ul>

TYPO3 Flow über HTTP- statt GIT-Protokoll mittels Composer laden

caticonslite_bm_alt

Aufgrund von erhöhter Verwendung des Git-Protokolls am Git-Server von TYPO3 wird die Anzahl der maximal erlaubten Verbindungen überschritten und daher Verbindungen vom Server verworfen. Bei der Installation von TYPO3 Flow mittels Composer (z.B. „composer create-project –dev –keep-vcs typo3/flow-base-distribution Quickstart“) äußert sich das mit der folgenden Fehlermeldung:

[RuntimeException]                                                                                                                                                                                                  
Failed to execute git clone --no-checkout 'git://git.typo3.org/Flow/Distributions/Base.git' 'Quickstart/' && cd 'Quickstart/' && git remote add composer 'git://git.typo3.org/Flow/Distributions/Base.git' && git fetch composer  
fatal: read error: Die Verbindung wurde vom Kommunikationspartner zurückgesetzt

Dieses Problem lässt sich umgehen, indem man in Git alternative URLs zur Verwendung konfiguriert. Für typo3/flow-base-distribution ist das:

git config --global url."http://git.typo3.org/Flow/Distributions/Base.git".insteadOf "git://git.typo3.org/Flow/Distributions/Base.git"
git config --global url."http://git.typo3.org/Packages/TYPO3.Flow.git".insteadOf "git://git.typo3.org/Packages/TYPO3.Flow.git"
git config --global url."http://git.typo3.org/Packages/TYPO3.Fluid.git".insteadOf "git://git.typo3.org/Packages/TYPO3.Fluid.git"
git config --global url."http://git.typo3.org/Packages/TYPO3.Eel.git".insteadOf "git://git.typo3.org/Packages/TYPO3.Eel.git"
git config --global url."http://git.typo3.org/Packages/TYPO3.Welcome.git".insteadOf "git://git.typo3.org/Packages/TYPO3.Welcome.git"
git config --global url."http://git.typo3.org/Packages/TYPO3.Party.git".insteadOf "git://git.typo3.org/Packages/TYPO3.Party.git"
git config --global url."http://git.typo3.org/Packages/TYPO3.Kickstart.git".insteadOf "git://git.typo3.org/Packages/TYPO3.Kickstart.git"
git config --global url."http://git.typo3.org/Flow/BuildEssentials.git".insteadOf "git://git.typo3.org/Flow/BuildEssentials.git"

Verwendung des ApplicationContext in TYPO3

caticonslite_bm_alt

TYPO3 bietet die Möglichkeit die Applikation in unterschiedlichen Kontexten (z.B. Development, Staging und Production) laufen zu lassen. Hierfür wird mittels Webserver-Konfiguration die Environment-Variable „TYPO3_CONTEXT“ gesetzt. Ein mögliche Variante zum Setzen des Kontexts befindet sich in der .htaccess-Beispieldatei aus dem typo3_src-Ordner, in angepasster und optimierter Form sieht dies wie folgt aus:

RewriteRule .? - [E=TYPO3_CONTEXT:Production]
RewriteCond %{HTTP_HOST} =staging.webentwickler.at
RewriteRule .? - [E=TYPO3_CONTEXT:Production/Staging]
RewriteCond %{HTTP_HOST} =dev.webentwickler.at
RewriteRule .? - [E=TYPO3_CONTEXT:Development]

Im o.g. Beispiel wird standardmäßig der TYPO3_CONTEXT bzw. in weiterer Folge der ApplicationContext auf „Production“ gesetzt. Für den Hostnamen „staging.webentwickler.at“ wird der Kontext „Production/Staging“ und für „dev.webentwickler.at“ der Kontext „Development“ gesetzt.

Der somit gesetzt Kontext kann nun in TypoScript bzw. direkt im Programmcode verwendet werden. Grundsätzlich wäre es  möglich den Kontext via Environment-Variable abzufragen, darauf sollte aber verzichtet werden und stattdessen die vom TYPO3-Core bereitgestellten Wrapper-Methoden verwendet werden, da es z.B. bei der Verwendung von php_fpm zu veränderten Environment-Variablen (REDIRECT_-Präfix, z.B.: REDIRECT_TYPO3_CONTEXT) kommen kann. In TypoScript verwendet man:

[applicationContext = Development]
	plugin.tx_webentwickler.settings.email = test@dev.webentwickler.at
[global]

Im PHP-Code (hier: „AdditionalConfiguration.php“):

if (\TYPO3\CMS\Core\Utility\GeneralUtility::getApplicationContext() == 'Development') {
	$GLOBALS['TYPO3_CONF_VARS']['SYS']['displayErrors'] = 1;
}

In einer sauber programmierten Anwendung sollte es grundsätzlich so sein, dass sämtliche Konfigurationen in TypoScript vorgenommen werden und somit die Verwendung der Methode getApplicationContext() im Programmcode nicht erforderlich sein, sondern ausschließlich auf die Konfigurationsdatei beschränken sollte.

Weitere Informationen zur Verwendung findet man in der TypoScript Reference unter Condition reference/applicationContext.

Überschriften in TYPO3 umbenennen

caticonslite_bm_alt

In TYPO3 lassen sich Überschriften direkt im Content Element/Inhaltslement und im Rich Text Editor (RTE) festlegen. Die vordefinierten Labels „Layout x“ bzw. „Headline x“ sind wenig aussagekräftig und für Redakteure nicht ausreichend beschreibend. Beide Arten von Labels lassen sich wie folgt anpassen.

Anlegen der Übersetzungsdatei (z.B. in „EXT:projektkonfiguration/Resources/Private/Language/locallang_db.xlf“):

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
	<file source-language="en" datatype="plaintext" original="messages" date="2014-09-249T09:33:00Z" product-name="projektkonfiguration">
		<header/>
		<body>
			<trans-unit id="label.h1">
				<source>Main headline</source>
			</trans-unit>
			<trans-unit id="label.h2">
				<source>Headline</source>
			</trans-unit>
			<trans-unit id="label.h3">
				<source>Sub headline</source>
			</trans-unit>
		</body>
	</file>
</xliff>

Zusätzlich kann können auch noch Übersetzungen z.B. für Deutsch angelegt werden.

Zuweisen der Überschriften-Labels für Content Element in User- oder PageTS:

TCEFORM.tt_content.header_layout {
	altLabels.1 = LLL:EXT:projektkonfiguration/Resources/Private/Language/locallang_db.xlf:label.h1
	altLabels.2 = LLL:EXT:projektkonfiguration/Resources/Private/Language/locallang_db.xlf:label.h2
	altLabels.3 = LLL:EXT:projektkonfiguration/Resources/Private/Language/locallang_db.xlf:label.h3
}

Zuweisen der Überschriften-Labels für den RTE in User- oder PageTS:

RTE.default.buttons.formatblock.items {
	h1.label = LLL:EXT:projektkonfiguration/Resources/Private/Language/locallang_db.xlf:label.h1
	h2.label = LLL:EXT:projektkonfiguration/Resources/Private/Language/locallang_db.xlf:label.h2
	h3.label = LLL:EXT:projektkonfiguration/Resources/Private/Language/locallang_db.xlf:label.h2
}

Git-Problem „‚git status –porcelain‘ failed in submodule“ beheben

$ git status
error: cannot fork() for status: Cannot allocate memory
fatal: Could not run 'git status --porcelain' in submodule typo3_src
fatal: 'git status --porcelain' failed in submodule typo3_src

Die oben genannten Fehlermeldungen sind auf ein kaputtes .git-Verzeichnis/Repository im genannten Submodule zurückzuführen. Das Problem lässt sich wie folgt beheben:

rm -Rf typo3_src/
git checkout typo3_src
git submodule update
1 2 3 4 8  nach oben