Бывает, стоит задача применить какой-либо стиль или вывести конкретный кусочек кода для дирректории. Для этого в Битрикс можно воспользоваться параметром 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
<?
AddEventHandler('main', 'OnBeforeEventSend', Array("MyForm", "my_OnBeforeEventSend"

class MyForm
{
function my_OnBeforeEventSend(&$arFields)
{
$arFields["TEST1"] = $APPLICATION->GetCurPage();
//#TEST1#
}
}
?>

Цитата |
---|
mtsub написал: сам код: <? AddEventHandler('main', 'OnBeforeEventSend', Array("MyForm", "my_OnBeforeEventSend" ); class MyForm { function my_OnBeforeEventSend(&$arFields) { $arFields["TEST1"] = $APPLICATION->GetCurPage(); //#TEST1# } } ?> |
Не всегда, нужно захламлять init.php - если моно обойтись- лучше обойтись
Цитата |
---|
Михаил Базаров пишет: Наверное проще, в форме создать input невидимый и в него передать заголовок или адрес страницы. Не всегда, нужно захламлять init.php - если моно обойтись- лучше обойтись |
Цитата | ||||
---|---|---|---|---|
Леонид пишет:
|
Код |
---|
<?if ( ($APPLICATION->GetCurDir()=='/otdykh-u-ivanycha/') || ($APPLICATION->GetCurDir()=='/otdykh-u-ivanycha/banya-1/') ):?> Действие <?endif; ?> |
Код |
---|
<?if ( ($APPLICATION->GetCurDir()!='/otdykh-u-ivanycha/') || ($APPLICATION->GetCurDir()!='/otdykh-u-ivanycha/banya-1/') ):?> Действие <?endif; ?> |
Код |
---|
<?if ( ($APPLICATION->GetCurDir()!='/otdykh-u-ivanycha/') ):?> Действие <?endif; ?> |
Код |
---|
<?if (($APPLICATION->GetCurDir()!='/otdykh-u-ivanycha/banya-1/') ):?> Действие <?endif; ?> |
Условие != через || не работает, а по одиночке работает. В чём может быть причина?

Цитата |
---|
Alexey Klyonin написал: != |

Как сделать, что бы определенный элемент не появлялся(отображался) на главной И в одной директории?
if ($APPLICATION->GetCurPage() != '/')) { элемент } - не отображает на главной
Как приписать в CSite::InDir('/service/')) , так что бы в них не отображался элемент.
if ($APPLICATION->GetCurPage() != '/' and CSite::InDir('/service/')) - думал так, но тут логика не правильная, надо что бы во втором условии было "нет".

Цитата |
---|
taa@webstripe.ru написал: Здравствуйте. Как сделать, что бы определенный элемент не появлялся(отображался) на главной И в одной директории? if ($APPLICATION->GetCurPage() != '/')) { элемент } - не отображает на главной Как приписать в CSite::InDir('/service/')) , так что бы в них не отображался элемент. if ($APPLICATION->GetCurPage() != '/' and CSite::InDir('/service/')) - думал так, но тут логика не правильная, надо что бы во втором условии было "нет". |
Код |
---|
$GLOBALS['arrFilter'] = array('!ID' => 12); |