Configuration 

This extension ships its frontend TypoScript and its backend page TSconfig in two forms: as TYPO3 site sets, and as classic static templates plus page TSconfig files that are selected on a page. Both forms read the very same files, so they configure an installation identically.

Pick one of them per site and stay with it — see Do not combine both for what happens otherwise.

What the sets contain 

This extension ships three content elements, so it ships three component sets and one aggregate set that depends on all of them.

All three are driven by one Extbase plugin, so they share one TypoScript block, plugin.tx_academicjobs . That block is shipped once, in Configuration/TypoScript/, and every component includes it. Which component sets a site names therefore decides which content elements the backend offers, not how much TypoScript is loaded.

Set Delivers
fgtclb/academic-jobs-new-job-form The Job Form content element, the frontend form a job offer is entered with.
fgtclb/academic-jobs-list The Job List content element.
fgtclb/academic-jobs-detail The Job Details content element.
fgtclb/academic-jobs Everything above. This is the set to use unless you deliberately want a subset, and it is the name this extension published before the sets were cut per component — a site configuration that depends on it needs no change.

Every component set depends on fgtclb/academic-base-ctype-group, the set of EXT:academic_base that labels the content element group all academic extensions sort their elements into.

The site settings of this extension are declared with the aggregate set: the storage, detail, list and redirect pages, the notification e-mail, the job avatar upload, the content element header switch and the page links of the list pagination. A site that depends on a single component set still gets the shipped defaults, but can only override them in Site Settings when it depends on fgtclb/academic-jobs.

The content elements are hidden by default 

EXT:academic_jobs hides all three of its content elements for the whole installation and brings them back per component. Whichever of the two mechanisms below you use, it is what makes an element selectable in the backend again — without one of them the content element is not offered, and existing records keep rendering.

Include the site set 

Add the set to the config.yaml of the site that should offer the content elements:

config/sites/my-site/config.yaml (diff)
 base: 'https://example.com/'
 rootPageId: 1
+dependencies:
+  - fgtclb/academic-jobs
Copied!

See also TYPO3 Explained, Using a site set as dependency in a site.

Include static templates 

For an installation that still configures its frontend through sys_template records, the same files are registered as static templates and as selectable page TSconfig files.

Include static TypoScript 

Edit the sys_template record of the site root and add the entry to Include static (from extensions):

Entry Delivers
Academic Jobs: Jobs New (academic_jobs) The TypoScript of the Job Form content element.
Academic Jobs: Jobs List (academic_jobs) The TypoScript of the Job List content element.
Academic Jobs: Jobs Detail (academic_jobs) The TypoScript of the Job Details content element.
Academic Jobs: All components (academic_jobs) Every component this extension ships, in one entry.
Academic Jobs: Shared plugin settings (academic_jobs) The shared plugin.tx_academicjobs block on its own. This is the entry an installation stored before the configuration was cut per component, and it keeps working — but it does not make any content element selectable, which the page TSconfig below does.

Include static page TSconfig 

Edit the page record of the site root, tab Resources, field Page TSconfig, and add the entry:

Entry Delivers
Academic Jobs: Jobs New (academic_jobs) Makes the Job Form content element selectable, and configures its entry in the new content element wizard.
Academic Jobs: Jobs List (academic_jobs) The same for Job List.
Academic Jobs: Jobs Detail (academic_jobs) The same for Job Details.
Academic Jobs: All components (academic_jobs) Every component this extension ships, in one entry.

The setting is inherited by every page below the one it is set on.

Pagination of the job list 

The Job List content element can split its jobs into pages. Whether it does, and how many jobs a page holds, is set on each content element, tab Pagination:

Field Default Meaning
Enable pagination off Off, the list renders every job of its job type.
Results per page 10 The number of jobs on one page.

How many page numbers the navigation links at once is one value for the whole site:

Site setting and constant Default Meaning
plugin.tx_academicjobs.pagination.numberOfLinks 5 The most page numbers the navigation links around the current page. Read with georgringer/numbered-pagination only. Without it, the core pagination links every page.

The site setting is declared by the aggregate set fgtclb/academic-jobs, like every other setting of this extension. A site configured through static templates sets the constant instead.

Load the script or bring your own 

The Jobs New content element loads two scripts on the page that carries it: CKEditor 4 from its content delivery network, and the module @fgtclb/academic-jobs/frontend/rich-text.js , which turns the description fields of the form into rich text editors. No other content element of this extension loads a script.

Both are switched off together, per site, for an installation that brings its own editor or wants none:

Site setting and constant Default Off means
plugin.tx_academicjobs.assets.js true The page loads neither the editor nor the module.

With the site set, it is a site setting of fgtclb/academic-jobs, like every other setting of this extension:

config/sites/my-site/settings.yaml
plugin.tx_academicjobs.assets.js: false
Copied!

With the static template, it is the TypoScript constant of the same name:

Constants of the root sys_template record
plugin.tx_academicjobs.assets.js = 0
Copied!

The form keeps working without the scripts. The description fields are plain text areas, marked with the class ace-ckeditor , and a visitor submits the text as it is. A script of your own finds the fields by that class.

A project that overrides Templates/Job/New.html keeps whatever its copy loads, until it wraps its own <f:asset.script> and <f:asset.module> in <f:if condition="{settings.assets.js}"> .

Do not combine both 

A site that uses the site set and the static template reads the shipped files twice. The site set is applied before the sys_template record, so the second read happens after the site settings and after config/sites/<site>/constants.typoscript — and it resets every constant the extension ships a default for back to that default. For this extension that is the whole plugin.tx_academicjobs constants block: the Fluid root paths, the storage and target page ids, the notification e-mail, the job avatar upload settings, the content element header switch and the script switch, among others.

Nothing else is damaged: the Constants and Setup fields of the sys_template record, the page TSconfig of a page and the page TSconfig files selected on a page are all applied afterwards and still win. Use one mechanism per site and the question does not arise.