Возможно ли с автокешированным компанентом (напр. catalog.element) модифицировать шаблон в зависимости от данных сессии или другой глобальной переменной?
15.03.2012 13:01:25
Возможно ли с автокешированным компанентом (напр. catalog.element) модифицировать шаблон в зависимости от данных сессии или другой глобальной переменной?
|
|
|
|
15.03.2012 13:35:00
Как-то не подумал что весь шаблон можно перенести в component_epilog.php, думал он вспомогательный как resultmodifier.
Т.е. можно template.php вообще пустым оставить? |
|
|
|
15.03.2012 13:51:33
Можно, конечно.
|
|
|
|
15.03.2012 13:57:48
Спасибо, не знал, но по сути тогда необходимость в кешировании отпадает - все равно все "мимо кэша", и это получается равносильно параметру
|
|||
|
|
15.03.2012 14:02:01
Кешируется результат работы component.php, в котором обычно запросы к БД.
|
|
|
|
15.03.2012 14:05:56
+1
|
|
|
|
15.03.2012 17:54:39
Покажите код из файла result_modifier.php. Наверное в нем что-то.
|
|
|
|
15.03.2012 18:12:41
В result_modifier.php и component_epilog.php в общем случае приходит $arResult с разным содержимым.
Чтобы изменения, сделанные в result_modifier.php передались через $arResult в component_epilog.php, нужно добавить нужные ключи в кеш, как это делать написано в |
|
|
|
15.03.2012 18:20:37
Да, это косяк надо было все-таки почитать про component_epilog. И кроме ключей, нужно еще будет позаботиться о подключении lang-файла в component_epilog, если в шаблоне имеются языковые фразы. И тогда уже можно будет работать с ним (с ним - в смысле с component_epilog).
|
|
|
|
15.03.2012 18:25:51
мне не нужны lang файлы и проблемы с result_modifier не было бы (просто запихнуть весь код в template), мне главное чтобы работал кэш с result_modifier без него не важно, главное обойти кэш
для теста вообще удалил result_modifier |
|
|
|
15.03.2012 18:29:56
result_modifier кешируется в любом случае. Если нужно перенести из него логику мимо кеша, то переносите в component_epilog. Только при этом нужно все равно сохранить ключи, чтобы они стали доступны в эпилоге (ссылку на блог выше привели).
|
|
|
|
15.03.2012 18:45:34
|
|||
|
|
15.03.2012 18:50:37
Мне как бы не важен собсно arResult с его ключами
опишу ситуацию конкретнее - вот простой пример
на основании этого кода происходят изменения в подключаемом файле этот файл я подключаю тоже в eplog-е, но он (результат) не меняется может нужно что-то прописать для подключаемого файла? ps я писал что передаю в файл переменную $arResult, но это так для полного описания, в моей ситуации он роли не играет |
|||
|
|
15.03.2012 19:38:10
Через глобальную переменную, наверное. Только не ясно, почему под админом там что-то получается.
|
|||
|
|
16.03.2012 16:55:38
C инклуд файлами все решилось, всем спасибо.
Появился новый трабл: Есть инклуд файл с обработчиком для аякса. В нем срабатывает SetPropertyValues для нескольких свойств. Но в шаблоне они не обновляются (обновляются, как обычно, только у админа). Весь шаблон я перенес по вашим советам к epilog, в result_mod добавил ключи. Так вот то, что модифицировалось в модифере, успешно изменилось при выводе, а вот свойства не менялись, и писать так
Не подскажете, может как-то можно обновлять кэш при срабатывании обработчика (в инклуд файле) |
|||
|
|
16.03.2012 18:07:10
BXClearCache помог
|
||||
|
|
|||