User firendly category selector in post options in Silverstripe cms

46 Views Asked by At

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?

1

There are 1 best solutions below

1
Guy Sartorelli On BEST ANSWER

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.