1 of 85

[Part 2]

Essential Solutions

for TYPO3 Productivity

by Sanjay Chauhan at T3DD19

sanjay_nitsan

2 of 85

What are essentials TYPO3 solutions?

TYPO3 Code Review

TYPO3 Server Compatibility Check

TYPO3 Extensions Maintenance

Useful TYPO3 Extensions

3 of 85

Sanjay Chauhan

Co-Founder and CTO at NITSAN Technologies

  • Member of TYPO3 Association Content Team
  • Member of TYPO3.org Team
  • Managing iTUG - India TYPO3 User Group
  • Love Travelling, Reading and Playing Cricket
  • Member of TYPO3 Dashboard Initiative

4 of 85

NITSAN Technologies

Dedicated TYPO3 Agency since 2011

5 of 85

Server Compatibility

Hassle - free TYPO3 server compatibility check report

6 of 85

TYPO3 Version Server Compatibility

Manually check server

Find tech info for each T3.version

Check T3 version compatibility

Check database connection

Check email services

phpinfo() Report

7 of 85

Introduce: ns_typo3_compatibility

8 of 85

TYPO3 Version Server Compatibility

9 of 85

Check Database Connection

10 of 85

Check Email Service

11 of 85

phpinfo() Report

12 of 85

Setup - Test - Fix

  • Clone https://github.com/nitsan-technologies/ns_typo3_compatibility
  • Setup TYPO3_Check_Configuration.php at your server
  • Get Reports by Test
  • Fix the Problems and Re-Test
  • Go for the Development and Deployment

13 of 85

Useful TER Extensions

Cool free-TYPO3 extensions to save your time!

14 of 85

NITSAN’s Contribution at TER

20+ Extensions are developed and published (and in-progress)

150+ Tickets resolved by supporting and maintaining

20000+ Downloaded and Installed

1500+ Hours spent for the development and maintenance

500+ Chai and Samosas

15 of 85

Comments for EXT:news

Feature-rich & Easy to use comment tool for news extension

16 of 85

News Comment Form

17 of 85

News Comments Listing

18 of 85

Nested Reply Form

19 of 85

Store comment at every News

20 of 85

Approve/Reject Moderate Comments

21 of 85

Frontend Plugin

22 of 85

Frontend User Configuration

23 of 85

Frontend User Can Comment

24 of 85

Download, Feedback and Support

composer req nitsan/ns-news-comments

extensions.typo3.org/extension/ns_news_comments

github.com/nitsan-technologies/ns_news_comments/issues

25 of 85

Maintenance Mode

Do you want to make your site temporary offline like Coming soon?

26 of 85

Frontend Maintenance Template

27 of 85

Backend Configuration

28 of 85

Download, Feedback and Support

composer req nitsan/nitsan-maintenance

extensions.typo3.org/extension/nitsan_maintenance

github.com/nitsan-technologies/nitsan_maintenance/issues

29 of 85

All in One Slider Plugin

Quickly install and configure your favourite OpenSource Sliders

30 of 85

Includes Major OpenSource Plugin

Owlcarousel Slider

Nivo Slider

Royal Slider

Slidejs Slider

Slick Slider

Suggest your favourite OS Slider

31 of 85

Preview Slider Example

32 of 85

Create Slider’s Records

33 of 85

Frontend Plugin

34 of 85

Each Slider’s Configuration

35 of 85

Download, Feedback and Support

composer req nitsan/ns-all-sliders

extensions.typo3.org/extension/ns_all_sliders

github.com/nitsan-technologies/ns_all_sliders/issues

36 of 85

All In One Lightbox/Modalbox

Quickly install and configure your favourite Open Source Lightbox

37 of 85

Includes Major Open Source Plugin

Lightbox2

Fancybox2

Colorbox

Prettyphoto

Darkbox

Magnific-popup

Suggest your favourite OS Plugin

38 of 85

Preview example of Lightbox

39 of 85

Backend Configuration

40 of 85

Frontend Plugin

41 of 85

Download, Feedback and Support

composer req nitsan/ns-all-lightbox

extensions.typo3.org/extension/ns_all_lightbox

github.com/nitsan-technologies/ns_all_lightbox/issues

42 of 85

TYPO3 Code Review

Follow standards lints PHP/TypoScript/Fluid/Yaml/Xliff

43 of 85

Code Review For:

PHP PSR Standards

TypoScript

Fluid Templates

YAML Configuration

