I would like to change the behaviour of the select box for selecting Post categories within the Post Options in Silverstripe cms. Currently I can find and select the categories only if I know them beforehand. That is the when I enter a letter it starts to populate the select box with the categories that contain that letter. I would like to populate the select box with all categories by default. And still maintain multi select option. Has this option been considered yet or should I develop my custom category selector?
It sounds like you're specifically referring to the silverstripe/blog module.
The categories field is a TagField
from the silverstripe/tagfield module. In the BlogPost
class, the field is set to lazy load:
https://github.com/silverstripe/silverstripe-blog/blob/0f8aefb0920812f4f9cc03bba5a0ed4b7b6df205/src/Model/BlogPost.php#L350
You can override that in your project by applying an extension to BlogPost
and turn lazyloading off for that field:
app/_config/extensions.yml
SilverStripe\Blog\Model\BlogPost:
extensions:
- App\Extension\BlogPostExtension
app/src/Extension/BlogPostExtension.php
<?php
namespace App\Extension;
use SilverStripe\Core\Extension;
use SilverStripe\Forms\FieldList;
class BlogPostExtension extends Extension
{
public function updateCMSFields(FieldList $fields)
{
$fields->dataFieldByName('Categories')->setShouldLazyLoad(false);
}
}
You might want to do the same for the Tags
field while you're at it.