Может я изобрёл велосипед, может нет. Не судите строго, может кому пригодиться.
Пришёл заказ. Три псд. Дизайн на всех трёх примерно один. НО правая колонка разная. На третьем её вообще нет. Задумался как сделать одним шаблоном. Ковырялся долго, не буду в даваться в подробности.В конце концов наткнулся на и на , а также снова почитав , мой мозг выдал примерно следующие:
Перво наперво мне нужна была функция "выбора-вывода" контента в область:
Далее вставим вывод в нужное место:
Если нам необходимо повлиять на вывод, в необходимом месте ставим:
Результат:
1)Вывод компонента или другого кода через отложенные фукции
2)Отложенные функции внутри встраиваемого кода отрабатывают(проверял на примере css в дефолте)
3)Вывод дефолтного кода
Минусы:
1)Видимо в связи с тем как работают отложенные функции функция right_content не работает до объявления $APPLICATION->ShowProperty
2)В данном примере есть дефолтное значение, и оно успевает отработать до вызова right_content. Поэтому хоть и контетная часть передаётся правильно, но успевают подключится css,js,title и пр. Но они у меня не существенные и на скорость сайта сильно не влияют.
P.S.
Выложил рабочий вариант, возможно что не окончательный
Нормально отношусь к адекватной критике. Знаете как сделать лучше, готов выслушать)
Пришёл заказ. Три псд. Дизайн на всех трёх примерно один. НО правая колонка разная. На третьем её вообще нет. Задумался как сделать одним шаблоном. Ковырялся долго, не буду в даваться в подробности.В конце концов наткнулся на и на , а также снова почитав , мой мозг выдал примерно следующие:
Перво наперво мне нужна была функция "выбора-вывода" контента в область:
| <? function right_content($view=null) { global $APPLICATION; ob_start(); switch ($view) { case 1: $APPLICATION->IncludeComponent("bitrix:menu", "main_menu", array( "ROOT_MENU_TYPE" => "top", "MENU_CACHE_TYPE" => "A", "MENU_CACHE_TIME" => "3600", "MENU_CACHE_USE_GROUPS" => "Y", "MENU_CACHE_GET_VARS" => array( ), "MAX_LEVEL" => "2", "CHILD_MENU_TYPE" => "left", "USE_EXT" => "Y", "DELAY" => "N", "ALLOW_MULTI_SELECT" => "N" ), false ); break; default: $APPLICATION->SetAdditionalCSS('/bitrix/templates/main/right_main.css'); $APPLICATION->IncludeFile( "include_areas/right_main.php", "", Array( "SHOW_BORDER" => "false", "NAME" => "правый контент главный", "MODE" => "html", "TEMPLATE" => "empty.php" ), false ); } $contentTime=ob_get_contents(); $APPLICATION->SetPageProperty('right_content',$contentTime); ob_end_clean(); }?> |
| <?$APPLICATION->ShowProperty("right_content",right_content())?> |
Если нам необходимо повлиять на вывод, в необходимом месте ставим:
| <?right_content(2);?> |
1)Вывод компонента или другого кода через отложенные фукции
2)Отложенные функции внутри встраиваемого кода отрабатывают(проверял на примере css в дефолте)
3)Вывод дефолтного кода
Минусы:
1)Видимо в связи с тем как работают отложенные функции функция right_content не работает до объявления $APPLICATION->ShowProperty
2)В данном примере есть дефолтное значение, и оно успевает отработать до вызова right_content. Поэтому хоть и контетная часть передаётся правильно, но успевают подключится css,js,title и пр. Но они у меня не существенные и на скорость сайта сильно не влияют.
P.S.
Выложил рабочий вариант, возможно что не окончательный
Нормально отношусь к адекватной критике. Знаете как сделать лучше, готов выслушать)