XLIFF Localization

Any Other Suggestions?

44 of 85

Integrate into Git CI (like Gitlab, Github)

45 of 85

Sample .gitlab-ci.yaml

46 of 85

Error logs

47 of 85

PHP Lint

sudo apt install php-codesniffer

phpcs --standard=PSR2 ext_localconf.php

phpcs --standard=PSR2 ./

phpcs --standard=PSR2 --warning-severity=0 --extensions=php *

48 of 85

PHP Lint

49 of 85

TypoScript Lint

composer global require helmich/typo3-typoscript-lint

.config/composer/vendor/bin/typoscript-lint -c tslint.yaml

paths:

- Configuration/PageTSconfig

- Configuration/TypoScript

filePatterns:

- "*.ts"

50 of 85

TypoScript Lint

51 of 85

Fluid Lint

composer global require typo3fluid/fluid-lint:dev-master

.config/composer/vendor/bin/fluidlint Templates/Default.html

* Fluid 3 will have better linting

52 of 85

Fluid Lint

53 of 85

YAML Lint

sudo apt install python-pip

sudo pip install yamllint==1.10.0

yamllint -d relaxed .

54 of 85

YAML Lint

55 of 85

XLIFF Lint

composer global require symfony/translation

php bin/console lint:xliff default.xliff

php bin/console lint:xliff /Resources/Private/Language

56 of 85

XLIFF Lint

57 of 85

EditorConfig.org

Maintain consistent coding styles for multiple developers

Setup .editorconfig at root of your project

Define coding style standards

Plugins available for your favourite IDE

58 of 85

.editorconfig

59 of 85

Maintain TYPO3 Extensions

Easily publish and maintain your TER and Private TYPO3 Extensions

60 of 85

TYPO3 Extensions Repository (TER)

Our App Store is Called TER - and It's Free! - TYPO3 GmbH

61 of 85

Tools and Techniques

Git (github/gitlab/bitbucket etc.)

Cool Composer

Sync Packagist (org/com)

Proper Versioning

Automatic Deployment to TER

Code Review

62 of 85

Prepare your extension for Composer

Revolutionary one-line composer command eg.,

composer require nitsan/ns-news-comments

  • Composer - The dependencies manager for PHP
  • Install and Upgrade TYPO3 core and extensions through Composer
  • Add composer.json at your root of your TYPO3 extension
  • TYPO3 community appeal to setup project through Composer.json

63 of 85

Composer.json

64 of 85

Git Survey

How many people uses Github?

How many people uses Gitlab?

How many people uses Other Git?

65 of 85

Code versioning with (hub/lab/bitbucket)

66 of 85

Submit Git repo at Packagist (org/com)

67 of 85

How Packagist and Git will communicate?

68 of 85

Packagist + Github

69 of 85

Packagist + Gitlab

70 of 85

Maintain Proper Versions

71 of 85

Semantic Versioning 2.0.0

  • Given a version number MAJOR.MINOR.PATCH, increment the:
  • MAJOR version when you make incompatible API changes
  • MINOR version when you add functionality in a backwards-compatible manner
  • PATCH version when you make backwards-compatible bug fixes
  • Read more at https://semver.org/

72 of 85

1. ext_emconf.php

73 of 85

2. Git version release

74 of 85

3. Composer/Packagist version

75 of 85

Dependencies Management

76 of 85

Publish Extensions to TER

Easily publish and maintain your TER and Private TYPO3 Extensions

77 of 85

Publishing Extension to TER

Directly publish to TYPO3.org

NamelessCoder Release Service

Automatic publish through Git CI

78 of 85

Option 1: Direct publish at TER

79 of 85

Option 2: release.namelesscoder.net

80 of 85

create/push tag

git tag 1.2.3

git push origin 1.2.3

81 of 85

Option 3: Gitlab to TER (.gitlab-ci.yaml)

82 of 85

Option 4: Github/Travis to TER (travis.yml)

83 of 85

Checklist for Ideal Extension Development

Practice with Docker and DDEV

Use Versioning with Git

Code Review / Lints

Follow TYPO3 Coding Guidelines

Use PHPStorm IDE

Install Composer

Deployment with Git CI

Check Performance

84 of 85

Any Questions?

85 of 85

Thank you!

Let’s keep in touch :)

www.nitsan.in

sanjay@nitsan.in

sanjay.nitsan

sanjay-nitsan

sanjay.nitsan