Sitepackage stuff not loading after upgrade to 4.0


(Daniel Bischoff) #1

Hey! :wave:

I mirrored the database and files in another subdomain, everything worked and looked fine.

So I started the upgrade as described here.
No error-messages anywhere BUT its not loading anything from (by example)

<f:section name="stylesheets">
 [...]
<link rel="stylesheet" href="{f:uri.resource(path: 'Styles/main.min.css', package: 'hkm.schulcloud')}" />
[...]
</f:section>

So i have all the content from NEOS CMS, but all Styles, metadata and scripts are missing.

As you can see here, Ressources i used in the backend are loading, but the files I define in /Templates/Page/Default.hml are missing.

Did I miss something in the upgrade-process?

screenshot of actual page


(Soren Malling) #2

Did you change the domain name in the domain record (Site Management) since you moved to a new subdomain ?


(Daniel Bischoff) #3

Yes, I did


(Karsten Dambekalns) #4

What is in the generated HTML? Nothing or some unparsed Fluid or …?


(Daniel Bischoff) #5

Nothing. Just the output i showed in the screenshot. Everything else is missing. :disappointed_relieved:


(David Sporer) #6

I had that when my Fusion files still had the file extension .ts2 instead of .fusion.
Might be only stupid me but maybe another one also stumbles accross this :wink:


(Daniel Bischoff) #7

Thank you, but it is ( my first, but ) a brand new project, so my root.fusion is a .fusion file… :frowning_face:


(Daniel Bischoff) #8

After exporting the package and import it in a fresh Neos 4.0 installation, i have the same issue. So there is something wrong with my package, but i dont know what and where to look first…


(Soren Malling) #9

Is the site package public avaiable somewhere for us to see?


(Bastian Heist) #10

Might be related to the document rendering refactoring in 4.0.
Do you have any Fusion prototypes which have the same name as your document nodetypes?


(Daniel Bischoff) #11

i read the changes again and found one error but it leads to the next one :sweat:

