Бывает, стоит задача применить какой-либо стиль или вывести конкретный кусочек кода для дирректории. Для этого в Битрикс можно воспользоваться параметром CMain::GetCurPage. А как расскажу на примере...
Бывает, стоит задача применить какой-либо стиль или вывести конкретный кусочек кода для дирректории. Для этого в Битрикс можно воспользоваться параметром CMain::GetCurPage. А как расскажу на примере...
Итак согласно документации Битрикс:
string CMain::GetCurPage(bool get_index_page=null)
Возвращает путь к текущей странице относительно корня без параметров.
Как нам это может пригодится:
Задача применить класс для li.company в разделе /company/ при этом на любой другой для этогоже
li должен применяться li.nocompany
<li <?if ($APPLICATION->GetCurDir()=='/company/'):?>class="company"<?else:?> class="nocompany"<?endif;?>>
содержимое
</li>
Расшифровываю:
<li <если дирректория равно '/company/') применяем class="company", иначе применяем class="nocompany">
Условие для каталога и всех вложенных подкаталогов:
GetCurDir позволяет применить условие для каталога, если нужно применить для каталога и всех внутренних подкаталогов, можно воспользоваться if(CSite::InDir():
<li <?if(CSite::InDir('/metalworking/')):?>class="active"<?endif;?> class="noactive">
Пример из реальной жизни: на моем сайте часть разделов (портфолио, форум, дизайн) имеет одноколоночную верстку, дабы не плодить отдельные шаблоны, я просто указал в каких разделах не выводить aside
<?if (
($APPLICATION->GetCurDir()=='/designes/ready-made-html-layouts/')
|| ($APPLICATION->GetCurDir()=='/designes/adaptive-html/')
|| ($APPLICATION->GetCurDir()=='/portfolio/')
|| ($APPLICATION->GetCurDir()=='/forum/')
):?>
По хорошему, злоупотреблять этим не стоит, так как после вас мало кто разберется в верстке если условий будет очень много. Приходилось сталкиваться с реализацией шаблона который проще переверстать нежели разобраться как это, вообще, работает.
В таких случаях лучше воспользоваться указанием условия для свойства раздела в настройках сайта "Модули" -> "Управление структурой"
Определяем текущий уровень раздела в каталоге
Если нужно назначить некое условие для заранее заданного уровня подраздела в каталоге Битрикс, можно воспользоваться вот таким условием
<?if( //если текущей уровень каталога 1 или 2
($arResult["SECTION"]["DEPTH_LEVEL"]==1) ||
($arResult["SECTION"]["DEPTH_LEVEL"]==2)
):?>
Должно произойти вот это
<?endif;?>
По просьбе читателя добавляю: Отсчет разделов начинается с 0 а не с 1