Contexts
Last edited by Everett Griffiths on Sep 18, 2013.
Contexts allow MODx configuration settings to be overridden, extended, isolated, or shared across domains, sub-domains, sub-sites, multi-sites, cultural-specific sections, specific web applications, etc.
You can easily create a context from the Contexts menu under Tools. The context will then show up in your resource tree. Resources can easily be dragged between contexts to move them from one context to another.
Creating a Context
First, go to the Contexts page, via System -> Contexts. Then, click on "Create New" in the grid. This will prompt you for a key and description. From there, right-click on your newly-created context, and click "Update Context".
This will bring you to a screen displaying the Context, and an empty grid of settings. From here you can add Context-specific settings that will override any System Settings. Your new context will be completely empty, requiring you to include any and all settings you will be using.
Note that new contexts don't automatically get "load" permission for Anonymous users in 2.2+ - you'll need to add that in manually.
Context Settings
You can create settings for any defined context by clicking on System -> Contexts, then right-click any context and select "Update Context".
Each context can have its own settings that override or extend the System Settings. Contextual settings can in turn be overridden or extended by User Settings. The hierarchy to remember is this:
System Setting -> Context Setting -> User Setting
Retrieving Context Settings
Retrieving a Context Setting is no different than retrieving any other System Setting -- in fact, you may not be aware that a given setting is being set at the System or Context (or at the User) level.
In a template or Chunk:
[[++my_context_setting]]
Programmatically in a Snippet:
$setting = $modx->getOption('my_context_setting');
See Also
- Creating a Subdomain from a Folder using Virtual Hosts
- Using One Gateway Plugin to Manage Multiple Domains
Suggest an edit to this page on GitHub (Requires GitHub account. Opens a new window/tab).