silverstripe-framework/docs/en/reference/siteconfig.md
Ingo Schommer 0b31234810 Consolidated template and page-type docs
- Removed duplicated content from page-type-templates (was more or less a variation of the content in templates.md)
- Removed built-in page-controls, which was a bit of a dumping ground for unconnected topics.
  Moved the majority to page-type-templates
- Removed all recipes from "sitetree" docs, since they were outdated or hacky (like grouping of records, or implementing custom *children() method on subclasses)
- Added pagination, escaping, base_tag, CurrentMember to template docs
- Removed default_parent docs from SiteTree, as this setting doesn't have any effect looking at core
2012-06-27 16:09:32 +02:00

70 lines
1.8 KiB
Markdown

# SiteConfig: Global database content
## Introduction
The `[api:SiteConfig]` panel provides a generic interface for managing site wide settings or
functionality which is used throughout the site. Out of the box it provides 2 fields 'Site Name' and 'Site Tagline'.
## Accessing `[api:SiteConfig]` Options
You can access `[api:SiteConfig]` options from any SS template by using the function $SiteConfig.FieldName
:::ss
$SiteConfig.Title
$SiteConfig.Tagline
// or
<% loop SiteConfig %>
$Title $AnotherField
<% end_loop %>
Or if you want to access variables in the PHP you can do
:::php
$config = SiteConfig::current_site_config();
$config->Title
## Extending `[api:SiteConfig]`
To extend the options available in the panel you can define your own fields via an Extension.
Create a mysite/code/CustomSiteConfig.php file.
:::php
<?php
class CustomSiteConfig extends DataExtension {
public function extraStatics() {
return array(
'db' => array(
'FooterContent' => 'HTMLText'
)
);
}
public function updateCMSFields(FieldList $fields) {
$fields->addFieldToTab("Root.Main", new HTMLEditorField("FooterContent", "Footer Content"));
}
}
Then add a link to your extension in the _config.php file like below.
Object::add_extension('SiteConfig', 'CustomSiteConfig');
This tells SilverStripe to add the CustomSiteConfig extension to the `[api:SiteConfig]` class.
After adding those two pieces of code, rebuild your database by visiting http://yoursite.com/dev/build and then reload
the admin interface. You may need to reload it with a ?flush=1 on the end.
You can define as many extensions for `[api:SiteConfig]` as you need. For example if you are developing a module you can define
your own global settings for the dashboard.
## API Documentation
`[api:SiteConfig]`