Markus erklärt in einem Blogbeitrag, wie man gegebenenfalls die Server-Resourcen schonen kann, wenn man seine eigenen ViewHelper passend baut:
Fluid Compilable – Speed it up: Reelworx Blog
(als PDF-Backup)
Markus erklärt in einem Blogbeitrag, wie man gegebenenfalls die Server-Resourcen schonen kann, wenn man seine eigenen ViewHelper passend baut:
Fluid Compilable – Speed it up: Reelworx Blog
(als PDF-Backup)
Schon öfters standen wir vor dem Problem, dass TYPO3 irgendwelche HTTP-Header liefert, nur nicht die, die wir erwarteten. Heute bin ich auf die Spur gestoßen: bei einem Kunden blieben gelöschte Seiten im Index der Suchengine. Ursache war, dass bei gelöschten Seiten eine Defaultseite mit aktuellem Inhalt gezeigt wurde – nur wurde dabei kein 404 odgl. gesendet, sondern ein „302 Found“, wodurch die veraltete URL dem indexer als in Ordnung suggeriert wurde. Das brachte aber die indizierten Inhalte durcheinandern.
Weiterlesen
Immer wieder taucht die Frage auf, welchen der Cache-Buttons man nun eigentlich leeren müsse, um eine bestimmte fest-gecachte Einstellung aufzufrischen, oder welche für die Holzhammer-Methode (alles löschen) eigentlich nützlich ist. Im Zweifelfall drückt mal einfach alle Buttons – ohne zu wissen, warum eigentlich oder was man da eigentlich tut.
Markus hat in einem Blogbeitrag einmal zusammengefasst, welcher Button welche Caches leert, und welcher Cache für was zuständig ist. Danke!
Relativ einfach lässt sich den von TYPO3 generierte Seitentitel für die Ausgabe im Frontend wegnehmen und via headerData mit einem beliebigen TypoScript-Objekt befüllen. Leider ignoriert die Indexed Search dies und greift stattdessen auf eine interne (und via TS unzugängliche) Variable zurück. Chris (SwiftLizard) hat schon vor laaaanger Zeit das Problem bemerkt und auch einen Lösungsweg gefunden.
Danke, mir hat das tiefes Suchen im Core erspart :-)
Forcing indexed search to display the title you want.
(als PDF-Backup, Extension als Backup)
War eine Website einige Zeit in Benutzung (und steht evtl. auch ein Relaunch und/oder Upgrade bevor), kann durchaus auch einmal durchgewischt werden… Michiel hat hierzu (schon vor einigen Jahren) zwei Artikel verfasst, die sich mit dem Lowlevel Cleaner von TYPO3 befassen:
Im Januar 2014 hatte Mittwald u.a. via Newsletter verkündet, dass jetzt der Scheduler auch ohne eigens angelegtes Shell-Skript in Cronjobmanager angelegt werden kann.
Mit welchen genauen Einstellungen das klappt, findet sich leider (noch) nirgends bei Mittwald.


Fertig!
Die Extension „comments“ lässt sich sehr schnell integrieren udn sehr gut für eigene Anwendungsfälle konfigurieren. Einzige Ausnahme: man möchte Sprachlabels ändern, was normalerweise via TypoScript möglich ist:
plugin.tx_comments_pi1 {
_LOCAL_LANG {
de {
pi1_template.add_comment = Schreiben Sie einen Kommentar
}
}
}
Leider zeigt das (in Version 1.7.1) keinerlei Wirkung :-(
Eine Ausgabe des $LOCAL_LANG-Arrays, welches via \TYPO3\CMS\Frontend\Plugin\AbstractPlugin::pi_loadLL() geladen wird, zeigt bereits, dass das gesetzte neue Label überhabt nicht ausgelesen wird.
Die main()-Methode der Extension bekommt jedoch mittels $conf die TS-Konfiguration übergeben. Folglich muss der Fehler irgendwo dazwischen liegen. Dazwischen gibt es aber nur einen Aufruf: $this->fixLL();
Dieser Aufruf ist (laut phpdoc-Kommentar) ein Workaround für einen Bug #7154. Der enthaltene Link führt inzwischen leider ins Leere… Der Workaround wurde im Jahr 2008 in die Extension eingebaut. Ob er überhaupt noch nötig ist, wurde nicht weiter geprüft.
Die fixLL()-Methode durchläuft via foreach das Sprach-Array aus der TS-Konfiguration und ruft die interne Methode fixLL_internal() auf. Im PHP-Code fällt dort schnell etwas auf:
/**
* Helper function for fixLL. Called recursively.
*
* @param array $LL Current array
* @param array $ll Result array
* @param string $prefix Prefix
* @return void
*/
function fixLL_internal($LL, $ll, $prefix = '') {
while (list($key, $val) = each($LL)) {
if (is_array($val)) {
$this->fixLL_internal($val, $ll, $prefix . $key);
} else {
$ll[$prefix.$key] = $val;
}
}
}
Die Methode gibt nichts zurück (@return void) und verändert keine Klassenvariablen. Wie also soll hier etwas bearbeitetes die Methode verlassen? Und warum ist $ll als „Result array“ kommentiert, wenn es doch nirgends als Ergebnis ankommt?
Die Lösung des Problem ist das Ergänzen eines „&“ in der Methodendeklaration:
function fixLL_internal($LL, &$ll, $prefix = '')
Und wenn man dann seine Debugging-Session beendet hat, findet man auch den passenden Bugtracker-Eintrag – samt Patch :-(
Der einfachste Weg für eigene Icons ist via TypoScript den den Icon-Pfad und ggf die Dateiendung zu setzen:
plugin.tt_news.newsFiles.icon.path = fileadmin/templates/images/icons/ plugin.tt_news.newsFiles.icon.ext = png
Zu beachten ist hier lediglich, dass auch eine Datei „default“ mit passender Endung im Ordner liegt.
Eine Alternative könnte unter Umständen via replacement-Eigenschaft des stdWrap sein. Dies ist v.a. dann interessanter, wenn die Dateinamen nicht 1:1 von TYPO3 übernommen werden sollen, und bei replacement auch Reguläre Ausdrücke nutzbar wären.
plugin.tt_news.newsFiles {
stdWrap {
replacement {
10 {
search = typo3/sysext/cms/tslib/media/fileicons/
replace = fileadmin/images/icons/
}
20 {
search = gif
replace = png
}
}
}
}
Helmut hat eine interessante Alternative zu den beiden gängigen Wegen näher angeschaut.
http://typo3.helmut-hummel.de/post/90365109335/out-of-bound-typoscript-rendering
(als PDF-Backup)
Ruft man die Detailseite des tt_news-Plugins ohne gültige News-ID auf, so erhält man die nur wenig interessante Information, dass eben keine ID übergeben wurde. Oftmals schöner bzw. gewünscht wird hier aber stattdessen eine Default-Inhalt – z.B. die aktuellste Meldung.
Mit ein wenig TypoScript ist das schnell zusammengebaut
plugin.tt_news.noNewsIdMsg_stdWrap.override.if.isFalse.data = GPvar:tx_ttnews|tt_news plugin.tt_news.noNewsIdMsg_stdWrap.override.cObject = CONTENT plugin.tt_news.noNewsIdMsg_stdWrap.override.cObject { table = tt_news select { // Seiten-ID der tt_news-Artikel pidInList = 8 orderBy = datetimedesc max = 1 } }