Per-Group and Per-Page Customizations in config.php
config.php
rather than in separate PHP scripts.Questions answered by this recipe
How can I do per-group and per-page local customizations in config.php
rather than the normal way using GroupName.php
and GroupName.PageName.php
.
Description
You can do per-group and per-page local customizations in config.php
.
This can make keeping track of customizations easier because all local configuration happens
in one file rather than several files.
You probably will want to place the Group- or page-specific customizations
at the end (bottom) of your config.php
local configuration file.
If you do it in a farmconfig.php
file, the lines should probably
come after "@include_once('local/config.php');
" so they
will not interfere with other local customizations.
Getting the group and page name
First, you need to make sure the page name is resolved and optionally you can set variables to hold the group and/or page name(s).
$pagename = ResolvePageName($pagename); $group = PageVar($pagename, '$Group'); $name = PageVar($pagename, '$Name');
Customization for a group
Now you can do customization for a group.
if ($group == 'SpecialGroup') { ## Your customization here }
Don't execute that cookbook for that Group :
if ($group != 'SpecialGroup') { include_once("$FarmD/cookbook/recipe.php"); }
Customization for a page
You can do customization for a page by page name (that is, customize all pages with a certain name that may exist in any group).
if ($name == 'Test') { ## Your customization here }
You can also do fancier name-matching, of course. Here is an example that affects all pages, in any group, that have names that end in "-Talk":
if (preg_match('/-Talk$/', $name)) { ## Your customization here }
Customization for a single page
If you want your customization to affect only one page, it's done with
=>if ($pagename == 'Main.WikiSandbox') { ## Your customization here }
CSS Customizations
It's probably best to use /pub/css/GroupName.css
to do per-group CSS
styling, but you can also do it in ''config.php;'. Here, we make one group have
a light-blue background color in the content area:
if ($group == 'SpecialGroup') { $HTMLStylesFmt['specialgroupbg'] = " #wikibody { background-color:#f7f7ff; } "; }
Notes
Comments
See Also
Contributors
User notes? : If you use, used or reviewed this recipe, you can add your name. These statistics appear in the Cookbook listings and will help newcomers browsing through the wiki.