DEPRECATION WARNING

This documentation is not using the current rendering mechanism and will be deleted by December 31st, 2020. The extension maintainer should switch to the new system. Details on how to use the rendering mechanism can be found here.

Developer CornerΒΆ

Target group: Developers

Per default this extensions only provides a small selected subset of programming languages from the huge list supported by prism.js. The main reason for this is to prevent the included JavaScript from being bloated with lots of code you never need. If you however do need support for a programming language not included in the default set, you can add any language yourself. You achieve this by overwriting the TCA for the programming_language field to include more programming_languages and extend the JavaScript with the corresponding syntax highlighter.

To add a new language to the TCA you can use the constant from the included CodeSnippetLanguage Enumeration to get the needed string right. In any extension of yours, create the file Configuration/TCA/Overrides/tt_content.php and add the following code to it:

$GLOBALS['TCA']['tt_content']['columns']['programming_language']['config']['items'][] = ['Python' => \DanielGoerz\FsCodeSnippet\Enumeration\CodeSnippetLanguage::PYTHON];

You can add every language identifier that prism supports. Anyway the T3Editor won't know that syntax and will run in "mixed" mode.

To enable the syntax highlighting in the frontend you need to include the corresponding JavaScript component from prism.js. In case of python this would be components/prism-python.js. You can either download the component from prismjs.com or github or you can use the gulp build shipped with this extension to generate a new all-in-one file.

To do so, go to the extension folder and edit the gulpfile to also include the components you need in the build-js task (e.g. prismBasePath + 'components/prism-python.js'). Then run

npm install
gulp build

Now you should have a FsCodeSnippet.js that supports Python.

Important

Make sure to move the generated FsCodeSnippet.js to your own extension and include it from there. Otherwise it will be overwritten if you update fs_code_snippet at any time in the future.