Axlis.Customizations · Shipped · v0.1.0

The out-of-the-box TreeList field can't filter by query.

Sitecore's standard TreeList field lets an editor pick items from a fixed Datasource path — fine until content authors need the picker scoped to items matching a query, or restricted to specific templates. That's a customization every non-trivial Sitecore project ends up writing for itself, usually as one-off code buried in a Foundation layer with no test coverage and no path to reuse across projects.

Axlis.Customizations is a home for exactly that category of Sitecore Shell control customization — generalized, documented, and versioned per Sitecore release, starting with QueryableTreeList.

$ dotnet add package Axlis.Customizations.Controls.Sitecore102

What's in it

QueryableTreeList, and a home for what comes next.

One Sitecore-version-gated package today, built to hold more customizations as they come up.

Query-based data sources

A query:-prefixed source resolves through LookupSources.GetItems against the current content database, instead of a single fixed path.

Template include/exclude filters

IncludeTemplatesForDisplay and IncludeTemplatesForSelection layer template-level scoping on top of the resolved data source.

Out-of-scope warning

Items outside the resolved data-source scope render with a [Not in selection list] header warning in the Content Editor, instead of failing silently.

Sitecore-version-gated by design

Shipped as Axlis.Customizations.Controls.Sitecore102, built against Sitecore.Kernel/Sitecore.Web [10.2.0,10.3.0). A future Sitecore line ships as a sibling package, not a wider version range on this one.

Introducing it into an existing project

Three steps to a working field type.

No serialized Sitecore item ships in the package — Axlis is consumed across projects with different serialization tooling (TDS, Unicorn, Sitecore CLI), so the Field Type item is yours to place wherever fits your tree.

  1. 1 Add the Sitecore NuGet feed, then install Axlis.Customizations.Controls.Sitecore102.
  2. 2 Copy the package's config-include template into App_Config/Include/ and drop the .template suffix.
  3. 3 Create a Field Type item under /sitecore/system/Field types pointing at Axlis.Customizations.Controls.Sitecore102 / Axlis.Customizations.Controls.QueryableTreeList, control Axlis:QueryableTreeList.
zzz.Axlis.Customizations.QueryableTreeList.config
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <controlSources>
      <source
        mode="on"
        namespace="Axlis.Customizations.Controls"
        assembly="Axlis.Customizations.Controls.Sitecore102"
        prefix="Axlis" />
    </controlSources>
  </sitecore>
</configuration>

Before you rely on it

Verification & common questions.

How do I verify it's actually working?

Install into a real Sitecore 10.2.x instance with the config include and Field Type item in place, then confirm the control renders in the Content Editor, a query:-prefixed source resolves correctly against a real query, and the [Not in selection list] warning appears for an item outside the resolved data source. There's no Sitecore FakeDb in this toolchain, so this is a manual check, per release.

Why doesn't the package ship a serialized Sitecore item?

Axlis is consumed across projects that serialize content differently — TDS, Unicorn, Sitecore CLI, or none of the above. Shipping an opinionated serialized item would force one tool's format on every consumer, so the Field Type item is yours to create under whichever /sitecore/system/Field types location fits your tree.

Is this only for TreeList fields?

QueryableTreeList is the first implementation, not the only planned one. Axlis.Customizations.Abstractions is deliberately thin today — it holds only the genuinely Sitecore-free constants shared across the family, and is expected to grow as new customizations need shared, Sitecore-free logic.