Custom theme layout

Re: Custom theme layout

by Jer Brand -
Number of replies: 3

This is probably a silly suggestion, but: 

Could you find a layout that's extremely basic/empty and build up from there? If that didn't remove enough elements, it might be worth including a custom page layout, like $PAGE->set_pagelayout("my-plugin-layout"), even though it should ignore your invalid layout and default to base. You could then use the class for your plugin pages (pagelayout-my-plugin-layout) then remove elements you don't want with CSS.

It's not really answering the question (I don't see a way to register a one-off layout either), but do you think it might work in your situation?

In reply to Jer Brand

Re: Custom theme layout

by Gareth J Barnard -
Picture of Core developers Picture of Particularly helpful Moodlers Picture of Plugin developers

Pragmatically you can't define new layouts unless you're using a theme and even then that can cause issues.  What is wrong with the existing layouts that have no block areas and fill the page where the plugin can orchestrate the content area as it wishes?

In reply to Gareth J Barnard

Re: Custom theme layout

by Conn Warwicker -
Picture of Core developers Picture of Plugin developers

Hi,

I've been through all the available layout options:

base, standard, course, coursecategory, incourse, frontpage, admin, mydashboard, mypublic, login, popup, frametop, embedded, maintenance, print, redirect, report, secure


And none of them have what I want, which is:

- Header

- Footer

- No blocks


I basically want a standard moodle page with the header/footer/breadcrumb navigation, but no blocks and no content, so I can put whatever I want there. I used to be able to use the login layout for that, but not any more.


If there was a functionality within a plugin to append more layouts to the $THEME->layouts array, with the relevant file path and options, I could define the layout how I want, which is:


{{!
This file is part of Moodle - http://moodle.org/

Moodle is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

Moodle is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Moodle. If not, see <http://www.gnu.org/licenses/>;.
}}
{{!
@template block_elbp/elbp
ELBP custom layout template.
}}
{{> theme_boost/head }}

<body {{{ bodyattributes }}}>

<div id="page-wrapper">

{{{ output.standard_top_of_body_html }}}
{{> theme_boost/navbar }}

<div id="page" class="container-fluid">
{{{ output.full_header }}}
<div id="page-content" class="row pb-3">
<div id="region-main-box" class="col-12">
<section id="region-main">
{{{ output.course_content_header }}}
{{{ output.main_content }}}
{{{ output.activity_navigation }}}
{{{ output.course_content_footer }}}
</section>
</div>
</div>
</div>

{{> theme_boost/footer }}

</div>
{{{ output.standard_end_of_body_html }}}
</body>
</html>
{{#js}}
require(['theme_boost/loader']);
{{/js}}

In reply to Jer Brand

Re: Custom theme layout

by Conn Warwicker -
Picture of Core developers Picture of Plugin developers

Hi,

it might do, though it's quite hacky so would probably have to be a last resort if I can't find a better solution.