Порассуждаю как разработать новую модель вид вместо темы. И так вид включает в себя тему и сайтбары (виджеты). Будет одно глобальное хранилище виджетов и куча сайтбаров с этими виджетами. Каждый вид может иметь свое название. Изначально будет один вид - по умолчанию, как сейчас, где будет тема и сайтбар. Создание нового вида тогда должно будет копировать сайтбар по умолчанию. Скорее надо сделать кА сейчас с главной - флажок использовать сайтбар по умолчанию, то есть сайтбар из вида по умолчанию. Вид по умолчанию должен быть также неудаляемым и опционально нельзя переименовать во избежание проблем от странных действий пользователей.

Соответственно должны быть упразднены свойства theme у всех классов - вместо этого появится id вида. Можно для вида включить иконку - а иконки удалить из классов, но это под вопросом, как вообще под вопросом целесообразность иконок для классов.

Следующая проблема - это темы, не являющиеся темами блоголёта, например темы wordpress (которые до сих пор еще не поддерживаются, но эта фича будет доделана). Тогда будут ограничения темы вида - недоступны виджеты.

На будущее можно зарезервировать частичное перекрытие шаблонов темы в виде. Например сделать особый шаблон заголовка страницы, который бы отличался от выбранной темы. Мне кажется эта фича будет очень мощной, но содержать в себе потенциальные проблемы, так как нарушает строгую иерархию шаблонов тем. Правильным было бы создавать новую тему, где указывать родительскую и в родительской теме менять шаблон (тот же самый заголовок страницы). Идея состоит в том, что для вида не следует ограничиваться только темой и виджетами, а можно туда поместить дополнительную инфу.

Следующий вопрос - это удаление вида и нотификация этого события. Теоретически следовало бы уведомлять всех, у кого был удаляемый вид, чтобы они смогли его сменить например на вид по умолчанию. Очевидно, что такая нотификация будет более чем обременительна по ресурсам, во всяком случае для файловой версии (очередной недостаток файловой версии). Как вариант каждый раз проверять существование выбранного вида. Чтобы его сменить нужно будет сделать метод что то типа setview - а лучше всего его добавит в интерфейс itemplate, чтобы его наличие было обязательным для классов. Симметрично можно добавить метод getview. Проверкой существования будет заниматься класс ttemplate, как это он сейчас делает для тем.