Undefined variable $pageTitle in concrete 9.1.2

Hi,
I ve updated my concrete5 from 8.5.2 over 8.5.9 to 9.1.2 successfully. All runs fine.

Now I switched the php version from 7.4 to 8.0.23.

If I reload the cms I got an error-page with the main topic:
Undefined variable $pageTitle

in packages/theme_palette/themes/palette/inc/header.php
in line 18

15     :
16    <head>
17        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
18        <?php Loader::element('header_required', array('pageTitle' => $pageTitle));?>
19     :

Has anybody an idea, what I can do?

Here is the stack trace

30 Whoops\Exception\ErrorException
/var/www/vhosts/<my-domain>/httpdocs/packages/theme_palette/themes/palette/inc/header.php18
29
Whoops\Run handleError
/var/www/vhosts/<my-domain>/httpdocs/packages/theme_palette/themes/palette/inc/header.php18
28
include
…/src/View/View.php125
27
Concrete\Core\View\View inc
/var/www/vhosts/<my-domain>/httpdocs/packages/theme_palette/themes/palette/default.php3
26
include
…/src/View/View.php125
25
Concrete\Core\View\View inc
/var/www/vhosts/<my-domain>/httpdocs/packages/theme_palette/themes/palette/full.php3
24
include
…/src/View/View.php329
23
Concrete\Core\View\View renderTemplate
…/src/View/View.php291
22
Concrete\Core\View\View renderViewContents
…/src/View/AbstractView.php164
21
Concrete\Core\View\AbstractView render
…/src/Http/ResponseFactory.php148
20
Concrete\Core\Http\ResponseFactory view
…/src/Http/ResponseFactory.php215
19
Concrete\Core\Http\ResponseFactory controller
…/src/Http/ResponseFactory.php367
18
Concrete\Core\Http\ResponseFactory collection
…/src/Http/DefaultDispatcher.php132
17
Concrete\Core\Http\DefaultDispatcher handleDispatch
…/src/Http/DefaultDispatcher.php60
16
Concrete\Core\Http\DefaultDispatcher dispatch
…/src/Http/Middleware/DispatcherDelegate.php39
15
Concrete\Core\Http\Middleware\DispatcherDelegate next
…/src/Http/Middleware/FrameOptionsMiddleware.php39
14
Concrete\Core\Http\Middleware\FrameOptionsMiddleware process
…/src/Http/Middleware/MiddlewareDelegate.php50
13
Concrete\Core\Http\Middleware\MiddlewareDelegate next
…/src/Http/Middleware/StrictTransportSecurityMiddleware.php36
12
Concrete\Core\Http\Middleware\StrictTransportSecurityMiddleware process
…/src/Http/Middleware/MiddlewareDelegate.php50
11
Concrete\Core\Http\Middleware\MiddlewareDelegate next
…/src/Http/Middleware/ContentSecurityPolicyMiddleware.php36
10
Concrete\Core\Http\Middleware\ContentSecurityPolicyMiddleware process
…/src/Http/Middleware/MiddlewareDelegate.php50
9
Concrete\Core\Http\Middleware\MiddlewareDelegate next
…/src/Http/Middleware/CookieMiddleware.php35
8
Concrete\Core\Http\Middleware\CookieMiddleware process
…/src/Http/Middleware/MiddlewareDelegate.php50
7
Concrete\Core\Http\Middleware\MiddlewareDelegate next
…/src/Http/Middleware/ApplicationMiddleware.php29
6
Concrete\Core\Http\Middleware\ApplicationMiddleware process
…/src/Http/Middleware/MiddlewareDelegate.php50
5
Concrete\Core\Http\Middleware\MiddlewareDelegate next
…/src/Http/Middleware/MiddlewareStack.php86
4
Concrete\Core\Http\Middleware\MiddlewareStack process
…/src/Http/DefaultServer.php85
3
Concrete\Core\Http\DefaultServer handleRequest
…/src/Foundation/Runtime/Run/DefaultRunner.php125
2
Concrete\Core\Foundation\Runtime\Run\DefaultRunner run
…/src/Foundation/Runtime/DefaultRuntime.php102
1
Concrete\Core\Foundation\Runtime\DefaultRuntime run
…/dispatcher.php45
0
require
 /var/www/vhosts/<my-domain>/httpdocs/index.php3 

That will be because your theme code needs to be updated for php8.

Generally, the really nasty difference between php7 and php8 is

  • in php7, anything that is not defined defaults to empty/null/false
  • in php8, anything that is not defined causes an error.

Some code tricks. Which you use depends on whether what follows needs to distinguish between all the values that are equivalent to false.

if(!isset($var_that_could_be_undefined)){
   $var_that_could_be_undefined = 'any_default_value';
}

$var_that_could_be_undefined ??  'any_default_value';

if(empty($var_that_could_be_undefined)){
   $var_that_could_be_undefined = 'any_default_value';
}

Oh the theme! :roll_eyes: Yes, thats it! It is not version 9 compatible … I hope the maintainer rocks this in the next time :slight_smile:
Thanks for the tips