Для получения подробной информации вы можете обратиться к документации Shopify по Создание альтернативных шаблонов или к аналогичному сообщению в блоге в Блоге партнеров.
В этих статьях предлагается создавать файлы с определенным дескриптором коллекции, который можно выбрать вручную. Поскольку вы не хотите этого делать и указали, что только фильтры меняются в зависимости от разных коллекций, вместо замены всего шаблона вы можете просто включить другой фрагмент или раздел, основанный на дескрипторе коллекции.
Пример изнутри collection.liquid
{% if collection.handle == 'collection-1' %}
{% section 'collection-filters-1' %}
{% elsif collection.handle == 'collection-2' %}
{% section 'collection-filters-2' %}
{% else %}
{% section 'collection-filters-default' %}
{% endif %}
Ну, самым близким было бы отражение, но это находится на медленной стороне..., но взгляде на MethodInfo. Вызвать...
Вы наклоняетесь, можно сделать вещи, которые являются, соглашаются с небольшим количеством помахивания руки (или уступают foreach или добавляют foreach дополнительный метод на наборе, который берет лямбду), но ничто столь изящное, как Вы входите в Python.
Func<List<float>, float> add = l => l[0] + l[1];
var list = new List<float> { 4f, 5f };
add(list); // 9
или:
Func<List<float>, float> add = l => l.Sum();
var list = new List<float> { 4f, 5f };
add(list); // 9
Является самым близким, Вы входите в c#, полагая, что это со статическим контролем типов. Можно изучить сопоставление с образцом F# для точно, что Вы ищете.
С LINQ можно сделать это, которое достаточно близко к примеру.
var list = new List<int> { 3, 4 };
var sum = list.Sum();