silverstripe-framework/docs/en/02_Developer_Guides/04_Configuration/01_SiteConfig.md
Aaron Carlino 6888901468
NEW: Update docs to be compliant with Gatsby site (#9314)
* First cut

* Temporarily disable composer.json for netlify build

* POC

* New recursive directory query, various refinements

* Fix flexbox

* new styled components plugin

* Apply frontmatter delimiters

* Mobile styles, animation

* Search

* Redesign, clean up

* Nuke the cache, try again

* fix file casing

* Remove production env file

* ID headers

* Move app to new repo

* Add frontmatter universally

* Hide children changelogs

* Add how to title

* New callout tags

* Revert inline code block change

* Replace note callouts

* Fix icons

* Repalce images

* Fix icon

* Fix image links

* Use proper SQL icon
2019-11-18 17:58:33 +13:00

2.2 KiB

title summary icon
SiteConfig Content author configuration through the SiteConfig module. laptop-code

SiteConfig

The SiteConfig module provides a generic interface for managing site-wide settings or functionality which is used throughout the site. Out of the box, this includes setting the site name and site-wide access.

Accessing variables

SiteConfig options can be accessed from any template by using the $SiteConfig variable.

$SiteConfig.Title 
$SiteConfig.Tagline

<% with $SiteConfig %>
    $Title $AnotherField
<% end_with %>

To access variables in the PHP:

use Silverstripe\SiteConfig\SiteConfig;

$config = SiteConfig::current_site_config(); 

echo $config->Title;

// returns "Website Name"

Extending SiteConfig

To extend the options available in the panel, define your own fields via a DataExtension.

app/code/extensions/CustomSiteConfig.php

use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\HTMLEditor\HTMLEditorField;
use SilverStripe\ORM\DataExtension;

class CustomSiteConfig extends DataExtension 
{
    
    private static $db = [
        'FooterContent' => 'HTMLText'
    ];

    public function updateCMSFields(FieldList $fields) 
    {
        $fields->addFieldToTab("Root.Main", 
            new HTMLEditorField("FooterContent", "Footer Content")
        );
    }
}

Then activate the extension.

app/_config/app.yml

Silverstripe\SiteConfig\SiteConfig:
  extensions:
    - CustomSiteConfig

[notice] After adding the class and the YAML change, make sure to rebuild your database by visiting http://example.com/dev/build. You may also need to reload the screen with a ?flush=1 i.e http://example.com/admin/settings?flush=1. [/notice]

You can define as many extensions for SiteConfig as you need. For example, if you're developing a module and want to provide the users a place to configure settings then the SiteConfig panel is the place to go it.

API Documentation