Рейтинг: 7.4395  
На голосовании
Предложил Прокофьев Андрей 06.07.2014 23:53:05

Добавить параметр «Композитный режим» к компонентам

Сейчас, для того чтобы заставить страницу работать в композитном режиме нужно, как минимум, залезть в шаблон каждого компонента и добавить строчку

$this->setFrameMode(false);

Когда таких компонентов много — процесс затягивается... А бывает , что просто приходится умышленно копировать какой-нибудь bitrix:socserv.auth.form к себе в шаблон сайта, ради того, чтобы всё остальное заработало...

Слишком много лишних действий. Можно и нужно сделать проще...

Например, ко всем компонентам добавить параметр a la "CACHE_TYPE":
"COMPOSITE" => "ALLOW" | "USE" | "SELF" | "DENY"
И рассмотреть возможные кейсы:
  1. Компонент «разрешает» работать остальным;
  2. Компонент сам работает в композитном режиме*;
  3. На усмотрение разработчика (разработчик сам правит шаблон компонента и расставляет динамические/статические области);
  4. Компонент запрещает «всё и всем»;
*Предполагает, что система сама оборачивает шаблон компонента в:
$this->setFrameMode(false);
$frame = $this->createFrame()->begin(); 

/*Код шаблона компонента*/ 
 

$frame->end();

 
Рейтинг: 19.9541  
Новая
Предложил Валерий Чебан 30.10.2013 01:11:54

в методе CMain::IncludeComponent() сделать второй параметр по-умолчанию ".default"

Это уже давно так, но вот WARNING в PHP вызывает, а также и ошибку в IDE (напр. в phpStorm):




Думаю, что возражений совершенно не должно быть по этому поводу, все будет только нагляднее, и уже как давно устоялось: