Blog Sections Open
Filtering Ditto Results by Multi-Select TV Values
Multi-select TVs are useful until the listing layer has to interpret them in a predictable way.
This donor dealt with a familiar old-Evo problem: a TV stored several category-like values, and Ditto needed to filter resources by that multi-select field.
Example TV source
@EVAL return ' ||' . $modx->runSnippet("Quill", array('parent'=>'50', 'title'=>'pagetitle'));
Example Ditto call
[[Ditto?
&parents=`2`
&tpl=`collection.tpl`
&depth=`3`
&paginate=`1`
&display=`16`
&filter=`tvnew,,2`
&extenders=`request`
&sortDir=`ASC`
&sortBy=`pagetitle`
]]
Where the confusion comes from
Multi-select TVs often store a value format that looks simple in the manager but behaves differently once filtering starts. The listing engine may need exact tokens, rendered values, or delimiter-aware logic, depending on how the field was configured.
Practical advice
If a TV is meant to drive filtering, decide early whether it is a human-facing field or a query-facing field. One field can do both, but the more categories and combinations it carries, the more careful the filter logic needs to be.
Updating Shopkeeper Prices Dynamically with JavaScript and changePrice
How to extend Shopkeeper price updates on the frontend when option changes should also recalculate comparison prices or savings labels.
Displaying Shopkeeper Product TVs Through catalogFill Data Sources
How to connect Shopkeeper-style product output with catalogFill data sources when product attributes live in a separate content structure.