В предыдущем посте я писал о затруднениях с главной страницей. Кажется я понял в чем причина этих затруднений - это не формализованное Кеширование сайтбаров. Сейчас сделано следующим образом: в шаблоне встречается тег $template->sitebar - его контент отдается методом getsitebar, в котором проверяется существование файла сайтбара в кеше. Далее очевидно - есть файл, то отдать его контент, а иначе сгенерировать контент, сохранить в файл и отдать контент. Вроде как логично и в алгоритме не содержится ошибки.

Но вот появляется спецглавная страница, в которой не нужен кеш сайтбара, а если и нужен, то только кеш для главной а не кеш для всех страниц. Как разрулить? Позволить классам для своей странице генерировать свой собственный сайтбар. Каким образом? Думаю подойдет метод getsitebar интерфейса itemplate2 (2 - типа advanced, но чтобы не писать много слов). Если есть интерфейс - то сгенерировать.

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

Может быть стоит перевести вопрос в иную плоскость - кто должен отвечать за кеширование сайтбаров? Например кэшированием страниц целиком занимается turlmap, который сопоставляет урлы к классам - если файл в кеше не устарел, то его отдает, а иначе создается класс и генерируется страница. В существующей модели, за кеширование сайтбаров отвечает ttemplate. В новой версии появился вспомогательный класс tsitebars для управления виджетами в сайтбарах. Буду делать как считаю нужным, а там посмотрю, что удобнее.