Как я могу перехватить и изменить форму контента, прежде чем размещение вступит в силу?
Недавно я столкнулся с несколькими сценариями, в которых было бы удобно динамически изменять DisplayType формы содержимого непосредственно перед применением правил размещения.
Например, деталь для продукта отображает много различных тяжелых пользовательских деталей в различных зонах (заголовок с изображениями продуктов, розничными продавцами и количествами из внешней службы, сводные формы многих базовых компонентов продукта и т. Д.). Когда продукт больше не выпускается, вместо того, чтобы удалять его, я хочу держать страницу в сети и показывать сообщение в духе "этот продукт больше не доступен, но вы могли бы вместо этого попробовать эти другие продукты". Клиентам, которые натыкаются на эту страницу, не нужно ждать или отвлекаться на кучу беспорядка, который больше не актуален. Я хочу удалить все, что связано с снятым с производства продуктом, кроме заголовка и описания, и дополнительно отобразить список альтернатив.
Я рассмотрел несколько способов сделать это: добавление пустых альтернатив в ShapeTableProvider
добавление оболочек для скрытия с помощью CSS, добавление пользовательской части в первую зону темы, которая очищает все остальные зоны, или просто написание проверок в драйверах каждой пользовательской части, присоединенной к продукту. Все эти подходы утомительны, негибки и / или неполны.
Если бы я мог каким-то образом изменить DisplayType на "DetailDiscontinued" или что-то в зависимости от условия, то перед размещением я мог бы просто сопоставить этот DisplayType в месте размещения, чтобы скрыть или показать любую деталь или поле, которое я хочу, и легко повторно использовать этот код для различных типов контента в разных местах. разные темы и проекты.
IShapeDisplayEvents
а также IShapeTableProvider
ударил после размещения, так что это не пойдет. IShapeFactoryEvents
ударил до того, как DisplayType установлен и не имеет ссылки на содержимое, насколько я могу судить.
Есть ли крюк, который позволит мне сделать это?