Если с функциями SetPageProperty, SetTitle и тд все понятно - они просто не будут выполняться при включеном кеше. То с $APPLICATION->ShowProperty() не доконца понимаю, вроде она должна ставить метку которая будет заполняться позднее уже актуальными данными и следовательно в закешироваться а позднее заполниться должна именно метка.
Сейчас мне необходимо перекрашивать меню в шапке в зависимостит от раздела. Я в index.php раздела задаю
$APPLICATION->SetPageProperty('category_style', 'is-red');
ну а в шаблоне компонента
class="top-menu <?$APPLICATION->ShowProperty('category_style', '');?>"
Ожидая что у меня в зависимости от раздела в закешированный компонент подставиться класс. Но у меня вставка с ShowProperty ломает нафиг верстку.
Может быть дело в том что у нас битрикс переводили из win-1251 в utf-8 и там как то не все файлы в utf-8? Или все же дело в том что ShowProperty в шаблоне компонента пользовать нельзя?
У меня почему то стойкая уверенность что данный пример был в экзамене и он решается именно через ShowProperty.
Вытекающий вопрос
Если нельзя пользовать ShowProperty() какой вариант тогда использовать?
1) я конечно могу по $APPLICATION->GetCurDir() определять и отдавать в параметре значение, но меня смушает что будут создаваться разные кеши (фигня конечно).
2) могу вставлять подстроку вида #category_style# и подменять ее значение на событии
'OnEndBufferContent' что еще больше меня смущает.
Вообщем то хочу уже закрыть для себя этот гештальд с отложенными функциями.
Как поступать в таких случаях?