Бывает, стоит задача применить какой-либо стиль или вывести конкретный кусочек кода для дирректории. Для этого в Битрикс можно воспользоваться параметром CMain::GetCurPage. А как расскажу на примере...
Итак согласно документации Битрикс:
string CMain::GetCurPage(bool get_index_page=null)
Возвращает путь к текущей странице относительно корня без параметров.
Как нам это может пригодится:
Задача применить класс для li.company в разделе /company/ при этом на любой другой для этогоже li должен применяться li.nocompany
Расшифровываю:
Элементарщина в общем.
GetCurDir позволяет применить условие для каталога, если нужно применить для каталога и всех внутренних подкаталогов, можно воспользоваться if(CSite::InDir():
Пример из реальной жизни: на моем сайте часть разделов (портфолио, форум, дизайн) имеет одноколоночную верстку, дабы не плодить отдельные шаблоны, я просто указал в каких разделах не выводить aside
<?if (
($APPLICATION->GetCurDir()=='/designes/ready-made-html-layouts/')
|| ($APPLICATION->GetCurDir()=='/designes/adaptive-html/')
|| ($APPLICATION->GetCurDir()=='/portfolio/')
|| ($APPLICATION->GetCurDir()=='/forum/')
):?>
По хорошему, злоупотреблять этим не стоит, так как после вас мало кто разберется в верстке если условий будет очень много. Приходилось сталкиваться с реализацией шаблона который проще переверстать нежели разобраться как эта хрень вообще работает. (накипело)
Если нужно назначить некое условие для заранее заданного уровня подраздела в каталоге Битрикс, можно воспользоваться вот таким условием
По просьбе читателя добавляю: Отсчет разделов начинается с 0 а не с 1
![]()
Дмитрий
|
А как выглядит код не для категории, а для страницы сайта ?
|
![]()
Михаил Базаров
| ||||
| ||||
![]()
Алексей
|
А как определить текущий уровень раздела каталога из файла section.php (файл из комплексного каталога)? Там в $arResult не хранится DEPTH_LEVEL.
|
![]()
Леонид
|
Здравствуйте Михаил! Подскажите как сделать чтоб слайдер не показывался во все разделах каталога?
Я использовал ваш код "<?if ( ($APPLICATION->GetCurDir()=='/designes/ready-made-html-layouts/') || ($APPLICATION->GetCurDir()=='/designes/adaptive-html/') || ($APPLICATION->GetCurDir()=='/portfolio/') || ($APPLICATION->GetCurDir()=='/forum/') ):?>" , но т.к. в каталоге очень много разделов, не очень удобно каждый выписывать в код. Как сделать проще? ![]() |
![]()
Михаил Базаров
| ||
| ||
![]()
Леонид
| ||||
| ||||
![]()
Василий
|
Михаил подскажите, у меня есть раздел каталог у которого есть страницы авио, ж/д, как мне вывести определённое меню для этих страниц?
|
![]()
Михаил Базаров
| ||
| ||
![]()
Василий
|
Михаил, а можно примерчик, какой нибудь, чтобы яснее было
|
![]()
Игорь Бойко
| ||
| ||
![]()
Кирилл
|
Здравствуйте!
Подскажите, пожалуйста, какое нужно написать условие, чтобы показывать в шаблоне определённый блок, только когда находишься на странице элемента каталога (странице товара), но не в разделах каталога. Или наоборот, условие, чтобы скрыть определённый блок шаблона только когда находишься в разделах каталога, а на всех остальных страницах показывать блок, включая страницы элемента каталога (страницы товаров). |
![]()
Михаил Базаров
| ||
в файлах section.php и sections.php - это разделы и топ element.php - это карточка товара Так наиболее эффективно и грамотно | ||
![]()
Илья
|
Добрый день, Михаил
есть вот такое условие: <?if(CSite::InDir('/katalog/')):?> <?else:?> <?$APPLICATION->IncludeComponent( "bitrix:news.list", "news_right", array( "DISPLAY_DATE" => "Y", и.т..д как в 'if добавить в условие еще одну страницу чтоб и на ней не показывались новости???' спасибо! |
![]()
Михаил Базаров
| ||||
| ||||
![]()
mtsub
|
как передать в письмо URL страницы на которой был задан вопрос, код $arFields["PAGE_URL"] = $APPLICATION->GetCurPage(); не срабатывает? В моём случае используется Тип почтового события: Заполнена web-форма "SIMPLE_FORM_2" [FORM_FILLING_SIMPLE_FORM_2]
|
![]()
mtsub
|
- через init.php
|
![]()
mtsub
|
сам код:
<? AddEventHandler('main', 'OnBeforeEventSend', Array("MyForm", "my_OnBeforeEventSend" ![]() class MyForm { function my_OnBeforeEventSend(&$arFields) { $arFields["TEST1"] = $APPLICATION->GetCurPage(); //#TEST1# } } ?> |
![]()
Михаил Базаров
| ||
Не всегда, нужно захламлять init.php - если моно обойтись- лучше обойтись | ||
![]()
mtsub
| ||
| ||
![]()
slava.jax
| ||||||
| ||||||