- SourceOpt : reformatting the (x)HTML output & removal of new-lines, comments and generator-info
- RegExRep : search and replace strings using your regular expressions ; embrace regex and migrate now
- SVGstore : combines all SVG selected within elements into one <symbol> file and replaces <img> by <use>
Lines 8 to 9 in 173f7bd
Lines 8 to 9 in 6663a8a
composer require lochmueller/sourceopt-
via TypoScript
[constants]@import 'EXT:sourceopt/Configuration/TypoScript/constants'[setup]@import 'EXT:sourceopt/Configuration/TypoScript/setup' -
via input device
- add
[EXT:sourceopt/Configuration/TypoScript]intoInclude staticatIncludesinTemplate
- add
Include the extension and go to the Constant Editor of a template where you find all options under PLUGIN
The PHP process need server performance, because there are several search/replace operations in the logic
Note: The following features are executed in reverse order
TypoScript [constants] || prepend config. at [setup]
| Property | Type | Description | Default |
|---|---|---|---|
| sourceopt.enabled | boolean | Is the optimization enabled for this template | 1 |
| sourceopt.removeGenerator | boolean | Remove <meta name="generator" content="TYPO3 CMS"> | 1 |
| sourceopt.removeComments | boolean | Remove HTML-Comments | 1 |
| sourceopt.removeComments.keep | array | Spare these listed comments: Regular expressions that match comments that should not be removed. Very useful e.g. to keep the TYPO3SEARCH-Comments so indexed_search can work properly | .10 |
| sourceopt.removeComments.keep.10 | string | Spare TYPO3SEARCH-Comments from removal | /^TYPO3SEARCH_/usi |
| sourceopt.headerComment | string | Your additional (appended) header comment | [empty] |
| sourceopt.formatHtml | integer | Formats the code beautiful and easy readable. New lines and tabs are used in the usual way of illustrating the structure of an XML code. Optionssourceopt/Classes/Service/CleanHtmlService.php Lines 156 to 161 in 2346673 |
4 |
| sourceopt.formatHtml.tabSize | integer | Defines the size of the tabs used for formating. If blank one tab is used. If a number is specified the specified number of blank spaces is used instead. This will only work together with formatHtml |
[empty] |
| sourceopt.formatHtml.debugComment | boolean | Includes a comment at the end of the html source code that points the numbers of open html tags. This will only work together with formatHtml |
[empty] |
TypoScript [setup] incl. stdWrap
config.replacer {
search {
1 = /(?<="|')\/?(fileadmin|typo3temp|uploads)/
give-me-cherries = /fruit/
wrapBoldly < tmp.find
wrapBoldly.wrap = /|/
}
replace {
1 = //cdn.tld/$1
give-me-cherries = cherry
wrapBoldly < tmp.repl
wrapBoldly.wrap = <b>|</b>
}
}
Note: both arrays will be ksort'ed in "natural order"
from jweiland/replacer : 1.4 - 2.x
from jweiland/replacer : 1.4 - 2.x
- regex replace
config\.tx_(?:\w*replace\w*)toconfig.replacer - remove
config.tx_replacer.enable_regex = 1
from maxserv/replacecontent 2013 - 2017
from maxserv/replacecontent 2013 - 2017
- regex replace
config\.tx_(?:\w*replace\w*)toconfig.replacer
from typo3-ter/ja_replacer 2009 - 2013 || phorax/ja-replacer 2016
from typo3-ter/ja_replacer 2009 - 2013 || phorax/ja-replacer 2016
composer install jweiland/replacer& replace config.tx_ja_replacer to config.tx_replacer
from typo3-ter/n84_contentreplacer 2016
from typo3-ter/n84_contentreplacer 2016
- regex replace
config\.tx_(?:\w*replace\w*)toconfig.replacer
from typo3-ter/fereplace 2011
from typo3-ter/fereplace 2011
composer install jweiland/replacer& replace plugin.fereplace.pairs to config.tx_replacer .. ah .. and one regex
- search
(\n\s*)(\d+)(?:{\s+|\.)old\s*=\s*([^\n]+).+?new\s*=\s*([^\n]+) - replace
$1search.$2 = $3\n$1replace.$2 = $4
from typo3-ter/regex 2009
from typo3-ter/regex 2009
- regex replace
config\.regextoconfig.replacer - regex replace
(?:\s)(\w+)\s*=\s*tosearch.$1 = - regex replace
(\w+)\.replacement\s*=\s*toreplace.$1 =
TypoScript [constants] || prepend config. at [setup]
| Property | Type | Description | Default |
|---|---|---|---|
| svgstore.enabled | boolean | Is the SVG extract & merge enabled for this template | 1 |
| svgstore.fileSize | integer | Maximum file size of a SVG to include (in [byte]) |
50000 |
- Try external packages like https://github.com/ArjanSchouten/HtmlMinifier

