General developer forum

Custom theme layout

 
Picture of Jer Brand
Re: Custom theme layout
 

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?

 
Average of ratings: -
Gareth J Barnard
Re: Custom theme layout
Core developersParticularly helpful MoodlersPlugin 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?

 
Average of ratings: -
Picture of Conn Warwicker
Re: Custom theme layout
Core developersParticularly helpful MoodlersPlugin 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}}

 
Average of ratings: -
Picture of Conn Warwicker
Re: Custom theme layout
Core developersParticularly helpful MoodlersPlugin 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.

 
Average of ratings: -