Если папка то применяем...в Битрикс

10576  |  9

Бывает, стоит задача применить какой-либо стиль или вывести конкретный кусочек кода для дирректории. Для этого в Битрикс можно воспользоваться параметром CMain::GetCurPage. А как расскажу на примере...

Итак согласно документации Битрикс:

string CMain::GetCurPage(bool get_index_page=null)
Возвращает путь к текущей странице относительно корня без параметров.

Как нам это может пригодится:
Задача применить класс для li.company в разделе /company/ при этом на любой другой для этогоже li должен применяться li.nocompany

 <li <?if ($APPLICATION->GetCurDir()=='/company/'):?>class="company"<?endif;?> class="nocompany">содержимое</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;?>
Расскажи друзьям-то:
Уважаемый читатель! В связи с участившимся спамом в комментариях, возможность писать доступна только для зарегистрированных пользователей
Зарегистрироваться Войти Напомнить пароль
Или войти через социальную сеть:
Дмитрий
А как выглядит код не для категории, а для страницы сайта ?
Михаил Базаров
Цитата
Дмитрий пишет:
А как выглядит код не для категории, а для страницы сайта ?
Код
  
 
<?if ($APPLICATION->GetCurPage()=='/catalog/index.php'):?>ЧТО-ТО ЧТО ХОТИМ ВЫВЕСТИ<?else:?>Что-то что иначе<?endif;?>  
[CODE][/CODE]
Алексей
А как определить текущий уровень раздела каталога из файла section.php (файл из комплексного каталога)? Там в $arResult не хранится DEPTH_LEVEL.
Леонид
Здравствуйте Михаил! Подскажите как сделать чтоб слайдер не показывался во все разделах каталога?
Я использовал ваш код "<?if (
($APPLICATION->GetCurDir()=='/designes/ready-made-html-layouts/')
|| ($APPLICATION->GetCurDir()=='/designes/adaptive-html/')
|| ($APPLICATION->GetCurDir()=='/portfolio/')
|| ($APPLICATION->GetCurDir()=='/forum/')
):?>" , но т.к. в каталоге очень много разделов, не очень удобно каждый выписывать в код. Как сделать проще? :\
Михаил Базаров
Цитата
Леонид пишет:
Здравствуйте Михаил! Подскажите как сделать чтоб слайдер не показывался во все разделах каталога?
Я использовал ваш код "<?if (
($APPLICATION->GetCurDir()=='/designes/ready-made-html-layouts/')
| ($APPLICATION->GetCurDir()=='/designes/adaptive-html/')
| ($APPLICATION->GetCurDir()=='/portfolio/')
| ($APPLICATION->GetCurDir()=='/forum/')
):?>" , но т.к. в каталоге очень много разделов, не очень удобно каждый выписывать в код. Как сделать проще?
Вместо == (равно) используйте !== (не равно)
Леонид
Цитата
Михаил Базаров пишет:
Цитата
Леонид пишет:
Здравствуйте Михаил! Подскажите как сделать чтоб слайдер не показывался во все разделах каталога?
Я использовал ваш код "<?if (
($APPLICATION->GetCurDir()=='/designes/ready-made-html-layouts/')
| ($APPLICATION->GetCurDir()=='/designes/adaptive-html/')
| ($APPLICATION->GetCurDir()=='/portfolio/')
| ($APPLICATION->GetCurDir()=='/forum/')
):?>" , но т.к. в каталоге очень много разделов, не очень удобно каждый выписывать в код. Как сделать проще?
Вместо == (равно) используйте !== (не равно)
Спасибо! Нашел еще решение: (CSite::InDir('/catalog')
Василий
Михаил подскажите, у меня есть раздел каталог у которого есть страницы авио, ж/д, как мне вывести определённое меню для этих страниц?
Михаил Базаров
Цитата
Василий написал:
Михаил подскажите, у меня есть раздел каталог у которого есть страницы авио, ж/д, как мне вывести определённое меню для этих страниц?
Нужно, конечно, вашу задачу понимать полнее- но в данном случае, сподручнее через catalog.section.list сделать
Василий
Михаил, а можно примерчик, какой нибудь, чтобы яснее было

© 2011—2016 Частный вебмастер: ИП Базаров, ОГРНИП: 315784700173692. Работает на 1С-Битрикс.
Копирование материалов запрещено: "ГК РФ, часть 4, раздел VII: Права на результаты интеллектуальной деятельности".

Информация размещенная на сайте, не является публичной офертой. Политика конфеденциальности
x
Как к Вам обращаться? *
Ваша электронная почта: *
Доп. материалы (логотип, тех. задание):
 
Обзор
Текст сообщения: