I have areas of a template which are the same for all page types (i.e. quicklinks) so I have used includes. Is there a way I can make these includes editeble in the CMS or is there another way to do this?
We've moved the forum!
Please use forum.silverstripe.org for any new questions
(announcement).
The forum archive will stick around, but will be read only.
You can also use our Slack channel
or StackOverflow to ask for help.
Check out our community overview for more options to contribute.
Well lots of ways people talk about editing global fields / settings, the way I prefer to do it is to make a HTMLText field on your HomePage page type (most of the time you will have a custom homepagetype, if not then just put it on page)
mysite/code/HomePage.php
static $db = array('QuickLinks' => 'HTMLText');
function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.Content.Main', new HTMLEditorField('QuickLinks'));
return $fields;
}
After running dev/build/ and reloading the CMS you should have a HTML Editor in the CMS under the homepage for quicklinks. Then you just need to update your template so that it does
<% control Page(home) %>
$QuickLinks
<% end_control %>
That will give you the QuickLinks field on the Home Page and away you go. Other way people do it is create custom page types for the 'Site Settings' and store the field on there.
I already know how to do it this way, but it could be confusing for the client editing the homepage which will also effect the other pages.
Doing it the "site settings" way, would it matter what is in that template, as long as I have the includes ($QuickLinks)? i.e. no divs etc.
I have made a tutorial on doing this using the PageType method (i.e. creating a pagetype called 'Quicklinks' etc.), see:
http://www.ssbits.com/create-a-static-sidebar/
Hope that helps :)