Недавно был переход от ini файла шаблона комментов на tml, осталось еще два ini файла в теме - about.ini, который нужен для админки, и theme.ini в котором собрана инфа о теме.

В theme.ini находится шаблон меню, виджетов и навигационных ссылок (ссылки на страницы с цифрами -). Шаблоны виджетов наверно можно поместить в отдельный файл widget.tml - по примеру как для комментов, а инфу о меню расположить в index.tml, остается еще шаблоны для навигационных ссылок и пара классов (скорее недоработка шаблонов). Также в theme.ini можно задавать шаблон ссылок внутри виджетов, но скорее всего было бы более удобно поместить этот шаблон внутри всего шаблона виджета - по примеру комментариев.

Уже сейчас доступен шаблон для админки - если в теме будет файл admin.tml то он будет использован вместо index.tml. Об этом я пока нигде не сообщал, но уже сейчас можно сделать admintml из index.tml без виджетов и с другим сайтбаром.

Также были внесены изменения в движок - теперь каждый класс может самостоятельно выбирать себе главный шаблон, если не задано, то будет index.tml. В настоящее время index.tml читается каждый раз при обращении к нему, в отличии от comments.tml который читается и парситься один раз. Поскольку index.tml не парсится, то и он не кэшировался.

Например, если указать шаблон для меню внутри index.tml, то тогда придется парсить этот файл наподобие comments.tml. В этом случае в index.tml можно будет включить шаблоны виджетов. С одной стороны получается удобно - практически целиком в одном файле будет описано несколько шаблонов. Но встает следующая проблема: если какой то объект использует шаблон отличный от index.tml - то как с этим быть? Если оставить все как сейчас, то ничего сложного - сейчас это работает. Если же вставить шаблоны меню и виджетов внутрь вариантов index.tml, то придется парсить каждый из этих файлов. В принципе это тоже возможно, если результаты парсинга кэшировать отдельно. Ну то есть если при первом обращении не был найден отпарсенный файл, то отпарсить и сохранить для следующего использования.

Но тут тоже не все так просто: в настоящее время контент виджетов кэшируется. Например рубрики обновляются редко и достаточно в кеше создать файл с контентом виджета рубрик, чтобы каждый раз не дергать генерацию html виджета рубрик. Так оно сейчас и сделано, и отлично работает (есть несколько типов кэширования для виджетов). В случае с альтернативными шаблонами виджетов как быть? Либо просто не разрешать альтернативные виджеты, либо разрулить иным способом. А каким способом? Сейчас файл виджета в кеше имеет имя widget-$id.php где понятно что $id это id виджета. Каждый виджет может объявить себя устаревшим в кеше, чтобы обновиться. С неопределенным числом альтернативных шаблонов виджетов как найти и однозначно связать шаблон с файлом в кеше? Создать папку с именем файла шаблона в папке cache, и туда писать контент виджетов? При тотальной очистке кеша удалять все эти папки с файлами?

Есть пространство для споров и рассуждений - моих мозгов пока не хватает для принятия правильного решения, чтобы не было мучительно в будущем переделывать неудачное решение.