Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Как определить свою переменную в компоненте!

00 голосов
7
Доброго дня подскажите как определит свою переменную в компоненте! 

Задача у меня такая, для детальной страницы элемента каталога необходимо применить другой шаблон!

Хочу определит свою переменную в шаблоне компоненты детального просмотра элемента каталога и по выражению php определить какой шаблон подключить!


Подскажите или может поправите меня!

Спасибо!
спросил 24 Июль, 13 от RADOS (120 баллов)

7 Ответы

00 голосов
webox пишет:
Цитата
Задача у меня такая, для детальной страницы элемента каталога необходимо применить другой шаблон!
решал такое через костыль)
если хочешь - вот как

в init.php
Код
if (CComponentEngine::ParseComponentPath("/catalog/", 
                             array("section" => "#SECTION_CODE#.html",                    
                        "element" => "#SECTION_CODE#/#ELEMENT_ID#.html"), // сюда ваше чпу для  кoроче 
                              $arVariables
                       ) == 'element') define('ELEMENT_PAGE', true);
короче говоря в самом начале проверяем где находимся, и если это страница элемента то устанавливаем константу ELEMENT_PAGE

а в условие на подключение шаблона ставим выражение пхп - defined('ELEMENT_PAGE')
ответил 24 Июль, 13 от Hax (1,100 баллов)
00 голосов
В шаблоне каталога в конце строчка

Код
$this->IncludeComponentTemplate($componentPage);
Она и определяет какой компонент будет подключен. Если она равна 'element', то значит catalog.element подключится, вернее то, что подключается в файле element.php в шаблоне.
Я в тему?smile:)
ответил 18 Сен, 13 от Yrizer (200 баллов)
00 голосов
Цитата
MakTpaxep пишет:
Она и определяет какой компонент будет подключен. Если она равна 'element', то значит catalog.element подключится, вернее то, что подключается в файле element.php в шаблоне.
Я в тему?smile:)
в тему)

но  выбор шаблона САЙТА происходит ещё до выполнения страницы с компонентами..
это если автор имел ввиду шаблон САЙТА отдельный для элемента каталога...

если он про шаблон компонента - то да)
ответил 16 Дек, 13 от Hax (1,100 баллов)
00 голосов
Цитата
Александр Kyдин пишет:
Цитата
MakTpaxep пишет:
Она и определяет какой компонент будет подключен. Если она равна 'element', то значит catalog.element подключится, вернее то, что подключается в файле element.php в шаблоне.
Я в тему?smile:)
в тему)

но выбор шаблона САЙТА происходит ещё до выполнения страницы с компонентами..
это если автор имел ввиду шаблон САЙТА отдельный для элемента каталога...

если он про шаблон компонента - то да)
Да я именно имел выбор другого шаблона!

Спасибо всем, информация все очень полезна! 
ответил 31 Март, 14 от RADOS (120 баллов)
00 голосов
О как сложно, а не проще применять шаблон по условию в юрле. Стандартная, кстати, возможность. Будет у вас для детальной страницы свой собственный шаблон, причем полностью весь уникальный. Ну а чтобы поменьше гемора со стилями было, положите единый template_style.css в шаблон .default и с любого другого шаблона его подключайте в header. Тогда у вас css закешируется и лишний раз подгружаться не будет, да и править 1 файл проще, чем выполнять синхронизацию в нескольких.

И все это без костылей по поводу передачи в компоненту переменной.

Кстати, сталкивался с такой штукой у клиента - для файла detail.php объявлялась глобальная переменная, по которой в шапке сайта менялись подключаемые библиотеки. Шмешно, но работало
ответил 24 Июль, 14 от Cyber (540 баллов)
00 голосов
Цитата
Евгений Смолин пишет:
О как сложно, а не проще применять шаблон по условию в юрле. Стандартная, кстати, возможность. Будет у вас для детальной страницы свой собственный шаблон, причем полностью весь уникальный. Ну а чтобы поменьше гемора со стилями было, положите единый template_style.css в шаблон .default и с любого другого шаблона его подключайте в header. Тогда у вас css закешируется и лишний раз подгружаться не будет, да и править 1 файл проще, чем выполнять синхронизацию в нескольких.

И все это без костылей по поводу передачи в компоненту переменной.

Кстати, сталкивался с такой штукой у клиента - для файла detail.php объявлялась глобальная переменная, по которой в шапке сайта менялись подключаемые библиотеки. Шмешно, но работало
Так из начальное хотел но вот условия для url как то не придумал!

как проверить к примеру определена переменная "element_code" ? 
ответил 25 Ноя, 14 от RADOS (120 баллов)
00 голосов
на странице detail.php

Код
$element_code="test"; 
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");


В header.php

Код
     if($element_code=="test")

 Но зачем так?

Просто в условиях при настройке шаблонов для сайта указываете:
выражение php:

Код
(strpos( $APPLICATION->GetCurDir(), '/catalog/' ) !== false  && preg_match( '~\/([0-9]+)\/~',$APPLICATION->GetCurDir()))  
т.е. смысл условия - это каталог (/catalog/) и в нем цифровой код товара  - применить шаблон

можно еще как то написать условия. Но смысл понятен - анализируем юрл и определяем по какому то признаку детальную страницу - да хоть ввести в юрл какой-то признак
ответил 21 Март, 15 от Cyber (540 баллов)

Похожие вопросы

0 голосов
4 ответов
0 голосов
6 ответов
0 голосов
4 ответов