i had to change
page = Neos.Neos:Page {

to

prototype(Neos.NodeTypes:Page) < prototype(Neos.Neos:Page) {

right?

Because i had a prototype(Neos.NodeTypes:Page) already i merged it, but i’m using a condition for formBuilderStyles.
I’m having two forms and for each form i need a different js-file in <head>.

An exception was thrown while Neos tried to render your page
Catchable Fatal Error: Object of class Neos\Fusion\FusionObjects\Helpers\FusionPathProxy could not be converted to string in /html/neos-schulcloud-mirror/Data/Temporary/Development/Cache/Code/Fluid_TemplateCache/Frontend_Node_action_show_8110cb6b3bf52dc6546969f42df1ef85c1fe5eeb.php line 909

rootNeos.Fusion:Case/
documentTypeNeos.Fusion:Matcher/
elementNeos.NodeTypes:Page/
bodyNeos.Fusion:Template/

For a full stacktrace, open Data/Logs/Exceptions/20180612090733a3e211.txt

full stacktrace here
Exception #1 in line 909 of /html/neos-schulcloud-mirror/Data/Temporary/Development/Cache/Code/Fluid_TemplateCache/Frontend_Node_action_show_8110cb6b3bf52dc6546969f42df1ef85c1fe5eeb.php: Catchable Fatal Error: Object of class Neos\Fusion\FusionObjects\Helpers\FusionPathProxy could not be converted to string in /html/neos-schulcloud-mirror/Data/Temporary/Development/Cache/Code/Fluid_TemplateCache/Frontend_Node_action_show_8110cb6b3bf52dc6546969f42df1ef85c1fe5eeb.php line 909

33 Neos\Flow\Error\ErrorHandler::handleError(4096, "Object of class Neos\Fusion\FusionObjects\Helpers\FusionPathProxy could not be converted to string", "/html/neos-schulcloud-mirror/Data/Temporary/Develo…_show_8110cb6b3bf52dc6546969f42df1ef85c1fe5eeb.php", 909, array|5|)
32 Frontend_Node_action_show_8110cb6b3bf52dc6546969f42df1ef85c1fe5eeb::section_02083f4579e08a612425c0c1a17ee47add783b94(Neos\FluidAdaptor\Core\Rendering\RenderingContext)
31 TYPO3Fluid\Fluid\View\AbstractTemplateView::renderSection("body", array|7|, FALSE)
30 Neos\FluidAdaptor\View\AbstractTemplateView::renderSection("body")
29 Neos\Fusion\FusionObjects\TemplateImplementation_Original::evaluate()
28 Neos\Fusion\Core\Runtime_Original::evaluateObjectOrRetrieveFromCache(Neos\Fusion\FusionObjects\TemplateImplementation, "root<Neos.Fusion:Case>/documentType<Neos.Fusion:Matcher>/element<Neos.NodeTypes:Page>/body", array|11|, array|5|)
27 Neos\Fusion\Core\Runtime_Original::evaluateInternal("root<Neos.Fusion:Case>/documentType<Neos.Fusion:Matcher>/element<Neos.NodeTypes:Page>/body", "NULL", Neos\Fusion\FusionObjects\ArrayImplementation)
26 Neos\Fusion\Core\Runtime_Original::evaluate("root<Neos.Fusion:Case>/documentType<Neos.Fusion:Matcher>/element<Neos.NodeTypes:Page>/body", Neos\Fusion\FusionObjects\ArrayImplementation)
25 Neos\Fusion\FusionObjects\AbstractFusionObject::fusionValue("body")
24 Neos\Fusion\FusionObjects\ArrayImplementation_Original::evaluate()
23 Neos\Fusion\Core\Runtime_Original::evaluateObjectOrRetrieveFromCache(Neos\Fusion\FusionObjects\ArrayImplementation, "root<Neos.Fusion:Case>/documentType<Neos.Fusion:Matcher>/element<Neos.NodeTypes:Page>", array|23|, array|6|)
22 Neos\Fusion\Core\Runtime_Original::evaluateInternal("root<Neos.Fusion:Case>/documentType<Neos.Fusion:Matcher>/element<Neos.NodeTypes:Page>", "Exception")
21 Neos\Fusion\Core\Runtime_Original::render("root<Neos.Fusion:Case>/documentType<Neos.Fusion:Matcher>/element<Neos.NodeTypes:Page>")
20 Neos\Fusion\FusionObjects\RendererImplementation_Original::evaluate()
19 Neos\Fusion\FusionObjects\MatcherImplementation_Original::evaluate()
18 Neos\Fusion\Core\Runtime_Original::evaluateObjectOrRetrieveFromCache(Neos\Fusion\FusionObjects\MatcherImplementation, "root<Neos.Fusion:Case>/documentType<Neos.Fusion:Matcher>", array|4|, array|5|)
17 Neos\Fusion\Core\Runtime_Original::evaluateInternal("root<Neos.Fusion:Case>/documentType<Neos.Fusion:Matcher>", "Exception")
16 Neos\Fusion\Core\Runtime_Original::render("root<Neos.Fusion:Case>/documentType<Neos.Fusion:Matcher>")
15 Neos\Fusion\FusionObjects\CaseImplementation_Original::renderMatcher("documentType")
14 Neos\Fusion\FusionObjects\CaseImplementation_Original::evaluate()
13 Neos\Fusion\Core\Runtime_Original::evaluateObjectOrRetrieveFromCache(Neos\Fusion\FusionObjects\CaseImplementation, "root", array|13|, array|6|)
12 Neos\Fusion\Core\Runtime_Original::evaluateInternal("root", "Exception")
11 Neos\Fusion\Core\Runtime_Original::render("root")
10 Neos\Neos\View\FusionView_Original::render()
9 Neos\Flow\Mvc\Controller\ActionController_Original::callActionMethod()
8 Neos\Flow\Mvc\Controller\ActionController_Original::processRequest(Neos\Flow\Mvc\ActionRequest, Neos\Flow\Http\Response)
7 Neos\Flow\Mvc\Dispatcher_Original::initiateDispatchLoop(Neos\Flow\Mvc\ActionRequest, Neos\Flow\Http\Response)
6 Neos\Flow\Mvc\Dispatcher_Original::dispatch(Neos\Flow\Mvc\ActionRequest, Neos\Flow\Http\Response)
5 Neos\Flow\Mvc\DispatchComponent_Original::handle(Neos\Flow\Http\Component\ComponentContext)
4 Neos\Flow\Http\Component\ComponentChain_Original::handle(Neos\Flow\Http\Component\ComponentContext)
3 Neos\Flow\Http\Component\ComponentChain_Original::handle(Neos\Flow\Http\Component\ComponentContext)
2 Neos\Flow\Http\RequestHandler::handleRequest()
1 Neos\Flow\Core\Bootstrap::run()


HTTP REQUEST:
GET / HTTP/1.1
Host: test.schul.cloud
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
Accept-Encoding: gzip, deflate, br
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.183 Safari/537.36 Vivaldi/1.96.1147.42
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0



HTTP RESPONSE:
[response was empty]

PHP PROCESS:
Inode: 23930737
PID: 19176
UID: 1576387
GID: 100
User: p347117

    [array] => 

Did there change something to with conditions? Here is my full root.fusion:

prototype(Neos.NodeTypes:Page) < prototype(Neos.Neos:Page) {
	head {
		metadata = Neos.Fusion:Template {
			templatePath = 'resource://hkm.schulcloud/Private/Templates/Page/Default.html'
			sectionName = 'metadata'

			title = ${q(node).property('title')}
			description = ${q(node).property('description')}
        }
		stylesheets.site = Neos.Fusion:Template {
			templatePath = 'resource://hkm.schulcloud/Private/Templates/Page/Default.html'
			sectionName = 'stylesheets'
		}
		javascripts.site = Neos.Fusion:Template {
			templatePath = 'resource://hkm.schulcloud/Private/Templates/Page/Default.html'
			sectionName = 'headScripts'
		}
		// titleTag = null

		formBuilderStyles = Neos.Fusion:Tag {
			tagName = 'script'
			attributes {
				src = Neos.Fusion:ResourceUri {
					path = Neos.Fusion:Case {
						if = Neos.Fusion:Matcher {
							condition = ${q(node).property('uriPathSegment') == 'aktivierung'}
							renderer = 'resource://hkm.schulcloud/Public/JavaScript/t.min.js'
						}
						elseif = Neos.Fusion:Matcher {
							condition = ${q(node).property('uriPathSegment') == 'registrieren'}
							renderer = 'resource://hkm.schulcloud/Public/JavaScript/reg.min.js'
						}
					}
				}
			}
			@if.isInBackend = ${!documentNode.context.inBackend}
			@position = 'end'
		}
	}

	bodyTag {
		attributes.class = ${q(node).property('title')}
	}
	body {
		templatePath = 'resource://hkm.schulcloud/Private/Templates/Page/Default.html'
		sectionName = 'body'
		parts {
			menu = Neos.Neos:Menu {
				templatePath = 'resource://hkm.schulcloud/Private/Templates/FusionObjects/navimain.html'
				// attributes {
				// 	class = 'uk-navbar-nav'
				// }
			}

			metaMenu = Menu
			metaMenu {
				entryLevel = 2
				templatePath = 'resource://hkm.schulcloud/Private/Templates/FusionObjects/navihead.html'
				maximumLevels = 2
				uikiticon = ${q(node).property('uikiticon')}
				startingPoint = ${q(site).children('[uriPathSegment="headnavi"]').get(0)}
			}

			footerMenu = Menu
			footerMenu {
				entryLevel = 2
				templatePath = 'resource://hkm.schulcloud/Private/Templates/FusionObjects/navifooter.html'
				maximumLevels = 2
				startingPoint = ${q(site).children('[uriPathSegment="footernavi"]').get(0)}
			}
			title = ${q(node).property('title')}
		}




		// These are your content areas, you can define as many as you want, just name them and the nodePath.
		content {
			// The default content section
			main = Neos.Neos:PrimaryContent {
				nodePath = 'main'
			}
		}

		javascripts.site = Neos.Fusion:Template {
			templatePath = 'resource://hkm.schulcloud/Private/Templates/Page/Default.html'
			sectionName = 'bodyScripts'
		}
	}
}

prototype(Neos.NodeTypes:Text) {
	@process.wrapWithContainer = ${'<div class="uk-section uk-section-small uk-section-default"><div class="uk-container">' + value + '</div></div>'}
}
prototype(Neos.NodeTypes:Html) {
	templatePath = 'resource://hkm.schulcloud/Private/Templates/FusionObjects/Html.html'
}
prototype(Neos.NodeTypes:ContentReferences) {
	templatePath = 'resource://hkm.schulcloud/Private/Templates/FusionObjects/ContentReferences.html'
}
prototype(Neos.NodeTypes:MultiColumn) {
	attributes {
		class = 'uk-child-width-expand@m'
		uk-grid = ''
	}
	isGrey = ${q(node).property('isGrey') ? 'isgrey' : ''}
	secondColumnOrange = ${q(node).property('layout') == 'color' ? true : false}
	
	columns.iterationName = 'multiColumnIteration'

	# do not add padding to text-element in columns
	prototype(Neos.NodeTypes:Text) {
		@process.wrapWithContainer = ${value}
	}
}
prototype(Neos.NodeTypes.ColumnLayouts:MultiColumn) {
	templatePath = 'resource://hkm.schulcloud/Private/Templates/FusionObjects/MultiColumn.html'
	headerRenderer = hkm:MultiLineHeader
	header0 = ${q(node).children('header0').get(0)}
}
prototype(Neos.NodeTypes:MultiColumnItem) {
	// attributes.class = ${q(node).parent().property('layout') +  ' ' }
	// attributes.class = 'uk-section uk-section-small uk-section-default'
	// attributes.class.@if.cond1 = ${q(node).parent().property('layout') == 'orange'}

	attributes.class = Neos.Fusion:Case {
		if = Neos.Fusion:Matcher {
			condition = ${q(node).parent().property('layout') == 'color'}
			renderer = 'uk-section uk-section-small uk-section-default'
		}
	}

}

prototype(hkm:MultiLineHeader) < prototype(Neos.Neos:Content) {
        templatePath = 'resource://hkm.schulcloud/Private/Templates/FusionObjects/MultiLineHeader.html'

        headline = ${q(node).property('headline')}
		// image = ${q(node).property('image')}

		logoUri = Neos.Neos:ImageUri {
				asset = ${q(node).property('image')}
				// width = 100
				// height = 100
				// allowCropping = TRUE
				// allowUpScaling = TRUE
		}
		// attributes.class = ${q(node).property('layout')}
		attributes.class = Neos.Fusion:RawArray {
			layout = ${q(node).property('layout')}
			hasBG = ${q(node).property('image') ? 'hasBackgroundimage' : false}
		}
		attributes.id = ${q(node).property('id')}
		// attributes.style = ${"background-image: url(" + logoUri + ")"}
		
}

prototype(Shel.Blog:BlogEntry) < prototype(Content) {
	templatePath = 'resource://hkm.schulcloud/Private/Templates/Plugins/BlogEntry.html'
	attributes.class = 'blog-entry uk-article'

	imageSettings = Neos.Fusion:RawArray {
        // class = 'blog-entry-image'
		class = ${q(node).property('entryImage').height < q(node).property('entryImage').width ? 'horizontal blog-entry-image' : 'vertikal blog-entry-image'}
        width = 800
        height = 800
        cropping = false
        upScaling = false
    }
	summary.@process {
        stripTags = ${String.stripTags(value)}
        crop = ${String.crop(value, 600, '…')}
    }

	prototype(Neos.NodeTypes:Text) {
		@process.wrapWithContainer = ${'' + value + ''}
	}


}
prototype(Shel.Blog:BlogFeed) < prototype(Content) {
	templatePath = 'resource://hkm.schulcloud/Private/Templates/Plugins/BlogFeed.html'
}
prototype(Shel.Blog:BlogFeedEntry) < prototype(Shel.Blog:BlogEntry) {
    templatePath = ${'resource://hkm.schulcloud/Private/Templates/Plugins/BlogFeedEntry.html'}
}

prototype(Gerdemann.ReCAPTCHA:ReCAPTCHA.Definition) < prototype(Neos.Form.Builder:FormElement.Definition) {
	formElementType = 'Gerdemann.ReCAPTCHA:ReCAPTCHA'
}

prototype(hkm.schulcloud:Slider) {
        carouselItems = Neos.Neos:ContentCollection {
			nodePath = 'carouselItems'
			content.iterationName = 'carouselItemsIteration'
			attributes.class = 'uk-slider-items'
			tagName = 'ul'
        }

		// attributes.class = "uk-section uk-section-small uk-section-default"
		sliderid = ${q(node).property('_name')}
        // Collect the carousels children but only images
        // carouselItemArray = ${q(node).children('carouselItems').children('[instanceof Neos.NodeTypes:Image]')}
		carouselItemArray = ${q(node).children('carouselItems').children('[instanceof Neos.NodeTypes:TextWithImage]')}

        // Enhance image prototype when inside the carousel
        prototype(Neos.NodeTypes:TextWithImage) {
                // Render images in the carousel with a special template.
                templatePath = 'resource://hkm.schulcloud/Private/Templates/NodeTypes/SliderItem.html'
 
                // The first item should later be marked as active
                attributes.class = 'uk-section'

				imageClassName = ${ 'uk-align-' + q(node).property('alignment') }

                // We want to use the item iterator in fluid so we have to store it as variable.
                iteration = ${carouselItemsIteration}
        }
}

prototype(Neos.NodeTypes:TextWithImage) {
	// attributes.class = "uk-container uk-child-width-1-2 uk-flex uk-flex-between uk-flex-middle"
	// attributes.class = "uk-child-width-expand@m neos-nodetypes-twocolumn uk-grid"
	attributes.class = ${q(node).property('alignment') == 'above' ? 'uk-child-width-1-1 neos-nodetypes-twocolumn uk-grid' : 'uk-child-width-expand@m neos-nodetypes-twocolumn uk-grid' }
	
	attributes.uk-grid = ""
}

prototype(hkm.schulcloud:FormHTML.Definition) < prototype(Neos.Form.Builder:FormElement.Definition) {
	formElementType = 'hkm.schulcloud:FormHTML'
}

(Daniel Bischoff) #12

After another fresh installation of Neos 4.0 and kickstarting a fresh Sitepackage i compared the new configuration and fusion forders and adopted(?) the changes to my mirror of my live-page like

prototype(hkm.schulcloud:DefaultPage) < prototype(Neos.Neos:Page) {
	head {
		stylesheets.site = Neos.Fusion:Template {
			templatePath = 'resource://hkm.schulcloud/Private/Templates/Page/Default.html'
			sectionName = 'stylesheets'
		}
		javascripts.site = Neos.Fusion:Template {
			templatePath = 'resource://hkm.schulcloud/Private/Templates/Page/Default.html'
			sectionName = 'headScripts'

			currentTitle = ${q(node).property('title')}
		}    		
	}

bodyTag {
	attributes.class = ${q(node).property('title')}
}
body {
	templatePath = 'resource://hkm.schulcloud/Private/Templates/Page/Default.html'
	sectionName = 'body'
	parts {
		menu = Neos.Neos:Menu {
			templatePath = 'resource://hkm.schulcloud/Private/Templates/FusionObjects/navimain.html'
			// attributes {
			// 	class = 'uk-navbar-nav'
			// }
		}

		metaMenu = Menu
		metaMenu {
			entryLevel = 2
			templatePath = 'resource://hkm.schulcloud/Private/Templates/FusionObjects/navihead.html'
			maximumLevels = 2
			uikiticon = ${q(node).property('uikiticon')}
			startingPoint = ${q(site).children('[uriPathSegment="headnavi"]').get(0)}
		}

		footerMenu = Menu
		footerMenu {
			entryLevel = 2
			templatePath = 'resource://hkm.schulcloud/Private/Templates/FusionObjects/navifooter.html'
			maximumLevels = 2
			startingPoint = ${q(site).children('[uriPathSegment="footernavi"]').get(0)}
		}
		title = ${q(node).property('title')}
	}

	javascripts.site = Neos.Fusion:Template {
		templatePath = 'resource://hkm.schulcloud/Private/Templates/Page/Default.html'
		sectionName = 'bodyScripts'
	}
}
}

And my Default.html remained the same like

<!DOCTYPE html>
{namespace neos=Neos\Neos\ViewHelpers}
{namespace fusion=Neos\Fusion\ViewHelpers}
<html>
<head>
	<f:section name="metadata">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<meta name="theme-color" content="#555555">
		<meta name="seobility" content="53a6fb279a6b84f67fe2613092db0510">
		<link rel="apple-touch-icon-precomposed" sizes="57x57" href="{f:uri.resource(path: 'Images/favicons/apple-touch-icon-57x57.png', package: 'hkm.schulcloud')}" />
        <link rel="apple-touch-icon-precomposed" sizes="114x114" href="{f:uri.resource(path: 'Images/favicons/apple-touch-icon-114x114.png', package: 'hkm.schulcloud')}" />
        <link rel="apple-touch-icon-precomposed" sizes="72x72" href="{f:uri.resource(path: 'Images/favicons/apple-touch-icon-72x72.png', package: 'hkm.schulcloud')}" />
        <link rel="apple-touch-icon-precomposed" sizes="144x144" href="{f:uri.resource(path: 'Images/favicons/apple-touch-icon-144x144.png', package: 'hkm.schulcloud')}" />
        <link rel="apple-touch-icon-precomposed" sizes="60x60" href="{f:uri.resource(path: 'Images/favicons/apple-touch-icon-60x60.png', package: 'hkm.schulcloud')}" />
        <link rel="apple-touch-icon-precomposed" sizes="120x120" href="{f:uri.resource(path: 'Images/favicons/apple-touch-icon-120x120.png', package: 'hkm.schulcloud')}" />
        <link rel="apple-touch-icon-precomposed" sizes="76x76" href="{f:uri.resource(path: 'Images/favicons/apple-touch-icon-76x76.png', package: 'hkm.schulcloud')}" />
        <link rel="apple-touch-icon-precomposed" sizes="152x152" href="{f:uri.resource(path: 'Images/favicons/apple-touch-icon-152x152.png', package: 'hkm.schulcloud')}" />
        <link rel="icon" type="image/png" href="{f:uri.resource(path: 'Images/favicons/favicon-196x196.png', package: 'hkm.schulcloud')}" sizes="196x196" />
        <link rel="icon" type="image/png" href="{f:uri.resource(path: 'Images/favicons/favicon-96x96.png', package: 'hkm.schulcloud')}" sizes="96x96" />
        <link rel="icon" type="image/png" href="{f:uri.resource(path: 'Images/favicons/favicon-32x32.png', package: 'hkm.schulcloud')}" sizes="32x32" />
        <link rel="icon" type="image/png" href="{f:uri.resource(path: 'Images/favicons/favicon-16x16.png', package: 'hkm.schulcloud')}" sizes="16x16" />
        <link rel="icon" type="image/png" href="{f:uri.resource(path: 'Images/favicons/favicon-128.png', package: 'hkm.schulcloud')}" sizes="128x128" />
        <meta name="application-name" content="Kostenloser Messenger mit Dateiablage für Schüler und Lehrer."/>
        <meta name="msapplication-TileColor" content="#555555" />
        <meta name="msapplication-TileImage" content="{f:uri.resource(path: 'Images/favicons/mstile-144x144.png', package: 'hkm.schulcloud')}" />
        <meta name="msapplication-square70x70logo" content="{f:uri.resource(path: 'Images/favicons/mstile-70x70.png', package: 'hkm.schulcloud')}" />
        <meta name="msapplication-square150x150logo" content="{f:uri.resource(path: 'Images/favicons/mstile-150x150.png', package: 'hkm.schulcloud')}" />
        <meta name="msapplication-wide310x150logo" content="{f:uri.resource(path: 'Images/favicons/mstile-310x150.png', package: 'hkm.schulcloud')}" />
        <meta name="msapplication-square310x310logo" content="{f:uri.resource(path: 'Images/favicons/mstile-310x310.png', package: 'hkm.schulcloud')}" />

	</f:section>
	<f:section name="stylesheets">
		<!-- Put your stylesheet inclusions here, they will be included in your website by Fusion -->
		<link rel="stylesheet" href="{f:uri.resource(path: 'Styles/uikit.min.css')}" />
		<link rel="stylesheet" href="{f:uri.resource(path: 'Styles/style_purged.css')}" />
		<link rel="stylesheet" href="{f:uri.resource(path: 'Styles/responsive.min.css')}" />
	</f:section>
	<f:section name="headScripts">
		<!-- Put your scripts inclusions for the head here, they will be included in your website by Fusion -->
		<script src="{f:uri.resource(path: 'JavaScript/uikit.min.js', package: 'hkm.schulcloud')}" ></script>
		<script src="{f:uri.resource(path: 'JavaScript/uikit-icons.min.js', package: 'hkm.schulcloud')}" ></script>


		<f:if condition="{currentTitle} == 'Registrieren' || {currentTitle} == 'Aktivierung'">
			<f:then>
				<!-- wird bei den Formularen benötigt -->
				<script src="https://www.google.com/recaptcha/api.js" async defer></script>
				<!-- Minified version of `es6-promise-auto` below. -->
				<script src="https://cdn.jsdelivr.net/npm/es6-promise@4/dist/es6-promise.min.js"></script>
				<script src="https://cdn.jsdelivr.net/npm/es6-promise@4/dist/es6-promise.auto.min.js"></script> 
				<script src="{f:uri.resource(path: 'JavaScript/fetch.min.js', package: 'hkm.schulcloud')}"></script>
			</f:then>
		</f:if>

	</f:section>
</head>
<body>
<f:section name="body">
<div class="uk-offcanvas-content">
	<section id="head" class="uk-padding-small uk-child-width-1-2@s" uk-grid>
		<div class="uk-padding-small" uk-grid>
			<p class=""><span class="" uk-icon="receiver"></span> +49 (0) 511 - 67 51 90</p>
			<p class=""><span class="" uk-icon="mail"></span> <a href="mailto:hello@schul.cloud" title="Sag hallo!">hello@schul.cloud</a></p>
		</div>
		<div class="uk-text-right">
			<nav>
				<ul class="headernav">
					{parts.metaMenu -> f:format.raw()}
					<!-- <li><span uk-icon="search"></span> Suchen</li> -->
				</ul>
			</nav>
		</div>
	</section>

		

	<div id="offcanvas-nav-primary" uk-offcanvas="mode: push;overlay: true;flip: true">
		<div class="uk-offcanvas-bar uk-flex uk-flex-column">
			<div id="offcanvas-header">
				<p class="uk-text-right">
					<a href="#offcanvas-nav-primary" class="uk-offcanvas-close" uk-close></a>
				</p>
			</div>
			<ul class="uk-nav uk-nav-primary uk-nav-left uk-margin-auto-vertical uk-parent">
			<f:if condition="{parts.title} == 'schul.cloud'">
					<f:then>
						<li class="main uk-active">
					</f:then>
					<f:else>
						<li class="main">
					</f:else>
				</f:if>
					<a href="/">schul.cloud </a>
				</li>
				{parts.menu -> f:format.raw()}
				{parts.metaMenu -> f:format.raw()}
			</ul>
		</div>
	</div>


	<section id="navwrapper" uk-sticky="sel-target: .uk-navbar-container; cls-active: uk-navbar-sticky;">
		<nav class="uk-container uk-navbar-container" uk-navbar role="navigation">
			<div class="uk-navbar-left">
				<ul class="uk-navbar-nav">
					<li class="navlogo">
						<f:if condition="{parts.title} == 'schul.cloud'">
							<f:then>
								<a href="/" class="uk-navbar-item uk-logo uk-active">
							</f:then>
							<f:else>
								<a href="/" class="uk-navbar-item uk-logo">
							</f:else>
						</f:if>
							<span>schul.<strong>cloud</strong></span>
						</a>
					</li>
					{parts.menu -> f:format.raw()}
					<li class="willToggle">
						<a class="uk-navbar-toggle" href="#offcanvas-nav-primary" uk-toggle>
							<span class="uk-margin-small-right">MENÜ</span> <span uk-navbar-toggle-icon></span>
						</a>
					</li>
				</ul>
			</div>
		</nav>
	</section>

	<div id="content" class="content">
		{content.main -> f:format.raw()}
	</div>



	<footer id="footer" class="uk-section uk-section-small uk-section-secondary uk-light">
		<div class="uk-container">
			<div class="uk-child-width-1-3@m" uk-grid>
				<div class="uk-flex vcard">
                    <a href="https://heinekingmedia.de/" class="uk-margin-small-right uk-width-1-2" target="_blank" title="Die heinekingmedia GmbH mit Sitz in Hannover bietet spannende Produkte rund um das Thema digitale Kommunikation in Unternehmen, Öffentlichen Institutionen, Behörden und Bildungseinrichtungen" height="100" style="max-width: 30%;">
                        <img src="{f:uri.resource(path: 'Images/heinekingmedia-footer.svg', package: 'hkm.schulcloud')}" class="photo" style="width: 100%;height:auto;" />
                    </a>
					<p style="margin:0;"><span class="uk-margin-small-right" uk-icon="receiver"></span>	<span class="tel">+49 (0) 511 - 67 51 90</span><br />
						<span class="uk-margin-small-right" uk-icon="mail"></span> <a class="email" href="mailto:hello@schul.cloud">hello@schul.cloud</a><br />
						<br />
						<span class="fn" style="display: none"></span>
						<span class="org">heinekingmedia GmbH</span><br />
						<span class="adr">
							<span class="street-address">Hamburger Allee 2 - 4</span><br />
							<span class="postal-code">30161</span> <span class="locality">Hannover</span>
						</span>
						<br />
					</p>
				</div>
				<div>
					{parts.footerMenu -> f:format.raw()}
				</div>
				<div>
					<p>schul.cloud ist eine Kooperation von <a href="https://www.projektnetschool.de/" title="netschool® bietet Schulen und anderen Bildungseinrichtungen angepasste Lösungen für effektive digitale Kommunikation - bekannt durch Produkte wie Digitales Schwarzes Brett®, Digitale Tafel und die schul.cloud">netschool®</a> (einer Marke der heinekingmedia GmbH) und <a href="https://untis.de/" title="Untis ist Markführer für Stundenplan- und Vertretungsplan-Software und ein Kooperationspartner der heinekingmedia GmbH">Untis</a>.</p>
				</div>
			</div>
			<p style="text-align: center;">
				<a href="https://stashcat.com/nimes" target="_blank" title="mehr Informationen über stashcat">
					So sicher, dass es auch die Polizei erlaubt! Mehr zum Polizeimessenger
				</a>
			</p>
		</div>
	</footer>

</div>
</f:section>

<f:section name="bodyScripts">
	<!-- Put your scripts inclusions for the end of the body here, they will be included in your website by Fusion -->

	<script>
		if(document.getElementById('sticky')) {
			let scrollpos = window.scrollY
			const sticky = document.getElementById('sticky')
			const windowheight = window.innerHeight / 2;
			const add_class_on_scroll = () => sticky.classList.add("isSticky")
			const remove_class_on_scroll = () => sticky.classList.remove("isSticky")
			window.addEventListener('scroll', function() { 
				scrollpos = window.scrollY;
				if (scrollpos >= windowheight) { add_class_on_scroll() }
				else { remove_class_on_scroll() }
			})
		}
	</script>
</f:section>
</body>
</html>

But it does not change the behavior of not loading the stylesheets or any other section. It just renders the body. :sweat: