composer
27. December 2019
composer create-project typo3/cms-base-distribution my-new-project ^9.5
composer require vendorname/extension
composer dump-autoload
debug function for extension development
7. July 2017
\TYPO3\CMS\Core\Utility\DebugUtility::debug($varToDebug);
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($varToDebug);
use TYPO3\CMS\Extbase\Persistence\Generic\Storage\Typo3DbQueryParser;
$queryParser = $this->objectManager->get(Typo3DbQueryParser::class);
DebuggerUtility::var_dump(
$queryParser->convertQueryToDoctrineQueryBuilder($query)->getSQL()
);
redirect to https
23. September 2016
RewriteCond %{SERVER_PORT} !^443$ RewriteRule (.*) https://%{HTTP_HOST}/$1 [L]
get TYPO3 from shell or copy from local
25. May 2016
wget http://prdownloads.sourceforge.net/typo3/blankpackage-7.6.x.tar.gz
wget http://prdownloads.sourceforge.net/typo3/typo3_src-7.5.x.tar.gz
scp typo3_src-x.x.x.tar.gz sshuser@xxxx.xx:folder/
patch -p1 < XXX.diff
choose controller action with flexform (switchableControllerActions)
27. April 2016
<?xml version="1.0" encoding="UTF-8"?> <T3DataStructure> <sheets> <general> <ROOT> <TCEforms> <sheetTitle>XXX</sheetTitle> </TCEforms> <type>array</type> <el> <switchableControllerActions> <TCEforms> <label>Views</label> <onChange>reload</onChange> <config> <type>select</type> <items type="array"> <numIndex index="1" type="array"> <numIndex index="0">First view</numIndex> <numIndex index="1">Controller->action;Controller->actionFromExtLocalconf1;Controller->actionFromExtLocalconf2; </numIndex> </numIndex> <numIndex index="2" type="array"> <numIndex index="0">Second view</numIndex> <numIndex index="1">Controller->action1</numIndex> </numIndex> </items> </config> </TCEforms> </switchableControllerActions> </el> </ROOT> </general> </sheets> </T3DataStructure>
configuration from ext_localconf.php will be overwritten! If you need it, put it like line20 after “;”
Flexform for extbase extension
26. April 2016
$extensionName = strtolower(\TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToUpperCamelCase($_EXTKEY)); $pluginName = strtolower('Pluginname'); $pluginSignature = $extensionName.'_'.$pluginName; /** * Disable non needed fields in tt_content */ $TCA['tt_content']['types']['list']['subtypes_excludelist'][$pluginSignature] = 'layout,select_key,pages,recursive'; $TCA['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform'; \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue($pluginSignature, 'FILE:EXT:'.$_EXTKEY . '/Configuration/FlexForms/flexform.xml');
change active breadcrumb items name
26. December 2015
using title(Titel) and not pageTitle (Seitentitel)
->templates->new template for “mod_breadcrumb.html5”
// $item[data][title] instead of $item[titel] 7 <?php if ($item['isActive']): ?> 8 <li class="active<?php if ($item['class']): ?> <?= $item['class'] ?><?php endif; ?> last"><?= $item['data']['title'] ?></li> 9 <?php else: ?>
Own language labels for Contao frontend
26. December 2015
in /system/config/langconfig.php
// Put your custom configuration here $GLOBALS['TL_LANG']['MSC']['more'] = 'Mehr'; if ($GLOBALS['TL_LANGUAGE'] == 'en') { $GLOBALS['TL_LANG']['MSC']['more'] = 'More'; }
different Body-tag with class and id for every page
16. November 2015
page { bodyTag > bodyTagCObject = TEXT bodyTagCObject.stdWrap.dataWrap = <body class="layout-{field:layout}" id="page-{field:uid}"> }
Customize content header
17. September 2015
Include it in your Page-TypoScript:
# Own headers layouts # *********************************************** lib.stdheader > lib.stdheader = CASE lib.stdheader { key.field = header_layout # DEFAULT H1 (0) default = TEXT default.field = header default.wrap = <h1>|</h1> default.typolink { parameter.insertData = 1 parameter = {field:header_link} } #H2 link to top (1) 1 = TEXT 1.field = header 1.wrap = <h2 class="topLinkHead"> | <a class="topLink" title="to top" href="#container"><img width="9" height="11" alt="to top" src="fileadmin/templates/shared/images/btntoplink.gif"> </a></h2> #H2 2 = TEXT 2.field = header 2.wrap = <h2> | </h2> #H3(3) 3 = TEXT 3.field = header 3.wrap = <h3>|</h3> # dont need it (4) 4 = TEXT 4.field > stdWrap.fieldRequired = header stdWrap.if { equals.field = header_layout value = 100 negate = 1 } } # ENDE lib.stdheader }