TYPO3 Higher Education Package 

Classification

higher education package

Version
Language

en

Keywords

TYPO3, higher education package

Copyright

2025

Author

Higher Education Package Team

License

This document is published under the Open Publication License.

Rendered

Thu, 04 Dec 2025 11:02:01 +0000


The content of this document is related to TYPO3, a GNU/GPL CMS/Framework available from www.typo3.org.


TYPO3 Higher Education Package

Introduction 

The higher education package is a TYPO3 package which comes with content elements, frontend templates and advanced functions needed by universities. It is updatable, meaning that in opposite to other TYPO3 kickstart distributions, the user will be able to update the package afterwards and benefit from bugfixes and new features.

During development, the focus is on sustainability, updatabilty and accessibility rather than on rapid development of new features.

The package should help editors without deep knowledge of the content management system creating good websites rather than providing the utmost flexibility.

Integrators and administrators can include their customizations and still keep the ability to update the package in the future.

The product vision 

The higher education package is a TYPO3 based Enterprise CMS solution for universities and other educational institutes.

It allows to set up a full featured website including the most important features and content types needed by universities.

It is updatable, customizable and extendable and will be professionally supported for at least five years to come.

Basic principles 

Updates 

The higher education package will be updatable. That means, changes should not be made in the package itself but in an additional package (eg. "higher_education_package_custom"). In order to make updates as easy and smooth as possible, best practices for customizations will be recommended in the documentation.

Customers of the paid version can take advantage of support from the support team.

Customization 

Main settings can be customized without touching the templates or SCSS files (eg. logo, colors and font).

As said, the higher education package will be customizable by adding an additional package. An example package is planned to be provided. In order to make customizations as easy as possible, the templates and settings will be very finely grained. That makes it easier for integrators and developers to overwrite only small parts of the package.

The default templates for content elements provided by fluid_styled_content have been rewritten, so that they're more modular and easier to maintain.

Extendable 

Of course other extensions can be used together with the higher education package. In fact, some extensions are already planned to be used together with the higher education package, eg. "news".

Documentation 

A documentation will be provided for editors, administrators and developers. That should make it easy for editors to use the package and allows editors and administrators to customize the template or add individual features without too much searching at the same time.

Flexibility vs. Guidelines for Editors 

During development there are often multiple ways to implement a feature. When it comes to the question "should the editor have the maximum of flexibility or should the editor be guided" the higher education package chooses the second way: The page templates, content and navigation elements will provide as much flexibility as needed, but will focus an a consistent design throughout the website.

That includes using fixed page templates (based on backend layouts) instead of super-flexible grid systems (eg. "gridelements" extension) and reducing the display options for content elements.

Feature Inclusion 

The package is planned to provide many of the features needed by universities and other higher education organizations. Some features are planned to be implemented in several ways (eg. the main menu, news listing templates etc.) in order to provide alternatives to the user.

The list of features will evolve over time. Since the package is updatable, customers of the higher education package will benefit from features implemented in the future.

See Features

Releases 

Major versions will be released corresponding to the TYPO3 LTS versions.

The higher education package version 1 is meant to be used with TYPO3 8 LTS.

Since TYPO3 version 9 the naming scheme for the higher education package has changed: The higher education package version 9.X.X is compatible with TYPO3 9 LTS etc.

Major versions will be released shortly after the release of the TYPO3 LTS versions.

Minor and patch versions will be released in between. Since the development of the higher education package uses SCRUM, those versions will be released at the end of sprints.

Access to the Package 

Public version 

A publicly available version will be available with public access to a git repository provided by the TYPO3 GmbH. This version can be used to evaluate the package. It will be updated regularly.

Access to the main repository and support (paid version) 

The paid version allows access to the latest bugfixes and features by directly accessing the main git repository provided by TYPO3 GmbH.

Support is included for questions and bug fixes.

A voting mechanism is planned to be implemented in order to allow voting for features.

Further development and updates are guaranteed to the users of the paid version.

Design basics 

The higher education package template is a sample template. According to current trends in web design the higher education package uses a modern and reliable target group oriented design. The primary target group are the prospective students.

Structure 

As in modern web design, the higher education package separates the CSS code which is responsible for the layout of a website from the content. Therefore the customizations in the .css automatically apply to the whole website.

The design for the higher education package has a modular structure and is easily customizable.

Fonts and colors are clearly defined. Two colors are predefined (primary, secondary) and can be customized.

These colors can also be used separately in other subtemplates or areas.

The primary-color is used for headlines, text and button. The secondary-color is used as an additional color in headlines or special items.

To meet the high standard of accessibility, the colors in the design comply with the WCAG Level AAA.

Fonts 

It is common to use "decoration fonts" for headlines which are not suitable for continuous text. Therefore the higher education package provideds two fonts for inclusion. For example, we use a serif typeface for headlines and special elements.

Icons 

The TYPO3 higher education package uses icons for visual highlighting for links and other special elements.

Icons are in the .svg format because of their good scalability on all frontend devices and their simple integration into the code.

