- Details
- Category: Layouting
Since Sermonspeaker 4.3, custom layouts are supported. This article will explain how you can create your own layout and share it with other users.
Some basics about Joomlas "MVC" system
Joomla uses a system named "MVC" (Model, View, Controller) for their code. In easy words that means that the script for a single page is divided into multiple small files of code. One of this file is the controller, which will be responsible for every possible task. Like uploading a file, or displaying a page. You can ignore the controller completely, SermonSpeaker takes care of this. In case the browser requests a page to display, the controller will call the view. In our case this views are located in /components/com_sermonspeaker/views/. If you have a look at the structure of SermonSpeaker you will notice the various subfolders there
- Details
- Category: Layouting
When you created your first own layouts, you may have noticed some helper functions. I want to explain those a bit here:
SermonspeakerHelperPlayer
The most important helper function is the player helper. It will take care of the Flash player for you creating all the needed javascript and html calls. The code is located in
/components/com_sermonspeaker/helpers/player.phpThe easiest call is to just use
$player = SermonspeakerHelperSermonspeaker->getPlayer($this->items);
This will create a "$player" object containing all the needed code.
- Details
- Category: Layouting
In this article I will try to collect some nice tricks I stumbled about while coding SermonSpeaker
Loading modules into a layout
Sometimes you like to show a module only on specific pages and maybe even in the content itself. There are multiple ways to achieve this:
- Restrict the module to only show on specific menu items
- Use {loadposition xx} in a editor field
- Use an extension like Modules Anywhere or Advanced Module Manager to only name two
- Add a custom module position to a layout:
While usually the site template is responsible for the various module positions, a component can add such positions to its own output as well. The code to do this can be put into any layout file like this:
<?php jimport('joomla.application.module.helper');
$modules = JModuleHelper::getModules('sermonspeaker');
foreach($modules as $module):
echo JModuleHelper::renderModule($module);
endforeach; ?>
This will load all modules set to the position "sermonspeaker" and render their output. The position can of course be named like you want.
To apply a specific chrome to the module, you can add a parameter array to the renderModule() function:
echo JModuleHelper::renderModule($module, array('style'=>'chrome-name'));
The available chromes depend on the active template. Read more about module chromes in the official Joomla docs.
Alternative Layouts
Joomla has some layout tricks implemented itself. One thing is that you can override each layout in your template, another thing is that you can actually create alternative layouts at the same place. It's kind of the same thing we do in SermonSpeaker, but in the template. There is a nice tutorial about this on magazine.joomla.org.