Archive for the ‘Typo3’ Category

Typo3 8: Queries debuggen

25. September 2017

In typo3 8 kann man queries nicht mehr so wie vorher debuggen (das wäre ja auch zu einfach). Ich hab mir im DebugService eine statische Methode geschrieben, mit der es wieder funktioniert:

  1. public static function debugQuery($query){
  2. $objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
  3. $queryParser = $objectManager->get(\TYPO3\CMS\Extbase\Persistence\Generic\Storage\Typo3DbQueryParser::class);
  4. \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($queryParser->convertQueryToDoctrineQueryBuilder($query)->getSQL());
  5. \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($queryParser->convertQueryToDoctrineQueryBuilder($query)->getParameters());
  6. }

Typo3 8: styles.content.get -> weiße Seite

19. Juli 2017

Mit Typo3 8.7.0 hatte ich plötzlich das Problem, dass page.10.variables mit styles.content.get zu einer weißen Seite führte, sobald tatsächlich ein Inhalt da war. Stellt sich raus, das Problem war das hier:

  1. <f:layout name="Default" />

Offenbar darf das layout nicht Default.html heißen, weil Typo3 da irgendwelche Probleme hat. Sobald ich das in Main umbenannt habe, ging’s dann.

Datum mit deutschem Monatsnamen mit fluids format.date

30. März 2017

Mein Versuch

  1. <f:format.date format="d. F Y" date="now"/>

brachte leider immer nur einen englischen Monatsnamen zutage. Offenbar wird hier mit Datetime gearbeitet. Wenn man das Format aber mit % angibt, wird strftime benutzt, womit es geht:

  1. <f:format.date format="%d. %B %Y" date="now"/>

Typo3 7: Bilder im RTE aktivieren

23. August 2016

Offenbar ist die Bilder-Funktion nicht standardmäßig aktiviert. Man kann dies ändern unter Extensions -> HtmlArea RTE -> Configure -> Enable images in the RTE.
rte

Typo3 7: manuelles Frontend-einloggen will nicht funktionieren

22. August 2016

In einer Typo3 7.6.10 Installation musste ich Frontend-User via Ajax manuell einloggen. Das wollte partout nicht funktionieren und beim Betrachten der $GLOBALS[‘TSFE’] fiel mir auf, dass fe_user->user zwar gesetzt war, dass $GLOBALS[‘TSFE’]->loginUser aber immer wieder zurückgesetzt wurde nach dem neuladen der Seite. Irgendwann war mir das googeln zu blöd und ich hab im Typo3 source das Problem in der initUserGroups in sysext/frontend/Classes/Controller/TypoScriptFrontendController.php gefunden: mein User hatte einfach keine fe_groups zugewiesen (d.h. die Spalte “usergroup” in fe_users war leer). Sobald ich dort eine gültige fe_groups ID eingetragen habe, klappte der manuelle Frontend Login folgendermaßen:

  1. $loginData = array(
  2. 'username' => $username,
  3. 'uident_text' => $password,
  4. 'status' => 'login',
  5. );
  6. $GLOBALS['TSFE']->fe_user->checkPid = 0;
  7. $info = $GLOBALS['TSFE']->fe_user->getAuthInfoArray();
  8. $user = $GLOBALS['TSFE']->fe_user->fetchUserRecord($info['db_user'], $loginData['username']);
  9. //check password etc.
  10. if ($this->loginSuccessful($user, $password)) {
  11. $tsfe = $GLOBALS['TSFE'];
  12. $tsfe->fe_user->createUserSession($user);
  13. $tsfe->fe_user->setAndSaveSessionData('dummy', TRUE);
  14. $tsfe->loginUser = 1;
  15. return json_encode(['status' => 'success']);
  16. }

Typo3: nach dem Übersiedeln auf einen anderen Server sind die Bilder plötzlich weg

18. August 2016

Nach dem Überspielen einer existierenden Typo3 Instanz (7.6.10) waren plötzlich alle Bilder weg und im Backend unter “Filelist” sagte es mir, dass ich keinen Zugriff auf den Fileadmin Ordner
habe. Stellt sich heraus, beim ersten Versuch habe ich wohl die Permissions versemmelt oder sowas, jedenfalls hat sich “is online?” auf 0 gestellt und damit ging dann gar nichts mehr. Also im List-View auf den root-Knoten klicken, File-Storage “Fileadmin” bearbeiten und “is online?” wieder auf 1 stellen.

Fluid: inline Notation mit einem Wert

15. Juli 2016

Konkret brauchte ich die inline Notation von f:format.currency. Normalerweise sieht das so aus:

  1. <f:format.currency currencySign="€" decimalSeparator="," thousandsSeparator="." prependCurrency="false" decimals="2">{somevar}</f:format.currency>

Ich brauchte das ganze aber in einem data Attribut und wollte daher die inline Notation verwenden. Dabei fiel mir auf, dass ich gar nicht weiß, wie ich so einen Parameter der normalerweise innerhalb des Tags steht übergeben kann. Die Lösung:

  1. {somevar -> f:format.currency(currencySign:'€', decimalSeparator:',', thousandsSeparator:'.', prependCurrency:'false', decimals:2)}

Für Fluid gibt’s echt keine Entschuldigung. Hier noch der Link zur Lösung.

Typo3 Fluid: ein Media Bild verlinken

25. Mai 2016

Offenbar reicht es nicht, ein Bild mit f:image aufzurufen, denn wenn im Backend ein Link definiert ist, und zwar so:

bild

dann wird dieser natürlich ignoriert. Sagen wir, ich habe eine extbase entity namens “course” und diese hat genau ein Bild namens “image”. Und ich möchte nun, dass dieses Bild verlinkt wird. Zugreifen kann ich darauf mit

  1. {course.image.originalResource.link}

Damit kann ich zwar arbeiten, aber spätestens wenn ich ein target definiere, wird dieses ignoriert. Daher sollte man fluids link.typolink benutzen:

  1. <f:link.typolink parameter="{course.image.originalResource.link}">
  2. <f:image image="{course.image}/>
  3. </f:link.typolink>

und damit klappts dann auch mit dem Target!

Extbase Model in Listenansicht verstecken

17. Mai 2016

Um ein bestimmtes Model in der Listenansicht zu verstecken (in meinem Fall weil es in einem anderen Model verwendet und dort editiert werden soll), kann man ins TSConfig folgendes hinzufügen:

  1. [usergroup= 1]
  2. mod.web_list.table.tx_extname_domain_model_modelname.hideTable = 1
  3. [GLOBAL]

Falls es für alle Benutzergruppen gelten soll, einfach die Bedingung rausnehmen. Funktioniert tadellos!

Typo3 7: die Backend Login Box modifizieren

27. April 2016

Um der Backend Login Box ein eigenes Logo zu geben und dieses via CSS zu verändern, geht man folgendermaßen vor:

zunächst im Backend unter Erweiterungen -> Typo3 Backend -> Konfigurieren ein Logo definieren (und falls gewünscht eine Highlightfarbe).

Dann in ext_tables.php einer Erweiterung folgenden Code hinzufügen:

  1. $TBE_STYLES['inDocStyles_TBEstyle']='
  2. .typo3-login-logo {
  3. background: #000000;
  4. }
  5. ';

Do the following to set a custom logo in the backend login box and to change that logo via CSS:

Extensions -> Typo3 Backend -> configure: define a logo

Then add the following to the ext_tables.php of an extension:

  1. $TBE_STYLES['inDocStyles_TBEstyle']='
  2. .typo3-login-logo {
  3. background: #000000;
  4. }
  5. ';