The TYPO3 higher education package uses icons from Font Awesome under the Creative Commons Attribution 4.0 International license (https://fontawesome.com/license).

Use your own design 

The webdesign is separated from the content and the features of the website.

So instead of creating a new design, which has to be programmed for different devices with an effort, it is much more resource-saving to set up the existing page template and adapt it to your needs. There are various possibilities: from the simple adaptation of colors and the changing of the logo, up to the complete change of the design template corresponding to the corporate identity (CI).

There are a various customization options depending on your needs.

1. Minimal customization of the existing template 

You simply replace the logo and adapt fonts and colors according to your corporate identity within the given structures. This can be achieved by configuration, no templating is needed.

2. Use your own design template 

You create an individual design template. Furthermore you can add or replace features by using extensions.

Information Architecture 

This documentation describes conceptual considerations for the information architecture of the higher education package. This is a "guideline" for the structure of the main menu and adding content.

Handling and Structure of the Menu Overlay 

By clicking on the central "menu" button, the menu area is displayed in an overlay.

This layer is divided into two equally sized areas:

On the left-hand side is the logo and the navigation, on the right-hand side there is an area-related key visual element and the "close" button. The "close" button is keeping the position of the "menu" button.

To increase the focus on the essential information on the left-hand side, this area is coloured (primary-color), so logo and menu colours are used inverted as a consequence (depending on the colour concept, this may be handled differently.)

Operation of the Main Menu and the Way to the Information 

1st Menu level 

As soon as the layer is opened, the navigation items of the first level are displayed below each other. The vertical alignment provides more flexibility in the number of menu items. Nevertheless, it is not recommended to use too many menu items because - depending on the device - scrolling can be necessary to see all menu items. These menu level is only for structuring and therefore can’t be clicked and it won’t reload the page (unless the page does not have any subpages).

2nd Menu level 

By clicking a main menu item, the corresponding subitems are displayed on the right-hand side, also ordered below each other. The number of items is also flexible. By clicking on a subitem the corresponding page will be loaded.

More menu levels 

Pages further down in the page hierarchy can be accessed by a so-called "submenu". This menu is integrated in a page layout, that means every page with the "Page with submenu" layout displays a auto-generated submenu. Theoretically unlimited levels of pages and subpages are possible using this page template.

Keyvisual 

A content-enhancing keyvisual element can be used to illustrate the menu in the right-end area. It can be set independently for different areas of the website (using the page properties).

Conclusion 

We have consciously decided on a concept with only two navigation levels for the main menu to keep access to the information as target-oriented as possible.

The main template is also very flexible this way and is not depending on the number of navigation items.

It is known that a few menu items can be placed wonderfully next to each other but there is a limit to the expandability. As soon as items are added, the design is often no longer working and the clarity is suffering .

Content concept 

Page Layouts 

The TYPO3 backend layouts are used to structure the content on a page (see Page Layouts). Editors can use different columns to structure their content. If a row of columns is not used, it's not displayed in the frontend, so no "empty areas" show up.

Since the design of your website will probably differ from the design of the higher education default template, you will most likely want to add your own page layouts with your custom areas where content elements can be placed. It's always a good idea to have a look at the configuration files provided by the higher education package itself, in this case you find the page layouts in the folder Configuration/PageTS/BackendLayouts/.

Content Elements 

In order to create content on the website, different content elements are provided by the higher education package. These are eg. headers, texts and images, see Content Elements.

Each content element does have its own dedicated template which is typically at a very low complexity level. So if you want to customize a certain content element as an integrator without overwriting all the content elements that can easily be done. That allows you to update the higher education package to new versions in the future and if content element templates change, you will only have to adapt those templates you adopted in your custom sitepackage. Integrators can also add their own content elements if they wish.

(as a developer see Content Elements)

Plugins 

Plugins provide more advanced functions and generate content, too:

  • Person database (if feature is activated)
  • News (if feature is activated and extension "news" is installed)
  • Menu elements (eg. menu of subpages, menu of content elements on a page)
  • Form elements
  • Search / Faceted Lists Plugin (if feature is activated and extension "ke_search" is activated)

Features 

The Higher Education Package provides the following features.

General features 

Accessibility
All features have been developed with accessibility in mind, that includes color contrasts, keyboard navigation, HTML validation, aria roles and alternative texts.
Privacy
Alle features have been developed with the visitors privacy in mind. That includes not loading any files from third-party-servers and deleting personal data if not needed anymore.
Speaking URLs
URLs are "speaking" (human-readable). This feature is based on the routing feature introduced in TYPO3 version 9.
Feature Toggls
The features of the Higher Education Package can be enabled or disabled using a feature toggl. In case you do not need a certain feature, you can completely disable it, no code or template will then be loaded.

Common content elements and page layouts 

Default styles
The package comes with default styles which can be customized.
Page templates
A page template (based on TYPO3 backend layouts) with several editable areas is available to the editors. A special "footer" template allows editors to edit the website footers.
Main navigation
A main navigation is available which shows pages of the first and second level.
Breadcrumb navigation
A breadcrumb navigation ("You are here ...") shows the the visitor where the current page is paces in the site hierarchy.
Common content elements
Common types of content elements can be used by editors: header, text, text with image, images, table, video, menu, HTML.

Special content elements 

On-page menu content elements
Different types of on-page menu elements can be used by editors (eg. list of subpages, list of selected pages, list of pages of a certain category).
Forms
Information can be collected using forms. This feature is based on the TYPO3 form framework.
Maps
Maps from OpenStreetMaps or Google Maps can be included. The privacy of visitors is respected by not including external code until the visitor clicks on the map ("two-click-solution").
Icon container
Using the "icon container" content element, icons of social media websits or third-party applications (eg. campus management systems) can be placed onto the website and can be linked to the corresponding URLs.

Media management 

Required alternative text
Alternative texts for images can made required in order to make sure every image contains an alternative text. No image without an alternative text can then be used in the frontend. This feature may be enabled or disabled with a feature toggl.

News and Events 

News
The well known extension "news" is supported, that means templates are provided which fit nicely into the higher education package frontend.
Events
Events including date, location and organizer can be managed. This feature is based on news and the "eventnews" extension.

Person Database 

Person database
Person records can be edited in the backend and are displayed in a searchable list. That list can be filtered by categories in the backend (eg. "Show all professors").
Contact boxes
Contact information of single persons can be placed on pages (like "business cards") in order to show contact persons for a certain area.
Person single view
A more detailed single view can be used to show more information about persons.

Courses 

Courses Overview
A filterable list of courses is available and leads to course description pages. That feature is based on the extension "ke_search".

Departments (Microsites/Faculties/Institutes) 

A university contains different sub organizations, eg. institutes. These sub organizations can customize their apperance in the web. This feature can also be used to create microsites eg. for projects.

Custom logo
Organizations can define their own logo using constants, so no developers work is needed.
Custom colors
Organizations can define their own custom colors using constants, so no developers work is needed.
Custom footer
Organizations can define their own footer using constants, so no developers work is needed.
Custom navigation
Organizations can define their own navigation using constants, so no developers work is needed.

Department kickstarter 

Using the department kickstarter, new department sites or microsites can be created easily with a dedicated module.

Define department site templates
Page trees can be marked as "department site templates". Those page trees will be copied when a new department is created.
Slugs auto-created
The slug (URL Path) of the start page can be defined individually and for all subpages the slugs will be created accordingly.
Custom colors
Colors for the department can be selected while creating it. They will be saved as constants in a typoscript template.

For more information including screenshots see Department Kickstarter.

Working with languages 

The package makes use of the great multi language possibilities of TYPO3

Language selector
A language selector is included in the frontend which automatically shows all available languages of that page.

Single-Sign-On 

LDAP Login
Members of the university can use their existing LDAP account to log in into the website (both frontend and backend). That feature is based on the extension "ig_ldap_sso_auth".

Social media integration 

The educational website can be connected to the social media channels the university is using.

Social Media Links
Using the "icon container" content element, links to social media websites can be included.

Search Engine Optimization (SEO) 

SEO meta tags
The Higher Education Package makes use of the "seo" extension introduced with TYPO3 version 9 which allows to set meta tags for search engines.
XML sitemap
A xml sitemap can be generated using the "seo" extension.

Documentation and developer support 

Documentation
A documentation for editors, administrators and developers shows how to use, configure and extend the Higher Education Package.
Living Styleguide
A living styleguide helps developers to find out which styles to use in their templates.
Build-in SCSS parser
A built-in SCSS parser allows to easily include custom styles (CSS and Grid System).
Custom scss variables
A file containing custom SCSS variables can be included which overwrite default variables. This makes it easy to cusomize the SCSS variables.
Custom templates
All templates are based on Fluid and can be customized by overwriting them. The paths to the templates are included in the documentation for developers.

Demo website 

The website https://edu-package.typo3.com/ shows the possibilities of the higher education package.

CSS and Grid System 

Using your own CSS 

The higher education package comes with a built-in SCSS parser (https://github.com/leafo/scssphp). You can simply add your own SCSS files in the corresponding section of the site setting.

The CSS files will be created on-the-fly, placed into the typo3temp folder and included in the frontend.

You can define your own SCSS variables file which will then be include at very beginning of the rendering process. For more information on that see SCSS Variables.

Using the grid system 

The gridsystem of higher education package is inspired by the 12 column bootstrap-gridsystem. In fact it is a fork of the bootstrap grid. But do not be fooled: You won't get all the bootstrap functions since it's only based on the that grid but has been tailored to fit the higher education package.

The grid system has been extended by using the BEM syntax (http://getbem.com/introduction/).

You can find some examples how to use the grid system in the file Resources/Public/Scss/Framework/_grid.scss.

Accessibility 

The higher education package provides an accessible frontend in order to give all visitors including those with disabilities the possibilty to use the website.

The aspects covered by the higher education package include

  • High contrasts in foreground and background colors are used in the default template.
  • Alternative texts for images.
  • Page templates allow increasing and decreasing of font size and magnification without leaving the content unreadable.
  • Landmarks ("roles") are used in order to explain page areas and their functions.
  • Form elements have a label.
  • Navigation elements can be used with a keyboard (tab navigation).
  • Each new feature is checked against violations of the WCAG 2 guidelines.

Aspects not covered by the higher education package 

Whenever editors create content, they need to take care about accessibilty concerns themselves. That includes giving images alternative texts, ordering the headlines in a semantically correct (eg. using one h1, using h2 after h1 and so on).

Some words about tab navigation 

The main navigation provided by the higher education package can be used with a keyboard. On some browsers you will need activate the possibility to navigate using the tab key.

On Mac you need to activate the Full Keyboard Access option (see https://support.apple.com/en-us/HT204434) and the "Press tab to highlight each item on a webpage" option, also chrome does have such an option (see http://www.weba11y.com/blog/2014/07/07/keyboard-navigation-in-mac-browsers/).

Firefox honors the mac os keyboard settings and focuses only input fields and buttons by default. (see https://developer.mozilla.org/en-US/docs/Mozilla/Preferences/Preference_reference/accessibility.tabfocus)

Release Notes 

Version 13.1.0 

(December 2025)

Version 13.1.0 is a maintenance and bugfix release that adds compatibility for PHP 8.4.

The integrated SCSS parser has been updated to version 2.x and the implementation has been completely revised. The SCSS parser settings and color variables are now provided by a site set.

Furthermore, minor bugs have been fixed.

For more information please take a look at the changelog.

Version 13.0.1 

(April 2025)

Version 13.0.1 is a small maintenance and bugfix release that adds a compatibility function for the icon container preview renderer. It also extends the list of image file extensions for webp. Additionally it fixes a columnsOverrides bug for the video content element.

The Higher Education Package now supports the WebP format as well as TYPO3 since version 13. See further information at https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/13.0/Feature-88537-WebPImageFormatSupportForImageProcessing.html

For more information please take a look at the changelog.

Version 13.0.0 

(March 2025)

Version 13.0.0 marks the stable release for TYPO3 13 LTS support.

All plugins have been migrated to the recommended CType variant. An upgrade wizard is provided for smooth transition.

Features "Department Kickstarter" and "Alternative text check for images" have been moved to separate extensions:

  • EXT:fal_events
  • EXT:department

All major third-party extensions are now TYPO3 13 LTS compatible, including news 12.3 eventnews 7.0, ig_ldap_sso_auth 4.1, solr 13.0.1, ke_search 6.3, providing full functionality of the Higher Education Package.

We updated our code quality tools to newer versions. Rector, phpstan and grumphp ensure high code quality during development.

For more information please take a look at the changelog.

Version 12.0.0 

(Nov 2024)

Version 12.0.0 marks the stable release for TYPO3 12 LTS support with full PHP 8.2 compatibility. Building upon the beta version, we've refined the codebase and added several new features to enhance the Higher Education Package.

The navigation system has been completely revamped, introducing a new mega menu variant alongside the split navigation concept. Content presentation is enhanced with a new video content element supporting YouTube, Vimeo, and local videos, plus improved lazy loading for images.

All major third-party extensions are now TYPO3 12 LTS compatible, including news 12.0 eventnews 7.0, ig_ldap_sso_auth 4.0, solr 12.0.5, ke_search 6.1, providing full functionality of the Higher Education Package.

For more information please take a look at the changelog.

Version 12.0.0-beta-1 

(Aug 2023)

Version 12.0.0-beta-1 is another compatibility release by extending the support for TYPO3 12LTS. Furthermore there is now full PHP 8.2 support. As in the last pre-release, more obsolete code has been removed and new features have been added.

It is now possible to display selected content elements as an accordion in the frontend and the video element has also received a major overhaul.

Since more 3rd party extensions are now also TYPO3 12LTS ready only the Ig_ldap_sso is currently missing to use the full scope of the Higher Education Package.

For more information please take a look at the changelog.

Version 12.0.0-alpha-1 

(May 2023)

Version 12.0.0-alpha-1 is a compatibility pre-release, it can now be installed together with the new LTS version 12.4 of TYPO3. The main work of this version went into the compatibility with version 12, adopting new core features and removing obsolete code. It also introduces bugfixes regarding the error page handling and improvements towards frontend accessibility.

Also an alternative main menu variant was introduced. The higher education package now offers a mega menu besides the already present split menu.

The current version 11.0 of the extension “news” is now supported.

Due to incompatibilities with the 3rd party extensions ke_search, solr, eventnews, om_cookie_manager and ig_ldap_sso_auth those functionalities could not be tested with the TYPO3 12 compatible release of the higher education package and have been removed from the distribution composer.json temporarily.

Some released functions still have to be tested into further detail, thus the release has alpha status.

For more information please take a look at the changelog.

Version 11.1.4 

(October 2023)

Version 11.1.4 is a bugfix release that removes the template and typoscript configuration of the old felogin plugin (fe_login_pi1). Some frontend performance optimisations are also included in this release (responsive images, font-display).

For more information please take a look at the changelog.

Version 11.1.3 

(September 2023)

Version 11.1.3 is a bugfix release. Also the new icon API is used to register the icons.

For more information please take a look at the changelog.

Version 11.1.2 

(May 2023)

Version 11.1.2 is a bugfix release that fixes a bug regarding the error page handling and also improves frontend accessibility.

Version 11.1.1 

(December 2022)

Version 11.1.1 is a bugfix release that improves the php 8.1 compatibility.

Version 11.1.0 

(October 2022)

Version 11.1.0 is a bugfix / feature and compatibility release that extends functionality in regards of Solr search functionality. Also a new content element "stage" has been added. The TYPO3 Higher Education Package is now supporting v10 of the news extension - with this upgrade the news administration module in the backend was removed by the extension author. There have been bugfixes regarding the persons detail and list view as well as an translation issue with the icon container content element. Documentation and accessibility in the frontend has also been improved.

Version 11.0.2 

(July 2022)

Version 11.0.2 is a compatibility and bugfix release. Also some commands and tasks were marked as deprecated for future versions of the Higher Education Package. The release features full support of PHP 8.1 and compatibility with the most current versions of EXT:eventnews (v5.0.1) and EXT:solr (v11.5.x-dev) which were not compatible with TYPO3 11 and PHP 8 before. A new page type “educational offer” was introduced in preparation of upcoming features. The keyboard accessibility for the main nav has been improved.

Furthermore the person importer was marked as deprecated and will be rewritten in one of the next versions. Also the video plugin was marked as deprecated as well. This will be replaced by a content element.

To improve the development processes we introduced php rector.

For detailed information please take a look at the changelog.

Version 11.0.1 

(May 2022)

Version 11.0.1 is a compatibility and bugfix release, it can now be installed together with the new LTS version 11.5 of TYPO3 and with PHP 8.0. The main work of this version went into the compatibility with PHP version 8.0 solving bugs (mainly undefined array keys).

For more information please take a look at the changelog.

Version 11.0.0 

(November 2021)

Version 11.0.0 is a compatibility release, it can now be installed together with the new LTS version 11.5 of TYPO3. The main work of this version went into the compatibility with version 11, adopting new core features and removing obsolete code.

The current version 9.0 of the extension "news" is now supported.

The current version 4.1 of the extension "ke_search" is now supported.

Due to incompatibilities with the 3rd party extensions solr, eventnews and ig_ldap_sso_auth those functionalities could not be tested with the TYPO3 11 compatible release of the higher education package and have been removed from the distribution composer.json temporarily.

For more information please take a look at the changelog.

Version 10.0.5 

(October 2022)

Version 10.0.5 is a bugfix / feature release that adds compatibility to the 3rd party om_cookie_manager to the Higher Education Package. Also a bug regarding person detail pages has been fixed.

Version 10.0.4 

(September 2022)

Version 10.0.4 is a bugfix release.

For more information please take a look at the changelog.

Version 10.0.3 

(May 2022)

Version 10.0.3 is a bugfix release.

For more information please take a look at the changelog.

Version 10.0.2 

(November 2021)

Version 10.0.2 is a bugfix release.

For more information please take a look at the changelog.

Version 10.0.1 

(April 2021)

Version 10.0.1 is a bugfix release.

For more information please take a look at the changelog.

Version 10.0.0 

(Dezember 2020)

Version 10.0.0 is a compatibility release, it can now be installed together with the new LTS version 10.4 of TYPO3. The main work of this version went into the compatibility with version 10, adopting new core features and removing obsolete code.

With this version a 403 error handling is introduced, so users that access a restricted page will be redirected to a login page with a return url, so the user can login and afterwards will be redirected to the originally visited page.

The current version 8.5 of the extension "news" is now supported.

The current version 3.3 of the extension "ke_search" is now supported.

For more information please take a look at the changelog.

Version 9.6.0 

(Dezember 2020)

Version 9.6.0 is a bugfix release.

Due to changes of the facebook API the facebook importer feature was deactivated as the current implementation is not compatible with the new facebook API.

For more information please take a look at the changelog.

Version 9.5.0 

(April 2020)

Version 9.5.0 is a bugfix release. This version updates the scss parser and removes the dependency to nodejs. For more information please take a look at the changelog.

Version 9.4.3 

(November 2019)

Version 9.4.3 is a bugfix release. This version fixes a bunch of bugs regarding TCA and feature toggles, furthermore the dependency on news is moved to the suggest constraint. For more information please take a look at the changelog.

Version 9.4.2 

(October 2019)

Version 9.4.2 is a bugfix release. This version fixes a wrong way of instantiate the ConfigurationManager::class therefor it prevents an exception at the translation process of content elements including images.

Version 9.4.1 

(August 2019)

Version 9.4.1 is mainly a bugfix release. This version add a news constraint in ext_emconf.php to ensure the right order of extension loading. It also contains a missing information about teasers in the release notes.

Version 9.4.0 

(June 2019)

The importer for persons data is now able to import categories as well. They will be created as system categories and can be used to create persons listings based on categories.

Persons are now included in the search (if ke_search is used as search engine), they will be displayed including the image and categories in the search result page.

A new content element "Teaser Container" has been introduced. It can contain one or more image teasers. Those teasers can be used to create image links to pages or externel URLs and extend the visual possibilities for the frontend.

The check for alternative texts introduced in 9.2.0 has been extend so that in certain cases the check can be disabled. This is useful eg. for content elements which use background images or have auto-generated alternative texts. By default this feature is activated for menu background images and person images.

The usage of the customizable colors (primary, secondary and spot color) has been optimized in various places in order to eliminate inconsistencies. Sites with customized colors now appear in a more unified look.

The department kickstarter introduced in 9.3.0 has been extended by adding the possibility to select custom colors when creating a new department. The colors will be saved as typoscript constants and can be changed afterwards.

A new feature toggl has been created: The Youtube and Vimeo content element can now be enabled or disabled with just a click.

A bug has been fixed in the subnavigaton where a javascript errors has been thrown on pages without subnavigation.

Version 9.3.0 

(June 2019)

A new backend module "Kickstarter" allows to easily create sub-sites for departments like faculties or institutions. Any page tree can be marked as a "department template" and by using the kickstarter module, this page tree will be copied and the URL paths will be automatically adjusted. This makes it easy for administrators and editors to create new department sites. This feature is also available as a new context menu option in the page tree. On the roadmap for the next releases, it is planned to further extend the kickstarter module and make it possible to select individual colours, add an individual logo, create a backend group etc.

A new page template with an integrated menu for subpages has been added. This allows website visitors to navigate to pages further down in the site hierarchy (theoretically unlimited levels) by providing a menu of subpages. Together with the already implemented main menu it's now possible to access all levels of pages of the website.

The person database has improved in various places. It now respects the "privacy by default" principle by deleting import files as a default setting, and gives a more helpful response message after importing persons from an XML file. Speaking URLs with adjustable slugs have been integrated for the persons single view. Some bugs have been addressed: the width of contact boxes in large columns is now limited to a sensible size, a javascript error in the search function has been fixed and on deleting person records the references to images and categories are now deleted, too.

Some maintanance has been done in the area of third-party extension support: The compatibility with news extension 7.2.0 has been checked and the edu package now integrates a new news feature which shows the current news title in the breadcrumb navigation. The compatibility with the LDAP login extension ig_ldap_sso_auth 3.4.0 has been checked.

The following bugs have been fixed: spaces were removed betweend formatted words in the RTE, variables were not correctly replaced in the map content element and persons images were missing.

Version 9.2.0 

(April 2019)

An event database allows to manage events with date, location and organizer and show them in a list and detail view. This feature is based on the extensions news and eventnews. The news templates have been adopted to show additional information.

Alternative texts can now be marked as "required" by activating a feature toggl in order to make sure that every image has an alternative text. When this feature is activated, no images without an alternative text can be used in content elements or news. It is not possible to ensure that every image has an alternative text at the time the editor uploads the image because images can be uploaded by just dragging them into the filelist module. Therefore the check will be done while the editor tries to use the image as a content element using a backend hook.

Backend login and frontend login is possible with a LDAP account. For this feature the extension ig_ldap_sso_auth can be included. The extension has been tested and works properly with the Higher Education Package. The frontend login template of "felogin" has been adopted to match the Higher Education Package.

The person database has been extended with an import feature. It's now possible to import, update and delete person data by providing an XML file. This feature is available as a scheduler task and as a command line command.

The primary, secondary and spot colors can now be changed by setting constants. That makes it a lot easier for sub organizations to use their own colors since no developer is needed to change SCSS files.

The page template has been extended with a language selector which automatically shows all available languages of that page. Multiple languages can now be used out-of-the-box.

Last but not least two new content elements have been included:

The "Icon Container" element allows to add icons to the page content and link them. This can be used for social media links or links to third-party applications like a campus management.

The "Map" content element allows the editor to include a dynamic map from OpenStreetMaps or Google Maps. In order to respect the visitors privacy no external code will be loaded until the visitor clicks on the map ("two-click-solution").

Version 9.1.0 

(February 2019)

This is a maintenance release which includes also some new features.

The package now comes with a facebook importer which allows universities and educational institutes to import posts of their associated facebook channels and aggregate them in their websites. The table content element is now included and the package ships all the templates and styles to make it fit into the frontend. A breadcrumb navigation provides a better orientation in the information hierarchy, especially in large websites.

Under the hood there have been made some improvements. Some dependencies to packages not necessary for the main features have been removed (kss-php, sphinx and restdoc). The documentation is now rendered using the official TYPO3 documentation styles and is available at https://edu-package.typo3.com/documentation/higher_education_package/. Some adaptions to the TYPO3 core and extensions have been made: the condition used for feature toggls does not throw deprecations anymore and the images in search result lists have been fixed, so that the package is compatible with the latest version of ke_search (3.0.3).

Version 9.0.0 

(October 2019)

Version 9.0.0 is a compatibility release, it can now be installed together with the new LTS version 9.5 of TYPO3. While the main work of this version went into the compatibility with version 9, adopting new core features and removing obsolete code, some new features have also been introduced.

The version naming concept has changed with this version in order to clearly reflect which version of the higher education package fits which TYPO3 version. Each major release of the higher education package will now carry the first number of the TYPO3 LTS version it belongs to. The second and the third digit will reflect minor releases and patch releases.

The current version 7.0.6 of the extension "news" is now supported. The new single view has a new detail view template which fits better into the design of the default template.

A footer has been added to the default page template which can be edited by backend users. For this feature a new backend layout has been introduced.

Version 1.3.1 and 1.3.2 

(October 2018)

Version 1.3.1 is mainly a bugfix release, it also contains a handy little feature in the persons list plugin and accessibility improvements.

The version fixes the bugs that search forms didn't have a label, url in css files were not rendered correctly, certain youtube videos did not work and the menu image did not show up on subpages.

It also improves the accessibility by introducing landmarks.

The persons listing plugin can now be used without having a searchbox. That's useful if you want to simply list all persons of certain category (eg. a faculty, central facility or some other kind of department) without providing a search box which would interrupt the content flow of a page.

Version 1.3.2 fixes an issue with version constraints.

Version 1.3.0 

(July 2018)

Version 1.3.0 brings new features as well as some improvements in the package structure and development process. Some of those improvements are based on the first user feedback we got from real projects.

Let's talk about the features first:

There are new "feature toggls" which allow to completely disable some features, currently persons, news, ke_search and solr. If you do not need a feature or if you want to customize the third-party extensions yourself, you won't see anything related to it in the frontend or backend. That way of enabling or disabling features will also be used for features coming in the future.

Persons can now have a dedicated single view in which more information is shown than in the contact boxes and list view.

We now support the widely known news extension with templates tailored for the higher education package, so you can use the news extension out of the box.

Some more content elements have been added, including the menu elements, the HTML element and the generic element used for extensions shipping their own rendering definition like forms, gridelements and felogin.

Some improvements have been made to put the package on a more solid base:

The typoscript structure has been standardized. That includes some breaking changes which are well documented in the changelog.

We also improved the way the SCSS parser works which makes it easier for integrators to set their own SCSS variables. It is now possible to include a SCSS file which will be loaded at an early stage so that you can overwrite SCSS variables easily.

Each feature including frontend output will now be covered by behat tests running against a dedicated test website, so that new features or upates won't break existing ones.

Version 1.2.0 

(July 2018)

In Version 1.2 we renamed the package from "university_package" to "higher_education_package". That name reflects the broad area of applications within the package better. The renaming was applied to the repository, classes, constants, comments and documentation up to the domain name of the demo site (now "edu-package.typo3.com").

Version 1.1.0 

(May 2018)

In the first version after the "minimum viable product" we added two more features which we will think will be useful for higher educational institutes.

First there is a search function. Here we offer two technical approaches: A search function based on a SOLR which is very powerful but needs an additional SOLR server. The second solution is based on ke_search which already has been used for implementing the filterable courses overview and does not require any additional server software (except if you want to use file indexing).

Secondly new video content element allows to display youtube and vimeo videos with respect to privacy concerns. No data will be sent to those external providers until the user clicks the video. Additionally a note is placed below the video which points out the fact that viewing the video will send data to those third party services. Although the TYPO3 core itself has implemented a feature which will only use the youtube-nocookie.com domain for including videos we think not sending any data at all if the user does not allow it will give an extra level of privacy.

Version 1.0.0 

(May 2018)

The version 1 is the "minimum viable product" of the higher education package. It allows to set up a fully functional educational website with basic features.

It sets the folder and file structure, comes with a fully responsive page template and provides text and image content elements.

A main navigation allows to navigate through the pages up to two levels deep.

The documentation explains how to customize the site. A living styleguide gives overview over the used styles.

A filterable courses list enables the visitor to find his or her favourite courses. That list is based on the ke_search extension.

A person database allows to show filtered and searchable person lists and contact boxes of individual contact persons on specific pages.

The package comes with default styles which can be customized.

System requirements 

Generally the higher education package has the same system requirements as TYPO3 itself. Please have a look at https://docs.typo3.org/m/typo3/tutorial-getting-started/12.4/en-us/SystemRequirements/Index.html#system-requirements.

Solr 

If you want to use the solr search engine, you will have to set up a solr server (see also https://docs.typo3.org/typo3cms/extensions/solr/Solr/Index.html).

LDAP support 

The PHP extension "php-ldap" has to be installed on your server in order to use the extension "ig_ldap_sso_auth"

Page Layouts 

This section will give you an overview about the page layouts (called "backend layouts" in TYPO3) coming with the higher education package.

Name Description web_layout key
Default The default page layout with several content columns Default
Page with submenu Layout includes multiple content columns and a submenu PageWithSubmenu
Education offer Layout includes two content columns and is only used by the educational offer pagetype EducationOffer

List of Backend Layouts 

Default Page Layout 

This is the default page layout. It provides several areas which can be used to place content elements. The following image shows which areas are available.

Default Page Layout

Page with submenu 

This page template includes multiple content columns and a submenu.

Behavior of the submenu 

  • In case subpages are available, the submenu shows the current page as a title and the subpages as a menu.
  • In case no subpages are available, the submenu shows the parent page as a title and the pages on the current level as a menu and highlights the current page.
  • At the first level of the page tree, only the subpages are displayed.

Education Offer Layout 

This is the education offer page layout. It provides two content columns and is only be used by the education offer pagetype. The following image shows which areas are available.

Education Offer Page Layout

Images 

Wizard 

Images element in newContent wizard

Table 

Wizard 

Table element in newContent wizard Table wizard in table element

Table settings 

| As an editor you can set some predefined settings for the table. |

Property Description Values Default
  Table header position Position of table head element no Header, Top, Left no Header
  Use table footer Wrap last row with <tfoot> tags off, on off

Text & Image 

Wizard 

Text & Image in newContent wizard

Backend 

Text & Image in newContent wizard

Position and Alignment 

| As an editor you can set some predefined options for image positioning. |

Property Description
  In text, left the image is left and the text floats around
  In text, right the image is right and the text floats around
  Beside text, left the image is right beside the text
  Beside text, right the image is right beside the text

Icon Container 

The Icon Container element gives you the possibility to set icons in a row. You also can align them left, right or centered.

You can add the Icon Container by selecting the content element in the content element wizard.

After that you can set the alignment of the icons and add new icons by pressing the "Create new Icon" button.

Each Icon have a required URL and Icon field. The Icon aspect ratio is fixed to a square and allows you to set the right image section via the build in cropping tool.

Maps 

Using the "maps" feature you can add dynamic maps from OpenStreetMaps or Google Maps.

In order to respect the visitors privacy the maps won't be included on page load but only after the visitor clicks the content element. A preview image is shown until then.

You can add a map by selecting the "Map" content element in the content element wizard.

After that you have to choose which type you want to use (OpenStreetMaps or Google Maps) and add the URL to the map. See below how to get the map url.

If you want you can add your own preview image in the content element. Please note that Google does not allow screenshots of their map application to be used while OpenStreetMap does even offer a screenshot feature.

The Map will be show in 16:9 format. You can select a part of your image by using the image cropping tool.

How to get the map URL for OpenStreetMaps 

In order to get the URL for an OpenStreetMaps map please use the following steps.

  • Open openstreetmaps.org and select your desired place.
  • Click on "Share".
  • Activate the "Show marker" checkbox.
  • Go to the "HTML" tab.
  • Copy the URL from the src="" property. Please do not copy the whole HTML code!

How to get the map URL for Google Maps 

In order to get the URL for an Google Maps map please use the following steps.

  • Open https://www.google.de/maps and select your desired place.
  • Click on "Share".
  • Select the "Embed a map" tab.
  • Copy the URL from the src="" property. Please do not copy the whole HTML code!

Teaser Container 

Frontend Example

The teaser container element provides the possibility to set multiple teasers in a row. In big viewports (desktop) there are 4 columns of teasers, the columns stack as the viewport gets smaller (mobile).

How to create the element? 

You can add the teaser container by selecting the content element in the content element wizard.

After that you can create multiple teasers by pressing the "+ New teaser element" button.

Each teaser has a required Image, Header and Link field.

Stage 

Wizard 

Stage element in newContent wizard

Stage settings 

| As an editor you can set some predefined columns for the stage. |

Column Description
  Title Main title of the stage
  Subline Small subline under the main title
  Link Link for the button
  Linktext Text for the button
  Background image Image for the stage

Videos 

Videos can be embedded by adding a new content element of type "Video".

Add video

Opened content element wizard

Available fields 

Beside normal header the following fields are available in the video element:

Video element fields

Editing the video content element

  1. Video

    You have to add a video from the filelist here. Available providers: Local MP4, YouTube or Vimeo

  2. Preview image

    You can set a preview image that is shown before the video gets loaded by a user's click. When using YouTube or Vimeo a preview image will be generated automatically, if you don't add one.

News 

The news feature allows you to add news records to your website. They will be shown as a list in chronological order. Each news record has also single view in which the full news can be read.

In the backend news records can be created on sysfolders.

The news extension is very powerful and allows to add images, files to download, related news records, categorization and a lot more.

Events 

Using the “events” feature you can add a list of events to your website.

The events features is based on the “news” extension, therefore most of the features are the same as in news.

You can add events as you normally would add news records.

By activiting the property “Is event”, you can transform a news record into an event record.

Event records contain additional fields:

  • End date (date)
  • Full day (checkbox)
  • Organizer (relation to available organizers or free text)
  • Location (relation to available locations or free text)

Those information will be automatically displayed in the fronted if “is event” is activated.

The template respects different cases of date constallations, for example if no end date is set, it’s not displayed and if a date is marked as “full day” no time information is displayed.

Persons 

Database records 

New person records can be created by using the "New record" function inside a folder.

Add new person record

Persons: Listing plugin 

The persons listing can be added to a page by adding a new content element of type "Plugins > Persons: Listing".

Add person list plugin

Persons: Detail plugin 

The person detail plugin can be added to a page by adding a new content element of type "Plugins > Persons: Detail".

Add person list plugin

If the constant "plugin.tx_highereducationpackage_personslisting.view.settings.detailPid" is set, a link "View Details" will be added both to the persons list and the contact boxes that points to the page where you added the detail plugin. Please note that this setting can be done by admins only.

Plugin settings 

The following settings can be done for the persons list plugin:

[1] Category mode

Define if catgegory selection in (2) will be ignored or will be treated as AND or OR relation.

IGNORE All person records will be shown
OR All persons with at least one of the selected categories will be shown
AND All persons with exactly the selected categories will be shown

[2] Categories

Select the categories to be shown in persons list

[3] Show search form

Configure if the search form is shown.

Persons: Contact box plugin 

The contact box plugin can be added to a page by adding a new content element of type "Plugins > Persons: Contact Box".

Add person contact box plugin

Plugin settings 

The following settings can be done for the persons contact box plugin:

[1] Persons

Select the person records to show in the plugin. At least one person record has to be selected. The sorting in the select box will be used for sorting the records in the frontend output.

Courses 

The courses module is built with ke_search. It uses the facetting possibilities for pages.

All courses are regular page records that are enriched with tags, a search result image and an abstract for the search result.

Only records with the tag "type_course" are shown on the courses list, this is configured as predefined filter in the searchbox plugin.

The filter possiblities "degree" and "subject area" are built as filters.

The information shown in the courses list is set in the page properties. You will find the fields "Abstract for search result" and "Search result image" under the tab "Search".

Department Kickstarter 

The department kickstarter module gives you the opportunity to create department sites based on template page trees.

The whole template page tree including subpages, content elements and other records is copied to a chosen destination. You can set a custom slug for your new department site, all slugs of child pages will be updated.

Create a template 

Every page can be marked as a template in the page properties.

You must at least have one template page in order to use the kickstarter module.

Create a new department site 

Open the kickstarter module and select the target page in the page tree.

Fill the form fields:

( 1 ) Enter the title for the new department site. This value will be used as the page title for the new department site.

( 2 ) Enter the Url path for the new site. This value will be used as a slug for the new department site. The parent pages will not be used for the generated slug.

( 3 ) As mentioned above the target page is selected in the page tree on the left. The new department site will be created as a subpage to the targetpage.

( 4 ) All pages marked as kickstarter template are listed here. Select the one you want to use as template for your new department site.

( 5 ) Optionally you can upload an logo for the new department here.

( 6 ) Optionally you can upload an alternate logo for the new department here.

( 7 ) Select the primary color for the new department site.

( 8 ) Select the secondary color for the new department site.

( 9 ) Select the spot color for the new department site.

( 10 ) Select the type of main navigation.

The copy process will be started by clicking the button "Create department site"

Use context menu to create a new department site 

Instead of opening the module and selecting a target page for your new department site there is an easier way:

Just click on the icon of the target page in the page tree and select "Create department site here". You will be redirected to the department kickstarter module and the page you clicked before is preselected as the target page.

Alternative text check for images 

The Higher Education Package contains a check for missing alternative texts on images.

If this feature is activated then the check is processed every time when a relation to an image file is added or changed in a content element. The image relation will be disabled (2) if there is no alternative text and the user is informed by a flash message warning (1).

Alternative text check

Set content as accordion 

The Higher Education Package contains a basic accordion functionality.

If this feature is activated and the CType allowed to be an accordion you can activate it under the appereance tab in TYPO3 backend. Here you have the setting to activate the accordion appereance and set it to open as default.

Accordion appereance settings

Page Layouts 

This section will give you an overview about the page layouts with the higher education package. Page layouts are implemented as backend layouts.

Name Description web_layout key
Default The default page layout with several content columns Default
Page with submenu Layout includes multiple content columns and a submenu PageWithSubmenu
Education offer Layout includes two content columns and is only used by the educational offer pagetype EducationOffer

Remove existing backend layouts 

You can remove an existing backend layout via Page TSconfig like in the example below.

mod.web_layout.BackendLayouts.KEY >
Copied!

Example to remove the default layout

mod.web_layout.BackendLayouts.Default >
Copied!

Text & Image 

Administrators have the possibility to set specific constants in TYPO3 constant editor to change the visual behavior of this element.

Property Description Options Default
plugin.tx_highereducationpackage.contentelements.textpic.imageMaxWidth change the maximum image size of image in text   500px
plugin.tx_highereducationpackage.contentelements.textpic.imageProportion change the maximum width of the image-wrapper in texts 33%, 50% 33%

Constant Editor 

Images 

Administrators have the possibility to set specific constants in TYPO3 constant editor to change the visual behavior of this element.

Property Description Default
plugin.tx_highereducationpackage.contentelements.image.imageMaxWidth change the maximum image size of images rendered in 100% width 1600
plugin.tx_highereducationpackage.contentelements.image.tabletImageMaxWidth large grid breakpoint value to guarantee right responsive image rendering 992
plugin.tx_highereducationpackage.contentelements.image.mobileImageMaxWidth small grid breakpoint value to guarantee right responsive image rendering 576

Constant Editor 

Maps 

Administrators have the possibility to overwrite settings in TYPO3 constant editor to change the default placeholder image for the map content element.

You can find the setting in the Category "Higher Education Package: Content" in the Constant Editor.

Property Description Default
plugin.tx_highereducationpackage.contentelements.highereducationpackage_map.defaultPreviewImagePath Default Placeholder Image EXT:higher_education_package/Resources/Public/Images/Map/map-default-preview.jpg

The alternative text for the default image is set using a language file. You can overwrite it by using the following language key:

LLL:EXT:higher_education_package/Resources/Private/Language/locallang_map.xlf:map.previewimage.defaultTitle

Video 

We have replaced the video plugin with a corresponding content element. The plugin is no longer available. Administrators have the option of automatically migrating old plugins to new content elements using a wizard on the command line.

Migrate video plugins to content elements 

This command allows running the wizard on command line:

vendor/bin/typo3 upgrade:run higherEducationPackage_videoElementUpgradeWizard
Copied!

Page Colors 

The SCSS is written with variables that can be overridden in the site settings module.

Overriding the default colors 

Set the variables in the site settings module to change the default colors.

Property Description Default
plugin.tx_highereducationpackage.scss-parser.variables.primary-color Primary Color #000000
plugin.tx_highereducationpackage.scss-parser.variables.secondary-color Secondary Color #595959
plugin.tx_highereducationpackage.scss-parser.variables.spot-color Spot Color #ff8700

Search (Solr) 

Administrators can set the username and password required to access the solr server in typoscript.

Property Description Default
plugin.tx_solr.solr.username Sets the username required to access the solr server.  
plugin.tx_solr.solr.password Sets the password required to access the solr server.  

Administrators can configure the solr connection in the site module. This section defines the address of the Solr server.

Persons 

Configure persons detail view pid 

You can configure the pid where the detail view of persons records will be shown by setting the following constant

plugin.tx_highereducationpackage_personslisting.view.settings.detailPid = 11
Copied!

If this is set, a link "Show Details" that points to the configured page will be rendered both in list and contact box plugin.

Do not allow to show all persons in one list 

By default it is possible to show a list of all persons by setting the category mode to "Ignore" which then shows all persons in the frontend in one big list.

You may wish to disable that function for privacy reasons. You can do so by adding the following Page TSConfig.

# remove "show all" mode in persons listing
TCEFORM.tt_content.pi_flexform.highereducationpackage_personslisting.sDEF.settings\.categoryMode.removeItems = IGNORE
Copied!
Persons category mode Persons Page TSConfig Persons category mode without ignore mode

Make person fields read-only 

By default the person records are editable for users with corresponding permissions. You can set all fields to read-only if you don't want person records to be editable at all by adding the following Page TSConfig.

# set person fields to "read-only"
TCEFORM.tx_highereducationpackage_domain_model_person {
	title_prefix.config.readOnly = 1
	first_name.config.readOnly = 1
	last_name.config.readOnly = 1
	title_suffix.config.readOnly = 1
	function.config.readOnly = 1
	consultation_hour.config.readOnly = 1
	address.config.readOnly = 1
	room.config.readOnly = 1
	building.config.readOnly = 1
	phone.config.readOnly = 1
	fax.config.readOnly = 1
	email.config.readOnly = 1
	personal_page.config.readOnly = 1
	categories.config.readOnly = 1
	starttime.config.readOnly = 1
	endtime.config.readOnly = 1
	sys_language_uid.config.readOnly = 1
	hidden.config.readOnly = 1
}
Copied!

Feature Toggles 

The Higher Education Package allows you to disable some features in case you don't want to use them or you want to use your own implementation.

If a feature is disabled, the corresponding typoscript, TCA, CSS, plugin configurations, hooks, scheduler tasks and so on won't be included by the Higher Education Package. This can lead to invalid plugins or TCA configuration if the feature was used and afterwards disabled.

Features can be switched on and off in the Extension Configuration module in the backend.

Extension Configuration Module Extension Configuration Settings

The following features can be toggled:

Feature Default
Persons enabled
News enabled
Styleguide disabled
Solr disabled
KeSearch enabled
YouTube / Vimeo videos enabled
Education offer the pagetype enabled
Accordion enabled

Living Styleguide 

In order to use the frontend plugin of the Higher Education Packages' "Living Styleguide" you have to activate this feature in the Extension Configuration module.

In addition you have to add the dependency for the KSS parser yourself as it is not provided by the Higher Education Package itself.

Add the following package requirement to the composer.json of your TYPO3 website:

"kss-php/kss-php": "^2.0"
Copied!

An exception will be thrown if the KSS Parser class does not exist:

Exception: missing KSS parser class

LDAP authentication 

The extension "ig_ldap_sso_auth" extension can be used for authentication by LDAP.

The extension has been tested to work properly together with the Higher Education Package. You can use the extension configuration described by the author (see below).

Frontend authentication 

After LDAP authentication setup it's possible to use a regular TYPO3 login form for frontend authentication (see https://packagist.org/packages/typo3/cms-felogin). Make sure your login form points to the sysfolder where your LDAP users are imported to.

Backend authentication 

After LDAP authentication setup and acitvation of backend authentication in the extension setup of ig_ldap_sso_auth users can login into the TYPO3 backend by using their LDAP credentials with the regular backend login form.

Alternative text check for images 

The Higher Education Package contains a check for missing alternative texts on images. This feature is activated by default and can be deactivated in the extension settings.

If activated the check is processed every time when a relation to an image file is added or changed in a content element. The image relation will be disabled (2) if there is no alternative text and the user is informed by a flash message warning (1).

Alternative text check

Disable check for single database fields 

In some cases the check for an existing alternative text makes no sense, e.g. for images that are used as background-images in the frontend. The check can be disabled for single database fields. The following Typoscript setup is the default setting that comes with the Higher Education Package. Extend the Typoscript with further table / field combinations to fit your needs. You can add more than one field per table if needed.

plugin.tx_highereducationpackage.alttext-check.ignore {
    pages {
        1 = menu_image
    }
    tx_highereducationpackage_domain_model_person {
        1 = image
        2 = images
    }
}
Copied!

We also can ignore the check for tt_content fields base on CType here:

plugin.tx_highereducationpackage.alttext-check.cTypeIgnore {
    uploads {
        1 = media
    }
}
Copied!

SCSS Variables 

You can define custom SCSS files and variables in the site settings module.

Available Settings:

Site settings

Page Layouts 

This section will give you an overview about the page layouts with the higher education package. Page layouts are implemented as backend layouts.

Name Description web_layout key
Default The default page layout with several content columns Default
Page with submenu Layout includes multiple content columns and a submenu PageWithSubmenu
Education offer Layout includes two content columns and is only used by the educational offer pagetype EducationOffer

Override existing backend layouts 

If you want to override a given backend layout you have to add your Template-, Layout- and PartialRootPaths.

The defaults paths of higher education package are defined in EXT:higher_education_package/Condiguration/TypoScript/Setup/page.typoscript

templateRootPaths {
    0 = EXT:higher_education_package/Resources/Private/Templates/Page/
    10 = EXT:YOUR_EXTENSION_KEY/Resources/Private/Templates/Page/
}

partialRootPaths {
    0 = EXT:higher_education_package/Resources/Private/Partials/Page/
    10 = EXT:YOUR_EXTENSION_KEY/Resources/Private/Partials/Page/
}

layoutRootPaths {
    0 = EXT:higher_education_package/Resources/Private/Layouts/Page/
    10 = EXT:YOUR_EXTENSION_KEY/Resources/Private/Layouts/Page/
}
Copied!

Overriding the FLUID templates 

This is how the templates are assigned in the higher_education_package:

plugin.tx_highereducationpackage.contentelements {
	templateRootPaths {
		5 = EXT:higher_education_package/Resources/Private/Templates/ContentElements/
		10 = {$plugin.tx_highereducationpackage.contentelements.view.templateRootPath}
	}
	partialRootPaths {
		5 = EXT:higher_education_package/Resources/Private/Partials/ContentElements/
		10 = {$plugin.tx_highereducationpackage.contentelements.view.partialRootPath}
	}
	layoutRootPaths {
		5 = EXT:higher_education_package/Resources/Private/Layouts/ContentElements/
		10 = {$plugin.tx_highereducationpackage.contentelements.view.layoutRootPath}
	}
}
Copied!

If you want to overwrite the templates you can set the corresponding path-constant or set new paths with a increased number.

plugin.tx_highereducationpackage.contentelements {
	templateRootPaths.20 = EXT:your_extension_key/Resources/Private/Templates/ContentElements/
	partialRootPaths.20 = EXT:your_extension_key/Resources/Private/Partials/ContentElements/
	layoutRootPaths.20 = EXT:your_extension_key/Resources/Private/Layouts/ContentElements/
}
Copied!

Text & Image 

Developers can overwrite any ContentElement templates of the higher education package, see Overriding the FLUID templates.

Images 

Developers can overwrite any ContentElement templates of the higher education package, see Overriding the FLUID templates. Images are rendered as responsive images, multiple image sizes are included in a picture-element, see also Images.

Table 

Developers can overwrite any ContentElement templates of the higher education package, see Overriding the FLUID templates.

Icon Container 

Developers can overwrite any ContentElement templates of the higher education package, see Overriding the FLUID templates.

Map 

Developers can overwrite any ContentElement templates of the higher education package, see Overriding the FLUID templates.

Teaser Container 

The rows and columns are defined as grid in the TeaserContainer Template:

<f:if condition="{data_teaser_container_content}">
    <div class="grid grid--stretch">
        <f:for each="{data_teaser_container_content}" as="teaser">
            <div class="grid__column grid__column--sm-6 grid__column--md-4 grid__column--lg-4 grid__column--xl-3">
                <f:render partial="TeaserContainer/TeaserItem" arguments="{data: teaser.data, teaser_image: teaser.teaser_image.0}"/>
            </div>
        </f:for>
    </div>
</f:if>
Copied!

Developers can overwrite any ContentElement templates of the higher education package, see Overriding the FLUID templates.

Stage 

Developers can overwrite any ContentElement templates of the higher education package, see Overriding the FLUID templates.

Video 

Developers can overwrite any ContentElement templates of the higher education package, see Overriding the FLUID templates.

Persons 

Overriding the FLUID templates 

Persons: Listing 

This is how the templates are assigned in the higher_education_package:

plugin.tx_highereducationpackage_personslisting {
	view {
		templateRootPaths{
			0 = EXT:higher_education_package/Resources/Private/Templates/
			10 = {$plugin.tx_highereducationpackage_personslisting.view.templateRootPath}
		}
		partialRootPaths {
			0 = EXT:higher_education_package/Resources/Private/Partials/
			10 = {$plugin.tx_highereducationpackage_personslisting.view.partialRootPath}
		}
		layoutRootPaths {
			0 = EXT:higher_education_package/Resources/Private/Layouts/
			10 = {$plugin.tx_highereducationpackage_personslisting.view.layoutRootPath}
		}
	}
}
Copied!

If you want to overwrite the templates you can set new paths with a increased number.

plugin.tx_highereducationpackage_personslisting.view {
	templateRootPaths.20 = EXT:your_extension_key/Resources/Private/Templates/Persons/
	partialRootPaths.20 = EXT:your_extension_key/Resources/Private/Partials/Persons/
	layoutRootPaths.20 = EXT:your_extension_key/Resources/Private/Layouts/Persons/
}
Copied!

Persons: Detail 

This is how the templates are assigned in the higher_education_package:

plugin.tx_highereducationpackage_persondetail {
    view {
        templateRootPaths {
            0 = EXT:higher_education_package/Resources/Private/Templates/
            1 = {$plugin.tx_highereducationpackage_persondetail.view.templateRootPath}
        }
        partialRootPaths {
            0 = EXT:higher_education_package/Resources/Private/Partials/
            1 = {$plugin.tx_highereducationpackage_persondetail.view.partialRootPath}
        }
        layoutRootPaths {
            0 = EXT:higher_education_packages/Resources/Private/Layouts/
            1 = {$plugin.tx_highereducationpackage_persondetail.view.layoutRootPath}
        }
    }
}
Copied!

If you want to overwrite the templates you can set new paths with a increased number.

plugin.tx_highereducationpackage_persondetail.view {
	templateRootPaths.20 = EXT:your_extension_key/Resources/Private/Templates/Persons/
	partialRootPaths.20 = EXT:your_extension_key/Resources/Private/Partials/Persons/
	layoutRootPaths.20 = EXT:your_extension_key/Resources/Private/Layouts/Persons/
}
Copied!

Persons: Contact Box 

This is how the templates are assigned in the higher_education_package:

plugin.tx_highereducationpackage_personscontactbox {
	view {
		templateRootPaths {
			0 = EXT:higher_education_package/Resources/Private/Templates/
			10 = {$plugin.tx_highereducationpackage_personslisting.view.templateRootPath}
		}
		partialRootPaths {
			0 = EXT:higher_education_package/Resources/Private/Partials/
			10 = {$plugin.tx_highereducationpackage_personslisting.view.partialRootPath}
		}
		layoutRootPaths {
			0 = EXT:higher_education_package/Resources/Private/Layouts/
			10 = {$plugin.tx_highereducationpackage_personslisting.view.layoutRootPath}
		}
	}
}
Copied!

If you want to overwrite the templates you can set new paths with a increased number.

plugin.tx_highereducationpackage_personscontactbox.view {
	templateRootPaths.20 = EXT:your_extension_key/Resources/Private/Templates/Persons/
	partialRootPaths.20 = EXT:your_extension_key/Resources/Private/Partials/Persons/
	layoutRootPaths.20 = EXT:your_extension_key/Resources/Private/Layouts/Persons/
}
Copied!

News 

Overriding the FLUID templates 

This is how the templates are overwritten by the Higher Education Package:

plugin.tx_news {
    view {
        templateRootPaths {
            0 = EXT:news/Resources/Private/Templates/
            1 = EXT:higher_education_package/Resources/Private/Templates/News/
        }

        partialRootPaths {
            0 = EXT:news/Resources/Private/Partials/
            1 = EXT:higher_education_package/Resources/Private/Partials/News/
        }

        layoutRootPaths {
            0 = EXT:news/Resources/Private/Layouts/
            1 = EXT:higher_education_package/Resources/Private/Layouts/News/
        }
    }
}
Copied!

If you want to overwrite the templates you can set new paths with a increased number.

plugin.tx_news {
    view {
        templateRootPaths {
            20 = EXT:your_extension_key/Resources/Private/Templates/News/
        }

        partialRootPaths {
            20 = EXT:your_extension_key/Resources/Private/Partials/News/
        }

        layoutRootPaths {
            20 = EXT:your_extension_key/Resources/Private/Layouts/News/
        }
    }
}
Copied!

Events 

Events are technically news and will displayed using the same templates as for news. Please see News.

Search (Solr) 

Overriding the FLUID templates 

Solr: Listing 

This is how the templates are assigned in the solr extension:

plugin.tx_solr {
    view {
        templateRootPaths {
            0 = EXT:solr/Resources/Private/Templates/
            10 = {$plugin.tx_solr.view.templateRootPath}
        }
        partialRootPaths {
            0 = EXT:solr/Resources/Private/Partials/
            10 = {$plugin.tx_solr.view.partialRootPath}
        }
        layoutRootPaths {
            0 = EXT:solr/Resources/Private/Layouts/
            10 = {$plugin.tx_solr.view.layoutRootPath}
        }
    }
}
Copied!

If you want to overwrite the templates you can set new paths in constants.

plugin.tx_solr.view {
    templateRootPath = EXT:your_extension_key/Resources/Private/Templates/Solr/
    partialRootPath = EXT:your_extension_key/Resources/Private/Partials/Solr/
    layoutRootPath = EXT:your_extension_key/Resources/Private/Layouts/Solr/
}
Copied!

If you add new page templates, remember to add the wrapping search markers in fluid.

<!--TYPO3SEARCH_begin-->
    <h1>content to be indexed</h1>
    <p>...</p>
<!--TYPO3SEARCH_end-->
Copied!

Access restricted page error 

The handler for access restricted page errors (403 error) will redirect to the configured login page with the original requested url in the return_url parameter. This causes a redirect to this page after successful login. If the requested page is not accessible for the logged in user, because e.g. the user group does not match, the user gets the content of a configured 403 error page.

Site-Configuration ^^^^^^^^^^^^^^^^^^

errorHandling:
  -
    errorCode: 403
    errorHandler: PHP
    errorPhpClassFQCN: T3G\HigherEducationPackage\Handler\Error\AccessRestriction\AccessRestrictedPageErrorHandler
    loginUrl: 't3://page?uid=66'
    fallBackErrorContentSource: 't3://page?uid=135'
Copied!

Handler specific configuration values:

loginUrl

loginUrl
type

string

Contains the link for the page with the login form in typolink format.

fallBackErrorContentSource

fallBackErrorContentSource
type

string

Contains the link for the page with the 403 error page in typolink format.

Testing 

Testing-Environment 

To run our test tools, the first thing we need to do is to create a development environment with all the dependencies. Run composer install inside the higher education package folder to have all dependencies in .Build directory. This is how the development environment is installed from the command line:

$ cd /var/www/html/vendor/t3g/higher-education-package/
$ composer install
Copied!

PHPUnit 

We use the TYPO3 core testing framework (based on phpunit) for the unit tests. The aim of the testing framework is to provide a good way to write and run unit test specially for TYPO3. The higher education package provides a configuration file on it´s root folder. This is how the unit tests are executed from the command line:

$ cd /var/www/html/vendor/t3g/higher-education-package/
$ .Build/vendor/bin/phpunit -c phpunit.xml --testdox
Copied!

PHPStan 

PHPStan scans your whole codebase and looks for obvious bugs. The higher education package provides a configuration file on it´s root folder. This is how phpstan is executed from the command line:

$ cd /var/www/html/vendor/t3g/higher-education-package/
$ .Build/vendor/bin/phpstan analyze
Copied!

Rector 

Rector is a PHP tool that you can run on any PHP project to get an instant upgrade or automated refactoring. It helps with PHP upgrades, framework upgrades and improves your code quality. The higher education package provides a configuration file on it´s root folder. This is how rector is executed from the command line:

$ cd /var/www/html/vendor/t3g/higher-education-package/
$ .Build/vendor/bin/rector process . --dry-run
Copied!

Education offer 

The "Educational offer" feature toggle activates a new page type which is called "education offer". It provides basic functionalities for kickstarting your educational offers. A custom Datahandler hook is also implemented which ensures that the corresponding backend layout is displayed as default when creating a education offer page in the page tree via drag & drop. You can extend the custom doktype tca as normal.

Predefined Doktype: 50

Hook: EXT:higher_education_package/Classes/Hooks/Doktypes/EducationOfferDataHandlerHook.php

Default template: EXT:higher_education_package/Resources/Private/Templates/Page/EducationOffer.html

Documentation best practice 

Best practice for Documentation with rest

Examples 

Headline 2 

Headline 3 

Headline 4 

Headline 5 

http://wiki.typo3.org/ReST_Syntax

http://docs.typo3.org/typo3cms/drafts/github/marble/DocumentationStarter/Chapter1/SubChapter/TopicC.html

Properties 

Property Data type
ref
 
Default
fobar   yes <div>|</div>
subst\_elementUid   no 0

subst_elementUid 

text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text

API 

How to use the API...

$stuff = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
	'\\Foo\\Bar\\Utility\\Stuff'
);
$stuff->do();
Copied!

or some other language:

$(document).ready(
	function () {
		doStuff();
	}
);
Copied!

Tables 

Header 1 Header 2 Header 3
body row 1 column 2 column 3
body row 3 Cells may span rows.
  • Cells
  • contain
  • blocks.
body row 4

ChangeLog 

Version 13.1.0 (December 2025)

Version 13.0.1 (April 2025)

Version 13.0.0 (March 2025)

Version 12.0.0 (October 2023)

Version 11.1.4 (October 2023)

Version 11.1.3 (September 2023)

Version 11.1.2 (May 2023)

Version 11.1.1 (December 2022)

Version 11.1.0 (October 2022)

Version 11.0.2 (July 2022)

Version 11.0.1 (May 2022)

Version 11.0.0 (November 2021)

Version 10.0.5 (October 2022)

Version 10.0.4 (September 2022)

Version 10.0.3 (May 2022)

Version 10.0.2 (November 2021)

Version 10.0.1 (April 2021)

Version 10.0.0 (Dezember 2020)

Version 9.6.0 (Dezember 2020)

Version 9.5.0 (April 2020)

Version 9.4.3 (November 2019)

Version 9.4.2 (October 2019)

Version 9.4.1 (August 2019)

Version 9.4.0 (June 2019)

Version 9.3.0 (June 2019)

Version 9.2.0 (April 2019)

Version 9.1.0 (February 2019)

Version 9.0.0 (October 2018)

Version 1.3.1 (October 2018)

Version 1.3.0 (July 2018)

Version 1.2.0 (July 2018)

  • [TASK] Rename package and all components to higher_education_package

Version 1.1.1 (June 2018)

  • [BUGFIX] add compatibility to use fluid_styled_content with Higher Education Package

Version 1.1.0 (May 2018)

Version 1.0.0 (MVP) (April 2018)

  • [TASK] Set up package folder and file structure.
  • [TASK] Set up template and CSS basics.
  • [FEATURE] Create page template.
  • [FEATURE] Create main menu
  • [FEATURE] Create content elements header, text, text and image, images.
  • [TASK] Set up documentation in .rst files.
  • [TASK] Set up living styleguide.
  • [FEATURE] Create filterable courses list based on ke_search.
  • [FEATURE] Create filterable and searchable persons list and contact boxes.

v13.1.0 Changes 

Breaking Changes 

Features 

  • [FEATURE] Full PHP 8.4 support

Bugfixes 

  • [BUGFIX] do not exclude fields for translation of icon container
  • [BUGFIX] fix TCA deprecation in pages.educationOffer.php

Breaking: #1 - SCSS Parser Update 

Description 

The built-in SCSS parser has been updated from version 1.x to 2.x to ensure compatibility with PHP 8.4. This update brings some changes that need to be taken into account:

  • SCSS parser settings and variables are now configured in a site set provided by the Higher Education Package. You must include this yourself into your project.
  • The autoprefixer feature has been removed.
  • The px to rem feature has been removed.
  • The style guide is no longer available as a module in the backend.
  • No overridden SCSS variables in backend RTE available. (The department kickstarter does not support site sets yet.)
  • SCSS Feature Toggles are not possible anymore. @import statements within @if conditions in frontend SCSS files (i.e. import.scss) throws an exception. The includes of modules must be modified manually according to the features used.

v13.0.1 Changes 

Features 

  • [FEATURE] Extend the list of image file extensions for the WebP format

Bugfixes 

  • [BUGFIX] fix columnsOverrides in tt_content.video.php

Misc 

  • [TASK] Small adjustment to the icon container preview renderer for compatibility reasons

Breaking: #1 - Outsourcing of department kickstarter 

Description 

The department kickstarter module has been outsourced to a new extension.

Breaking: #2 - Outsourcing of alternative text check 

Description 

The check for missing alternative texts on images has been outsourced to a new extension.

v12.0.0 Changes 

Breaking Changes 

Features 

  • [FEATURE] Upgrade compatibility to support TYPO3 12 LTS
  • [FEATURE] Compatibility up to PHP 8.2
  • [FEATURE] New main navigation variant: mega menu
  • [FEATURE] Add new Video content element with support for YouTube, Vimeo and local videos from the filelist
  • [FEATURE] Support for news 12.0, eventnews 7.0, ig_ldap_sso_auth 4.0, solr 12.0.5 and ke_search 6.1
  • [FEATURE] Add support to set content elements as accordion in the frontend
  • [FEATURE] Add the option to department kickstarter to exchange the logo
  • [FEATURE] Add the option to department kickstarter to choose the type of main menu
  • [FEATURE] Introduce a lazy loading attribute for content-element images
  • [FEATURE] Add custom person search result for solr

Bugfixes 

  • [BUGFIX] Increase default spot-color contrast to comply with WCAG AA ruleset
  • [BUGFIX] Fix missing Subcategories in TypoScript constants
  • [BUGFIX] Fix failing access restricted error page handler
  • [BUGFIX] Fix missing space in main navigation icons (W3C)
  • [BUGFIX] Fix a faulty fluid condition in template for table columns
  • [BUGFIX] Fix broken extension check from install-tool failed
  • [BUGFIX] Remove template and typoscript configuration of old felogin plugin (fe_login_pi1)
  • [BUGFIX] Persons views: label correction, media query styling correction
  • [BUGFIX] Refactor slide-nav to split-nav to follow the renaming convention
  • [BUGFIX] Fix relative path assembling for scss parsing
  • [BUGFIX] Fix dependency to UpgradeWizardInterface for VideElementUpgradeWizard

Misc 

  • Remove own behat frontend tests

Breaking: #1 - Renaming main navigation to split navigation 

Description 

Since we are introducing a new main navigation variant, we have changed the original navigation styles and markup from main-nav to split-nav. The corresponding JavaScript has also been changed.

Breaking: #2 - Moving Scss folder from Private to Public 

Description 

To be compatible with TYPO3 12 LTS, it was necessary to move the scss folder to the public directory. All corresponding paths were also adapted.

Breaking: #3 - Remove nimut/testing-framework package as dev-requirement 

Description 

To be compatible with PHP8.1/PHP8.2 as a requirement of TYPO3 12 LTS, it was necessary to remove the package nimut/testing-framework as dev-requirement. In future, all tests should be based directly on the typo3/testing-framework that comes with TYPO3.

Breaking: #4 - Fixed multilanguage handling for person records 

Description 

Person records have been refactored to ensure correct translation behaviour.

The query builder was replaced with an extbase query to ensure compatibility with the core translation behaviours.

Breaking: #5 - Remove deprecated person import command 

Description 

The person import command is completely removed, as it has been marked as deprecated for a long time.

Breaking: #6 - Remove custom person indexer 

Description 

The custom person indexer is directly dependent on the PHP-Classes of ke_search extension and thus cannot be used alone. However, the ke_search extension is not required explicit by the package. Therefore, the custom person indexer has been completely removed.

Breaking: #8 - Move video plugin to content element 

Description 

We have replaced the video plugin with a corresponding content element. We provide an upgrade wizard for the migration. At the moment it is not possible to run the wizard from the backend, only from command line.

v11.1.4 Changes 

Bugfixes 

  • [BUGFIX] Remove template and typoscript configuration of old felogin plugin (fe_login_pi1)
  • [BUGFIX] Persons views: label correction, media query styling correction

Misc 

  • Add responsive images to video element (poster image)
  • Add responsive images to map element (preview image)
  • Add font-display: swap for non blocking custom fonts

v11.1.3 Changes 

Bugfixes 

  • [BUGFIX] Fix a faulty fluid condition in template for table columns in Resources/Private/Partials/ContentElements/Table/Columns.html
  • [BUGFIX] Fix broken extension check from install-tool failed, registering plugins moved to Configuration/TCA/Overrides/tt_content.php

Misc 

  • Registering icons moved to Configurations/Icons.php

v11.1.2 Changes 

Bugfixes 

  • [BUGFIX] Increase default spot-color contrast to comply with WCAG AA ruleset
  • [BUGFIX] Fix missing Subcategories in TypoScript constants
  • [BUGFIX] Fix failing access restricted error page handler
  • [BUGFIX] Fix missing space in main navigation icons (W3C)

v11.1.1 Changes 

Bugfixes 

  • [BUGFIX] fixing typoscript doktype condition for php 8.1

v11.1.0 Changes 

Features 

  • [FEATURE] implementing solr search layer to page header
  • [FEATURE] add new stage content element
  • [FEATURE] compatibility for the News extension in version 10

Bugfixes 

  • [BUGFIX] person listing is not respecting the foreign_table restriction for sys_categories_mm
  • [BUGFIX] fix PersonTitleTagProvider, person could be false
  • [BUGFIX] fix icon container element not translatable in connected mode

Misc 

  • Improve ux accessibility, font- and style adjustments
  • Improve undocumented TypoScript setting "cTypeIgnore" for alternative text check

v11.0.2 Changes 

Breaking Changes 

Features 

  • [FEATURE] Full PHP 8.1 support
  • [FEATURE] Introduce new page type "educational offer"
  • [FEATURE] Upgrade custom solr templates to support solr v11.5.x-dev
  • [FEATURE] Add solr index queue configuration for person records
  • [FEATURE] Upgrade custom eventnews templates to support eventnews v5.0.1
  • [FEATURE] Improved main-nav keyboard accessibility, close nav with escape

Bugfixes 

  • [BUGFIX] Solr results contain also content of language switch and breadcrumb
  • [BUGFIX] First level of the main-nav was focusable while the nav was closed
  • [BUGFIX] Living Styleguide backend module
  • [BUGFIX] Department-Kickstarter backend module

Deprecations 

  • [TASK] Mark person import command and task as deprecated
  • [TASK] Mark video plugin as deprecated

Breaking: #1 - Indexer configuration of ke_search changed 

Description 

The person indexer configuration of ke_search has changed. It uses the field "sysfolder" instead of "single_pages" as storage for person records. Please update your corresponding configuration record.

v11.0.1 Changes 

Bugfixes and Improvements 

  • [TASK] Remove semicolon in @var comment
  • [TASK] Improve array tratment in for loop
  • [TASK] Add allowed composer plugins list for development
  • [TASK] Add list of suggested extensions
  • [TASK] Add php version constraint
  • [BUGFIX] Fix another undefined array key warning
  • [BUGFIX] Fix some undefined array key warning
  • [TASK] Update scssphp package to version 1.7.*
  • [BUGFIX] Fix php warning in FalRelation hook
  • [BUGFIX] Fix ScssParser php 8 warning for undefined key
  • [BUGFIX] Fix alternative text checker
  • [BUGFIX] Fix PHP Warning: Undefined array key

v11.0.0 Changes 

Breaking Changes 

Features 

  • [FEATURE] upgrade compatibility to support TYPO3 11 LTS
  • [FEATURE] upgrade custom news template to support news v9.0.0
  • [FEATURE] compatibility with newest ke_search v4.1.0
  • [FEATURE] added new default extended page layout
  • [FEATURE] remove image requirement for teaser element
  • [FEATURE] provide custom styling if the extension OM Cookie Manager is used
  • [FEATURE] image copright information within image-caption

Bugfixes 

  • [BUGFIX] fix broken fluid tag in template of department kickstarter

Breaking: #1 - Remove Person Import Task 

Description 

The Person import task where removed. Please use "Execute console commands" --> "higher_education_package:person" instead

v10.0.5 Changes 

Features 

  • [FEATURE] add support for om_cookie_manager extension

BUGFIX 

  • [BUGFIX] Fix PersonTitleTagProvider, person could be false

Misc 

  • Improve undocumented TypoScript setting "cTypeIgnore" for alternative text check

v10.0.4 Changes 

BUGFIX 

- [BUGFIX] Fix person by categories database query

v10.0.3 Changes 

Maintenance 

- [TASK] Backport current documentation to TYPO3 branch

v10.0.2 Changes 

Bugfixes 

  • [BUGFIX] person-list plugin categories filter
  • [BUGFIX] missing configuration for table content element
  • [BUGFIX] using official kss-php package
  • [BUGFIX] department kickstarter and context menu are fixed
  • [BUGFIX] menu content elements are optimized

v10.0.1 Changes 

Bugfixes 

  • [BUGFIX] selection of video preview image

Misc 

  • [TASK] set youtube and vimeo as privacy urls
  • [TASK] Add TYPO3 extension key to composer.json

v10.0.0 Changes 

Features 

  • [FEATURE] upgrade compatibility to support TYPO3 10 LTS
  • [FEATURE] upgrade custom news template to support news v8.5.0
  • [FEATURE] Add handler for 403 errors
  • [FEATURE] compatibility with newest ke_search v3.3.1
  • [FEATURE] using pageTitleTagProvider in person views
  • [FEATURE] add support for phpro/grumphp
  • [FEATURE] improved styling of the Living Styleguide

Bugfixes 

  • [BUGFIX] optimizing department kickstarter module svg icon
  • [BUGFIX] restructuring / updating tca flexform settings for several elements
  • [BUGFIX] restored Solr functionality of custom templates
  • [BUGFIX] restoring scss prefixer setting back to extension settings
  • [BUGFIX] add missing translation of ke_search teaser-list template
  • [BUGFIX] fix deleteAfterImport parameter of person import command on CLI

Misc 

  • [TASK] removing deprecated extbase annotations
  • [TASK] refactoring of sub-navigation template
  • [TASK] replaced be-layout-icons with improved visuals
  • [TASK] remove support for table pages_language_overlay

v9.6.0 Changes 

Breaking Changes 

Features 

  • [FEATURE] Add grumphp and typo3scan as dev dependency

Bugfixes 

  • [BUGFIX] Solr search templates
  • [BUGFIX] Apply grumphp changes - Code Style and Linting
  • [BUGFIX] add TYPO3 core fields to ext_tables.sql
  • [BUGFIX] fix missing namespace
  • [BUGFIX] fix wrong translation for label of eventnews
  • [BUGFIX] add visibility to methods of personsTcaService
  • [BUGFIX] add visibility to methods of scssUtility
  • [BUGFIX] add visibility to methods of person hook
  • [BUGFIX] add visibility to methods of ke_search hook
  • [BUGFIX] fix scssphp version constraint
  • [BUGFIX] fix missing target language
  • [BUGFIX] enable pages for index queue per default
  • [BUGFIX] fix DOMDocument call
  • [BUGFIX] fix wrong path to person.svg
  • [BUGFIX] remove false namespace for AfterScenarioScope
  • [BUGFIX] updating behat tests

Misc 

  • [TASK] Apply typo3scan changes - remove deprecations found by TYPO3 scanner
  • [TASK] Adapt grumphp ascii file paths for failure and success
  • [TASK] format php code corresponding to .editorconfig
  • [TASK] separate department kickstarter

Breaking: #1 - Removing facebook import 

Description 

Due to changes of the facebook API the facebook importer feature was deactivated as the current implementation is not compatible with the new facebook API.

v9.5.0 Changes 

Features 

  • [!!!][FEATURE] Updating scss parser - removing nodejs as system requirement
  • [!!!][FEATURE] removing extension setting for the autoprefixer

Bugfixes 

  • [BUGFIX] fixing youtube icon for the video element

v9.4.3 Changes 

Bugfixes 

v9.4.1 Changes 

Bugfixes 

  • [DOC] Add information about teasers in the release notes.
  • [BUGFIX] add ext:news as requirement

v9.4.0 Changes 

Features 

Bugfixes 

v9.3.0 Changes 

Features 

Bugfixes 

v9.2.0 Changes 

Features 

Bugfixes 

v9.1.0 Changes 

Features 

Bugfixes 

v1.3.1 Changes 

Breaking Changes 

Bugfixes 

Features 

v1.3.0 Changes 

Breaking Changes 

Bugfixes 

Features 

Breaking: #1 - Change scss-parser constants and setups typoscript paths / naming 

See https://jira.typo3.com/browse/THEP-174

Description 

We decided to group all settings and variables of the scss-parser to get a nicer overview of all constants and the setup given in the higher education package.

The default scss-parser settings and variables of the higher education package are defined in EXT:higher_education_package/Condiguration/TypoScript/Constants/scss-parser.typoscript and EXT:higher_education_package/Condiguration/TypoScript/Setup/scss-parser.typoscript

Old scss-parser constants 

plugin.tx_highereducationpackage {
    settings {
        # cat=higher education package: advanced/200/scssParserSettings; type=boolean; label=Enable overwriting typoscript scss variables
        overrideParserVariables = 1
        # cat=higher education package: advanced/200/scssParserSettings; type=boolean; label=Enable scss source maps => only active if concate and minifing css is disabled via typoscript
        cssSourceMapping = 0

        # cat=higher education package: advanced/201/pxToRem; type=boolean; label=Enable pixel to rem converting [BETA]
        enablePxToRemParsing = 0
    }
}

plugin.higher_education_package.settings {
    scss {
        base-rem-size = 16
    }
}
Copied!

Changed scss-parser constants 

plugin.tx_highereducationpackage {
    scss-parser {
        # cat=higher education package: advanced/200/scssParserSettings; type=boolean; label=Enable overwriting typoscript scss variables
        overrideParserVariables = 1

        # cat=higher education package: advanced/200/scssParserSettings; type=boolean; label=Enable scss source maps => only active if concate and minifing css is disabled via typoscript
        cssSourceMapping = 0

        # cat=higher education package: advanced/201/pxToRem; type=boolean; label=Enable pixel to rem converting [BETA]
        enablePxToRemParsing = 0

        variables {
            // define scss variables to overwrite here
        }
    }
}
Copied!

Breaking: #2 - Change page logo constants and setup typoscript paths 

See https://jira.typo3.com/browse/THEP-174

Description 

We decided to group all settings of the page logo to get a nicer overview of all constants and the setup given in the higher education package

The default page logo settings of the higher education package are defined in EXT:higher_education_package/Condiguration/TypoScript/Constants/logo.typoscript and EXT:higher_education_package/Condiguration/TypoScript/Setup/logo.typoscript

Constants 

Old page logo constants 

logo {
    # cat=higher education package: Basic/110/; type=int+; label= Logo Link PageUid
    pageUid = 1

    # cat=higher education package: Basic/110/; type=string; label= Logo Filepath
    filePath = EXT:higher_education_package/Resources/Public/Images/Logos/higher_education_package-logo.svg

    # cat=higher education package: Basic/110/; type=string; label= Logo alternative Filepath (used for open main-menu)
    alternativeFilePath = EXT:higher_education_package/Resources/Public/Images/Logos/higher_education_package-logo-bw.svg

    # cat=higher education package: Basic/110/; type=int+; label= Logo minWidth
    minWidth = 275

    # cat=higher education package: Basic/110/; type=string; label= Logo Link Title
    title = Higher Education Package

    # cat=higher education package: Basic/110/; type=string; label= Logo Alt Title
    alt = Higher Education Package
}
Copied!

Changed page logo constants 

plugin.tx_highereducationpackage {
    logo {
        # cat=higher education package: Basic/110/; type=int+; label= Logo Link PageUid
        pageUid = 1

        # cat=higher education package: Basic/110/; type=string; label= Logo Filepath
        filePath = EXT:higher_education_package/Resources/Public/Images/Logos/higher_education_package-logo.svg

        # cat=higher education package: Basic/110/; type=string; label= Logo alternative Filepath (used for open main-menu)
        alternativeFilePath = EXT:higher_education_package/Resources/Public/Images/Logos/higher_education_package-logo-bw.svg

        # cat=higher education package: Basic/110/; type=int+; label= Logo minWidth
        minWidth = 275

        # cat=higher education package: Basic/110/; type=string; label= Logo Link Title
        title = Higher Education Package

        # cat=higher education package: Basic/110/; type=string; label= Logo Alt Title
        alt = Higher Education Package
    }
}
Copied!

Setup 

Old page logo setup 

logo {
    pageUid = TEXT
    pageUid.value = {$logo.pageUid}

    title = TEXT
    title.value = {$logo.title}

    alt = TEXT
    alt.value = {$logo.alt}

    file = TEXT
    file.value = {$logo.filePath}

    file-alternative = TEXT
    file-alternative.value = {$logo.alternativeFilePath}

    minWidth = TEXT
    minWidth.value = {$logo.minWidth}
}
Copied!

Changed page logo setup 

plugin.tx_highereducationpackage {
    logo {
        pageUid = TEXT
        pageUid.value = {$plugin.tx_highereducationpackage.logo.pageUid}

        title = TEXT
        title.value = {$plugin.tx_highereducationpackage.logo.title}

        alt = TEXT
        alt.value = {$plugin.tx_highereducationpackage.logo.alt}

        file = TEXT
        file.value = {$plugin.tx_highereducationpackage.logo.filePath}

        file-alternative = TEXT
        file-alternative.value = {$plugin.tx_highereducationpackage.logo.alternativeFilePath}

        minWidth = TEXT
        minWidth.value = {$plugin.tx_highereducationpackage.logo.minWidth}
    }
}
Copied!

Breaking: #3 - Change main navigation constants and setup typoscript paths 

See https://jira.typo3.com/browse/THEP-174

Description 

We decided to group all settings of the main navigation to get a nicer overview of all constants and the setup given in the higher education package.

The default main navigation settings of the higher education package are defined in EXT:higher_education_package/Condiguration/TypoScript/Constants/main-navigation.typoscript and EXT:higher_education_package/Condiguration/TypoScript/Setup/main-navigation.typoscript

Constants 

Old main navigation constants 

plugin.tx_highereducationpackage {
    settings {
        # cat=higher education package: navigation/115/MainNavigation; type=options[Twist=twist,Paternoster=paternoster,Curtain=curtain]; label=Set animation for main navigation
        mainNavAnimation = twist

        # cat=higher education package: navigation/115/MainNavigation; type=int+; label=Set target uid for main navigation
        mainNavStartpointUid = 2
    }
}
Copied!

Changed main navigation constants 

plugin.tx_highereducationpackage {
    main-navigation {
        # cat=higher education package: navigation/115/MainNavigation; type=options[Twist=twist,Paternoster=paternoster,Curtain=curtain]; label=Set animation for main navigation
        animation = twist

        # cat=higher education package: navigation/115/MainNavigation; type=int+; label=Set target uid for main navigation
        startpointUid = 2
    }
}
Copied!

Setup 

Old main navigation setup 

lib.mainNav {
    ## get the animation style for main navigation
    animation = TEXT
    animation.value = {$plugin.tx_highereducationpackage.settings.mainNavAnimation}

    ## get backgroundimage for main navigation
    image = IMG_RESOURCE
    image {
        file {
            import.data = levelfield:-1, menu_image, slide
            treatIdAsReference = 1
            import.listNum = 0
        }
    }
}
Copied!

Changed main navigation setup 

plugin.tx_highereducationpackage {
    main-navigation {
        ## get the animation style for main navigation
        animation = TEXT
        animation.value = {$plugin.tx_highereducationpackage.main-navigation.animation}

        ## get backgroundimage for main navigation
        image = IMG_RESOURCE
        image {
            file {
                import.data = levelfield:-1, menu_image, slide
                treatIdAsReference = 1
                import.listNum = 0
            }
        }
    }
}
Copied!

Changed main navigation startingPoint assignment in page menu processor 

Old assignment in file EXT:higher_education_package/Configuration/TypoScript/Setup/page.typoscript

page.10.dataProcessing.10.special.value = {$plugin.tx_highereducationpackage.settings.mainNavStartpointUid}
Copied!

New assignment

page.10.dataProcessing.10.special.value = {$plugin.tx_highereducationpackage.main-navigation.startpointUid}
Copied!

Changed main navigation fluid partial 

Updated main navigation animation and image cObject setup assignment in fluid partial EXT:higher_education_package/Resources/Private/Partials/Page/MainNav.html

Breaking: #4 - Change content elements basic constants and setup typoscript paths 

See https://jira.typo3.com/browse/THEP-174

Description 

We decided to group all settings of the content elements to get a nicer overview of all constants and the setup given in the higher education package.

The default content elements settings of the higher education package are defined in EXT:higher_education_package/Condiguration/TypoScript/Constants/contentelements.typoscript and EXT:higher_education_package/Condiguration/TypoScript/Setup/contentelements.typoscript

Constants 

Old content elements constants 

plugin.higher_education_package_contentelements {
    view {
        # cat=higher education package: content/130/layoutRootPath; type=string; label=Layout Root Path: Path to layouts
        layoutRootPath = EXT:higher_education_package/Resources/Private/Layouts/ContentElements/
        # cat=higher education package: content/130/partialRootPath; type=string; label=Partial Root Path: Path to partials
        partialRootPath = EXT:higher_education_package/Resources/Private/Partials/ContentElements/
        # cat=higher education package: content/130/templateRootPath; type=string; label=Template Root Path: Path to templates
        templateRootPath = EXT:higher_education_package/Resources/Private/Templates/ContentElements/
    }

    header {
        # cat=higher education package: content/132/defaultHeaderType; type=int[1-4]; label=Default Header type: Enter the number of the header layout to be used by default
        defaultHeaderType = 2
    }

    textpic {
        # cat=higher education package: content/133/imageProportion; type=options[33%=4,50%=6]; label=Default Textpic image proportion
        imageProportion = 4

        # cat=higher education package: content/133/imageMaxWidth; type=int; label=Max width of image in text
        imageMaxWidth = 500
    }

    image {
        # cat=higher education package: content/134/imageMaxWidth; type=int; label=Max width of image element (gallery)
        imageMaxWidth = 1600

        #$lg breakpoint width (992px) to guarantee nice image rendering
        tabletImageMaxWidth = 992

        #$sm breakpoint width (576px) to guarantee nice image rendering
        mobileImageMaxWidth = 576
    }

    imagezoom {
        # cat=higher education package: content/131/lightbox1; type=string; label= Click-enlarge Media Width: This specifies the width of the enlarged media element when click-enlarge is enabled
        linkWrap.width = 1280m
        # cat=higher education package: content/131/lightbox2; type=string; label= Click-enlarge Media Height: This specifies the height of the enlarged media element when click-enlarge is enabled
        linkWrap.height = 1024m
        # cat=/131/lightbox3; type=boolean; label= Lightbox click-enlarge rendering: Whether media elements with click-enlarge checked should be rendered lightbox-compliant
        linkWrap.lightboxEnabled = 0
        # cat=/131/lightbox4; type=string; label= Lightbox CSS class: Which CSS class to use for lightbox links (only applicable if lightbox rendering is enabled)
        linkWrap.lightboxCssClass = lightbox
        # cat=/131/lightbox5; type=string; label= Lightbox data-lightbox="" attribute: Which data-lightbox="" attribute to use for lightbox links (only applicable if lightbox rendering is enabled)
        linkWrap.lightboxRelAttribute = lightbox[{field:uid}]
    }
}
Copied!

Changed content elements constants 

plugin.tx_highereducationpackage {
    contentelements {
        view {
            # cat=higher education package: content/130/layoutRootPath; type=string; label=Layout Root Path: Path to layouts
            layoutRootPath = EXT:higher_education_package/Resources/Private/Layouts/ContentElements/
            # cat=higher education package: content/130/partialRootPath; type=string; label=Partial Root Path: Path to partials
            partialRootPath = EXT:higher_education_package/Resources/Private/Partials/ContentElements/
            # cat=higher education package: content/130/templateRootPath; type=string; label=Template Root Path: Path to templates
            templateRootPath = EXT:higher_education_package/Resources/Private/Templates/ContentElements/
        }

        header {
            # cat=higher education package: content/132/defaultHeaderType; type=int[1-4]; label=Default Header type: Enter the number of the header layout to be used by default
            defaultHeaderType = 2
        }

        textpic {
            # cat=higher education package: content/133/imageProportion; type=options[33%=4,50%=6]; label=Default Textpic image proportion
            imageProportion = 4

            # cat=higher education package: content/133/imageMaxWidth; type=int; label=Max width of image in text
            imageMaxWidth = 500
        }

        image {
            # cat=higher education package: content/134/imageMaxWidth; type=int; label=Max width of image element (gallery)
            imageMaxWidth = 1600

            #$lg breakpoint width (992px) to guarantee nice image rendering
            tabletImageMaxWidth = 992

            #$sm breakpoint width (576px) to guarantee nice image rendering
            mobileImageMaxWidth = 576
        }

        imagezoom {
            # cat=higher education package: content/131/lightbox1; type=string; label= Click-enlarge Media Width: This specifies the width of the enlarged media element when click-enlarge is enabled
            linkWrap.width = 1280m
            # cat=higher education package: content/131/lightbox2; type=string; label= Click-enlarge Media Height: This specifies the height of the enlarged media element when click-enlarge is enabled
            linkWrap.height = 1024m
            # cat=/131/lightbox3; type=boolean; label= Lightbox click-enlarge rendering: Whether media elements with click-enlarge checked should be rendered lightbox-compliant
            linkWrap.lightboxEnabled = 0
            # cat=/131/lightbox4; type=string; label= Lightbox CSS class: Which CSS class to use for lightbox links (only applicable if lightbox rendering is enabled)
            linkWrap.lightboxCssClass = lightbox
            # cat=/131/lightbox5; type=string; label= Lightbox data-lightbox="" attribute: Which data-lightbox="" attribute to use for lightbox links (only applicable if lightbox rendering is enabled)
            linkWrap.lightboxRelAttribute = lightbox[{field:uid}]
        }
    }
}
Copied!

Setup 

Old content elements setup 

lib.contentElement = FLUIDTEMPLATE
lib.contentElement {
    ################
    ### TEMPLATE ###
    ################
    templateName = Default
    templateRootPaths {
        5 = EXT:higher_education_package/Resources/Private/Templates/ContentElements/
        10 = {$plugin.higher_education_package_contentelements.view.templateRootPath}
    }

    partialRootPaths {
        5 = EXT:higher_education_package/Resources/Private/Partials/ContentElements/
        10 = {$plugin.higher_education_package_contentelements.view.partialRootPath}
    }

    layoutRootPaths {
        5 = EXT:higher_education_package/Resources/Private/Layouts/ContentElements/
        10 = {$plugin.higher_education_package_contentelements.view.layoutRootPath}
    }

    ################
    ### SETTINGS ###
    ################
    settings {
        header {
            defaultHeaderType = {$plugin.higher_education_package_contentelements.header.defaultHeaderType}
        }
        media {
            popup {
                bodyTag = <body style="margin:0; background:#fff;">
                wrap = <a href="javascript:close();"> | </a>
                width = {$plugin.higher_education_package_contentelements.imagezoom.linkWrap.width}
                height = {$plugin.higher_education_package_contentelements.imagezoom.linkWrap.height}
                crop.data = file:current:crop
                JSwindow = 1
                JSwindow {
                    newWindow = {$plugin.higher_education_package_contentelements.imagezoom.linkWrap.newWindow}
                    if.isFalse = {$plugin.higher_education_package_contentelements.imagezoom.linkWrap.lightboxEnabled}
                }
                directImageLink = {$plugin.higher_education_package_contentelements.imagezoom.linkWrap.lightboxEnabled}
                linkParams.ATagParams.dataWrap =  class="{$plugin.higher_education_package_contentelements.imagezoom.linkWrap.lightboxCssClass}" rel="{$styles.content.textmedia.linkWrap.lightboxRelAttribute}"
            }
        }
    }
}
Copied!

Changed content elements setup 

plugin.tx_highereducationpackage {
    contentelements = FLUIDTEMPLATE
    contentelements {
        ################
        ### TEMPLATE ###
        ################
        templateName = Default
        templateRootPaths {
            5 = EXT:higher_education_package/Resources/Private/Templates/ContentElements/
            10 = {$plugin.tx_highereducationpackage.contentelements.view.templateRootPath}
        }

        partialRootPaths {
            5 = EXT:higher_education_package/Resources/Private/Partials/ContentElements/
            10 = {$plugin.tx_highereducationpackage.contentelements.view.partialRootPath}
        }

        layoutRootPaths {
            5 = EXT:higher_education_package/Resources/Private/Layouts/ContentElements/
            10 = {$plugin.tx_highereducationpackage.contentelements.view.layoutRootPath}
        }

        ################
        ### SETTINGS ###
        ################
        settings {
            header {
                defaultHeaderType = {$plugin.tx_highereducationpackage.contentelements.header.defaultHeaderType}
            }
            media {
                popup {
                    bodyTag = <body style="margin:0; background:#fff;">
                    wrap = <a href="javascript:close();"> | </a>
                    width = {$plugin.tx_highereducationpackage.contentelements.imagezoom.linkWrap.width}
                    height = {$plugin.tx_highereducationpackage.contentelements.imagezoom.linkWrap.height}
                    crop.data = file:current:crop
                    JSwindow = 1
                    JSwindow {
                        newWindow = {$plugin.tx_highereducationpackage.contentelements.imagezoom.linkWrap.newWindow}
                        if.isFalse = {$plugin.tx_highereducationpackage.contentelements.imagezoom.linkWrap.lightboxEnabled}
                    }
                    directImageLink = {$plugin.tx_highereducationpackage.contentelements.imagezoom.linkWrap.lightboxEnabled}
                    linkParams.ATagParams.dataWrap =  class="{$plugin.tx_highereducationpackage.contentelements.imagezoom.linkWrap.lightboxCssClass}" rel="{$styles.content.textmedia.linkWrap.lightboxRelAttribute}"
                }
            }
        }
    }
}
Copied!