There is one more function that is required even if you’re not going to use it. I didn’t include it hence the error.
It the last one I added, named getThemeAreaLayoutPresets.
I left stuff in it so you can see what it does and how it works.
<?php
namespace Application\Theme\Snf2024;
use Concrete\Core\Page\Theme\Theme;
use Concrete\Core\Area\Layout\Preset\Provider\ThemeProviderInterface;
class PageTheme extends Theme implements ThemeProviderInterface
{
protected $pThemeGridFrameworkHandle = 'bootstrap5';
public function getThemeName()
{
return t('SNF 2024');
}
public function getThemeDescription()
{
return t('Theme description comes here');
}
public function getThemeEditorClasses()
{
return [
['title' => t('Title Thin'), 'menuClass' => 'title-thin', 'spanClass' => 'title-thin', 'forceBlock' => 1],
['title' => t('Title Caps Bold'), 'menuClass' => 'title-caps-bold', 'spanClass' => 'title-caps-bold', 'forceBlock' => 1],
['title' => t('Title Caps'), 'menuClass' => 'title-caps', 'spanClass' => 'title-caps', 'forceBlock' => 1],
['title' => t('Image Caption'), 'menuClass' => 'image-caption', 'spanClass' => 'image-caption', 'forceBlock' => '-1'],
['title' => t('Standard Button'), 'menuClass' => '', 'spanClass' => 'btn btn-default', 'forceBlock' => '-1'],
['title' => t('Success Button'), 'menuClass' => '', 'spanClass' => 'btn btn-success', 'forceBlock' => '-1'],
['title' => t('Primary Button'), 'menuClass' => '', 'spanClass' => 'btn btn-primary', 'forceBlock' => '-1'],
];
}
/**
* @return array
*/
public function getThemeAreaLayoutPresets()
{
$presets = [
[
'handle' => 'left_sidebar',
'name' => 'Left Sidebar',
'container' => '<div class="row"></div>',
'columns' => [
'<div class="col-sm-4"></div>',
'<div class="col-sm-8"></div>',
],
],
[
'handle' => 'right_sidebar',
'name' => 'Right Sidebar',
'container' => '<div class="row"></div>',
'columns' => [
'<div class="col-sm-8"></div>',
'<div class="col-sm-4"></div>',
],
],
];
return $presets;
}
}